add new lkml archive mirror - sfeed_tests - sfeed tests and RSS and Atom files
 (HTM) git clone git://git.codemadness.org/sfeed_tests
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 6de9906eebff96b53482508fe1dc32e2e0c16fbc
 (DIR) parent ede74f61a785ba85c315159f0a154c3272155c02
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Fri,  1 Nov 2024 16:53:19 +0100
       
       add new lkml archive mirror
       
       https://lore.kernel.org/lkml/new.atom
       
       Diffstat:
         A input/sfeed/realworld/lore_kernel_… |    2184 +++++++++++++++++++++++++++++++
       
       1 file changed, 2184 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/input/sfeed/realworld/lore_kernel_org_lkml.atom.xml b/input/sfeed/realworld/lore_kernel_org_lkml.atom.xml
       @@ -0,0 +1,2183 @@
       +<?xml version="1.0" encoding="us-ascii"?>
       +<feed
       +xmlns="http://www.w3.org/2005/Atom"
       +xmlns:thr="http://purl.org/syndication/thread/1.0"><title>linux-kernel.vger.kernel.org archive mirror</title><link
       +rel="alternate"
       +type="text/html"
       +href="http://lore.kernel.org/lkml/"/><link
       +rel="self"
       +href="http://lore.kernel.org/lkml/new.atom"/><id>mailto:linux-kernel@vger.kernel.org</id><updated>2024-11-01T15:48:54Z</updated><entry><author><name>George Stark</name><email>gnstark@salutedevices.com</email></author><title>[PATCH v2 2/2] leds: pwm: Add optional DT property default-brightness</title><updated>2024-11-01T15:48:54Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101154844.1175860-3-gnstark@salutedevices.com/"/><id>urn:uuid:27f6ef67-80c6-373c-fedb-1f3bd59fea2e</id><thr:in-reply-to
       +ref="urn:uuid:8c64a34f-09cd-4fba-a1f1-e0655404bfeb"
       +href="http://lore.kernel.org/lkml/20241101154844.1175860-1-gnstark@salutedevices.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">When probing if default LED state is on then default brightness will be
       +applied instead of max brightness.
       +
       +Signed-off-by: George Stark &lt;gnstark@salutedevices.com&gt;
       +---
       + drivers/leds/leds-pwm.c | 17 ++++++++++++++++-
       + 1 file <a href="http://lore.kernel.org/lkml/20241101154844.1175860-3-gnstark@salutedevices.com/#related">changed</a>, 16 insertions(+), 1 deletion(-)
       +
       +<span
       +class="head">diff --git a/drivers/leds/leds-pwm.c b/drivers/leds/leds-pwm.c
       +index 7961dca0db2f..7636ee178c39 100644
       +--- a/drivers/leds/leds-pwm.c
       ++++ b/drivers/leds/leds-pwm.c
       +</span><span
       +class="hunk">@@ -63,6 +63,20 @@ static int led_pwm_set(struct led_classdev *led_cdev,
       +</span>         return pwm_apply_might_sleep(led_dat-&gt;pwm, &#38;led_dat-&gt;pwmstate);
       + }
       + 
       +<span
       +class="add">+static int led_pwm_default_brightness_get(struct fwnode_handle *fwnode,
       ++                                          int max_brightness)
       ++{
       ++        unsigned int default_brightness;
       ++        int ret;
       ++
       ++        ret = fwnode_property_read_u32(fwnode, &#34;default-brightness&#34;,
       ++                                       &#38;default_brightness);
       ++        if (ret &lt; 0 || default_brightness &gt; max_brightness)
       ++                default_brightness = max_brightness;
       ++
       ++        return default_brightness;
       ++}
       ++
       +</span> __attribute__((nonnull))
       + static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
       +                        struct led_pwm *led, struct fwnode_handle *fwnode)
       +<span
       +class="hunk">@@ -104,7 +118,8 @@ static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
       +</span>         /* set brightness */
       +         switch (led-&gt;default_state) {
       +         case LEDS_DEFSTATE_ON:
       +<span
       +class="del">-                led_data-&gt;cdev.brightness = led-&gt;max_brightness;
       +</span><span
       +class="add">+                led_data-&gt;cdev.brightness =
       ++                        led_pwm_default_brightness_get(fwnode, led-&gt;max_brightness);
       +</span>                 break;
       +         case LEDS_DEFSTATE_KEEP:
       +                 {
       +-- 
       +2.25.1
       +
       +</pre></div></content></entry><entry><author><name>George Stark</name><email>gnstark@salutedevices.com</email></author><title>[PATCH v2 1/2] dt-bindings: leds: pwm: Add default-brightness property</title><updated>2024-11-01T15:48:54Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101154844.1175860-2-gnstark@salutedevices.com/"/><id>urn:uuid:b4d60b44-7fb5-c644-c4d7-786bf6b2d4b9</id><thr:in-reply-to
       +ref="urn:uuid:8c64a34f-09cd-4fba-a1f1-e0655404bfeb"
       +href="http://lore.kernel.org/lkml/20241101154844.1175860-1-gnstark@salutedevices.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">Optional default-brightness property specifies brightness value to be
       +used if default LED state is on.
       +
       +Signed-off-by: George Stark &lt;gnstark@salutedevices.com&gt;
       +---
       + Documentation/devicetree/bindings/leds/leds-pwm.yaml | 6 ++++++
       + 1 file <a href="http://lore.kernel.org/lkml/20241101154844.1175860-2-gnstark@salutedevices.com/#related">changed</a>, 6 insertions(+)
       +
       +<span
       +class="head">diff --git a/Documentation/devicetree/bindings/leds/leds-pwm.yaml b/Documentation/devicetree/bindings/leds/leds-pwm.yaml
       +index 113b7c218303..61b97e8bc36d 100644
       +--- a/Documentation/devicetree/bindings/leds/leds-pwm.yaml
       ++++ b/Documentation/devicetree/bindings/leds/leds-pwm.yaml
       +</span><span
       +class="hunk">@@ -34,6 +34,12 @@ patternProperties:
       +</span>           Maximum brightness possible for the LED
       +         $ref: /schemas/types.yaml#/definitions/uint32
       + 
       +<span
       +class="add">+      default-brightness:
       ++        description:
       ++          Brightness to be set if LED&#39;s default state is on. Used only during
       ++          initialization. If the option is not set then max brightness is used.
       ++        $ref: /schemas/types.yaml#/definitions/uint32
       ++
       +</span>     required:
       +       - pwms
       +       - max-brightness
       +-- 
       +2.25.1
       +
       +</pre></div></content></entry><entry><author><name>George Stark</name><email>gnstark@salutedevices.com</email></author><title>[PATCH v2 0/2] leds: pwm: Add default-brightness property</title><updated>2024-11-01T15:48:53Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101154844.1175860-1-gnstark@salutedevices.com/"/><id>urn:uuid:8c64a34f-09cd-4fba-a1f1-e0655404bfeb</id><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">led-pwm driver supports default-state DT property and if that state is on then
       +the driver during initialization turns on the LED setting maximum brightness.
       +Sometimes it&#39;s desirable to use lower initial brightness.
       +This patch series adds support for DT property default-brightness.
       +
       +Things to discuss:
       +If such a property is acceptable it could be moved to leds/common.yaml due to
       +several drivers support multiple brightness levels and could support the property
       +too.
       +
       +Changes in v2:
       +  leds: pwm: Add optional DT property default-brightness
       +    - refactor patch to make it more accurate
       +  link to v1: [1]
       +
       +[1] <a
       +href="https://lore.kernel.org/lkml/20241015151410.2158102-3-gnstark@salutedevices.com/T/">https://lore.kernel.org/lkml/20241015151410.2158102-3-gnstark@salutedevices.com/T/</a>
       +
       +George Stark (2):
       +  dt-bindings: leds: pwm: Add default-brightness property
       +  leds: pwm: Add optional DT property default-brightness
       +
       + .../devicetree/bindings/leds/leds-pwm.yaml      |  6 ++++++
       + drivers/leds/leds-pwm.c                         | 17 ++++++++++++++++-
       + 2 files changed, 22 insertions(+), 1 deletion(-)
       +
       +--
       +2.25.1
       +
       +</pre></div></content></entry><entry><author><name>Markus Elfring</name><email>Markus.Elfring@web.de</email></author><title>Re: [PATCH v5 6/7] pinctrl: s32cc: add driver for GPIO functionality</title><updated>2024-11-01T15:46:16Z</updated><link
       +href="http://lore.kernel.org/lkml/fdf5702a-b739-4643-8288-86e6cfb8403d@web.de/"/><id>urn:uuid:3e278eb7-0877-0270-118e-37defc2a70f4</id><thr:in-reply-to
       +ref="urn:uuid:e028ca59-5d0a-f486-732a-92c7cb8d2f9c"
       +href="http://lore.kernel.org/lkml/20241101080614.1070819-7-andrei.stefanescu@oss.nxp.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap"><span
       +class="q">&gt; Add basic GPIO functionality (request, free, get, set) for the existing
       +&gt; pinctrl SIUL2 driver since the hardware for pinctrl&#38;GPIO is tightly
       +&gt; coupled.
       +</span>&#8230;
       +<span
       +class="q">&gt; +++ b/drivers/pinctrl/nxp/pinctrl-s32cc.c
       +</span>&#8230;
       +<span
       +class="q">&gt; +static int s32_gpio_request(struct gpio_chip *gc, unsigned int gpio)
       +&gt; +{
       +</span>&#8230;
       +<span
       +class="q">&gt; +        spin_lock_irqsave(&#38;ipctl-&gt;gpio_configs_lock, flags);
       +&gt; +        list_add(&#38;gpio_pin-&gt;list, &#38;ipctl-&gt;gpio_configs);
       +&gt; +        spin_unlock_irqrestore(&#38;ipctl-&gt;gpio_configs_lock, flags);
       +</span>&#8230;
       +
       +Under which circumstances would you become interested to apply a statement
       +like &#8220;guard(spinlock_irqsave)(&#38;ipctl-&gt;gpio_configs_lock);&#8221;?
       +<a
       +href="https://elixir.bootlin.com/linux/v6.12-rc5/source/include/linux/spinlock.h#L551">https://elixir.bootlin.com/linux/v6.12-rc5/source/include/linux/spinlock.h#L551</a>
       +
       +Regards,
       +Markus
       +</pre></div></content></entry><entry><author><name>kernel test robot</name><email>lkp@intel.com</email></author><title>Re: [PATCH v3 20/22] ACPI: platform_profile: Register class device for platform profile handlers</title><updated>2024-11-01T15:45:51Z</updated><link
       +href="http://lore.kernel.org/lkml/202411012317.1pQLOspC-lkp@intel.com/"/><id>urn:uuid:ea88037d-f268-1598-cc32-9ead01144b06</id><thr:in-reply-to
       +ref="urn:uuid:59853637-7e32-04c8-211e-ba7cc208f49f"
       +href="http://lore.kernel.org/lkml/20241031040952.109057-21-mario.limonciello@amd.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">Hi Mario,
       +
       +kernel test robot noticed the following build errors:
       +
       +[auto build test ERROR on rafael-pm/linux-next]
       +[also build test ERROR on rafael-pm/bleeding-edge linus/master v6.12-rc5 next-20241101]
       +[If your patch is applied to the wrong git tree, kindly drop us a note.
       +And when submitting patch, we suggest to use &#39;--base&#39; as documented in
       +<a
       +href="https://git-scm.com/docs/git-format-patch#_base_tree_information">https://git-scm.com/docs/git-format-patch#_base_tree_information</a>]
       +
       +url:    <a
       +href="https://github.com/intel-lab-lkp/linux/commits/Mario-Limonciello/ACPI-platform-profile-Add-a-name-member-to-handlers/20241031-121650">https://github.com/intel-lab-lkp/linux/commits/Mario-Limonciello/ACPI-platform-profile-Add-a-name-member-to-handlers/20241031-121650</a>
       +base:   <a
       +href="https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git">https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git</a> linux-next
       +patch link:    <a
       +href="https://lore.kernel.org/r/20241031040952.109057-21-mario.limonciello%40amd.com">https://lore.kernel.org/r/20241031040952.109057-21-mario.limonciello%40amd.com</a>
       +patch subject: [PATCH v3 20/22] ACPI: platform_profile: Register class device for platform profile handlers
       +config: x86_64-buildonly-randconfig-005-20241101 (<a
       +href="https://download.01.org/0day-ci/archive/20241101/202411012317.1pQLOspC-lkp@intel.com/config">https://download.01.org/0day-ci/archive/20241101/202411012317.1pQLOspC-lkp@intel.com/config</a>)
       +compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
       +reproduce (this is a W=1 build): (<a
       +href="https://download.01.org/0day-ci/archive/20241101/202411012317.1pQLOspC-lkp@intel.com/reproduce">https://download.01.org/0day-ci/archive/20241101/202411012317.1pQLOspC-lkp@intel.com/reproduce</a>)
       +
       +If you fix the issue in a separate patch/commit (i.e. not just a new version of
       +the same patch/commit), kindly add following tags
       +| Reported-by: kernel test robot &lt;lkp@intel.com&gt;
       +| Closes: <a
       +href="https://lore.kernel.org/oe-kbuild-all/202411012317.1pQLOspC-lkp@intel.com/">https://lore.kernel.org/oe-kbuild-all/202411012317.1pQLOspC-lkp@intel.com/</a>
       +
       +All errors (new ones prefixed by &gt;&gt;):
       +
       +   drivers/acpi/platform_profile.c: In function &#39;platform_profile_register&#39;:
       +<span
       +class="q">&gt;&gt; drivers/acpi/platform_profile.c:303:42: error: implicit declaration of function &#39;MKDEV&#39; [-Werror=implicit-function-declaration]
       +</span>     303 |                                          MKDEV(0, pprof-&gt;minor), NULL, &#34;platform-profile-%s&#34;,
       +         |                                          ^~~~~
       +   cc1: some warnings being treated as errors
       +
       +
       +vim +/MKDEV +303 drivers/acpi/platform_profile.c
       +
       +   261        
       +   262        int platform_profile_register(struct platform_profile_handler *pprof)
       +   263        {
       +   264                bool registered;
       +   265                int err;
       +   266        
       +   267                /* Sanity check the profile handler */
       +   268                if (!pprof || bitmap_empty(pprof-&gt;choices, PLATFORM_PROFILE_LAST) ||
       +   269                    !pprof-&gt;profile_set || !pprof-&gt;profile_get) {
       +   270                        pr_err(&#34;platform_profile: handler is invalid\n&#34;);
       +   271                        return -EINVAL;
       +   272                }
       +   273                if (!test_bit(PLATFORM_PROFILE_BALANCED, pprof-&gt;choices)) {
       +   274                        pr_err(&#34;platform_profile: handler does not support balanced profile\n&#34;);
       +   275                        return -EINVAL;
       +   276                }
       +   277                if (!pprof-&gt;dev) {
       +   278                        pr_err(&#34;platform_profile: handler device is not set\n&#34;);
       +   279                        return -EINVAL;
       +   280                }
       +   281        
       +   282                guard(mutex)(&#38;profile_lock);
       +   283                /* We can only have one active profile */
       +   284                if (cur_profile)
       +   285                        return -EEXIST;
       +   286        
       +   287                registered = platform_profile_is_registered();
       +   288                if (!registered) {
       +   289                        /* class for individual handlers */
       +   290                        err = class_register(&#38;platform_profile_class);
       +   291                        if (err)
       +   292                                return err;
       +   293                        /* legacy sysfs files */
       +   294                        err = sysfs_create_group(acpi_kobj, &#38;platform_profile_group);
       +   295                        if (err)
       +   296                                goto cleanup_class;
       +   297        
       +   298                }
       +   299        
       +   300                /* create class interface for individual handler */
       +   301                pprof-&gt;minor = idr_alloc(&#38;platform_profile_minor_idr, pprof, 0, 0, GFP_KERNEL);
       +   302                pprof-&gt;class_dev = device_create(&#38;platform_profile_class, pprof-&gt;dev,
       + &gt; 303                                                 MKDEV(0, pprof-&gt;minor), NULL, &#34;platform-profile-%s&#34;,
       +   304                                                 pprof-&gt;name);
       +   305                if (IS_ERR(pprof-&gt;class_dev)) {
       +   306                        err = PTR_ERR(pprof-&gt;class_dev);
       +   307                        goto cleanup_legacy;
       +   308                }
       +   309                err = sysfs_create_group(&#38;pprof-&gt;class_dev-&gt;kobj, &#38;platform_profile_group);
       +   310                if (err)
       +   311                        goto cleanup_device;
       +   312        
       +   313                list_add_tail(&#38;pprof-&gt;list, &#38;platform_profile_handler_list);
       +   314                sysfs_notify(acpi_kobj, NULL, &#34;platform_profile&#34;);
       +   315        
       +   316                cur_profile = pprof;
       +   317                return 0;
       +   318        
       +   319        cleanup_device:
       +   320                device_destroy(&#38;platform_profile_class, MKDEV(0, pprof-&gt;minor));
       +   321        
       +   322        cleanup_legacy:
       +   323                if (!registered)
       +   324                        sysfs_remove_group(acpi_kobj, &#38;platform_profile_group);
       +   325        cleanup_class:
       +   326                if (!registered)
       +   327                        class_unregister(&#38;platform_profile_class);
       +   328        
       +   329                return err;
       +   330        }
       +   331        EXPORT_SYMBOL_GPL(platform_profile_register);
       +   332        
       +
       +-- 
       +0-DAY CI Kernel Test Service
       +<a
       +href="https://github.com/intel/lkp-tests/wiki">https://github.com/intel/lkp-tests/wiki</a>
       +</pre></div></content></entry><entry><author><name>Bjorn Andersson</name><email>andersson@kernel.org</email></author><title>Re: [PATCH v4] usb: typec: qcom-pmic: init value of hdr_len/txbuf_len earlier</title><updated>2024-11-01T15:45:15Z</updated><link
       +href="http://lore.kernel.org/lkml/cmudnqum4qaec6hjoxj7wxfkdui65nkij4q2fziihf7tsmg7ry@qa3lkf4g7npw/"/><id>urn:uuid:adb0ed56-ef08-3b2c-d96a-ca0774a183da</id><thr:in-reply-to
       +ref="urn:uuid:086dd36b-4979-5bdf-d1ff-ad4b260b842d"
       +href="http://lore.kernel.org/lkml/20241030133632.2116-1-rex.nie@jaguarmicro.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On Wed, Oct 30, 2024 at 09:36:32PM GMT, Rex Nie wrote:
       +<span
       +class="q">&gt; If the read of USB_PDPHY_RX_ACKNOWLEDGE_REG failed, then hdr_len and
       +&gt; txbuf_len are uninitialized. This commit stops to print uninitialized
       +&gt; value and misleading/false data.
       +&gt; 
       +&gt; Cc: stable@vger.kernel.org
       +&gt; Fixes: a4422ff22142 (&#34; usb: typec: qcom: Add Qualcomm PMIC Type-C driver&#34;)
       +&gt; Signed-off-by: Rex Nie &lt;rex.nie@jaguarmicro.com&gt;
       +</span>
       +Reviewed-by: Bjorn Andersson &lt;andersson@kernel.org&gt;
       +
       +Nice job. Next time, please don&#39;t use In-Reply-To between patch
       +versions.
       +
       +Regards,
       +Bjorn
       +
       +<span
       +class="q">&gt; ---
       +&gt; V2 -&gt; V3:
       +&gt; - add changelog, add Fixes tag, add Cc stable ml. Thanks heikki
       +&gt; - Link to v2: <a
       +href="https://lore.kernel.org/all/20241030022753.2045-1-rex.nie@jaguarmicro.com/">https://lore.kernel.org/all/20241030022753.2045-1-rex.nie@jaguarmicro.com/</a>
       +&gt; V1 -&gt; V2:
       +&gt; - keep printout when data didn&#39;t transmit, thanks Bjorn, bod, greg k-h
       +&gt; - Links: <a
       +href="https://lore.kernel.org/all/b177e736-e640-47ed-9f1e-ee65971dfc9c@linaro.org/">https://lore.kernel.org/all/b177e736-e640-47ed-9f1e-ee65971dfc9c@linaro.org/</a>
       +&gt; ---
       +&gt;  drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 8 ++++----
       +&gt;  1 file changed, 4 insertions(+), 4 deletions(-)
       +&gt; 
       +&gt; diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
       +&gt; index 5b7f52b74a40..726423684bae 100644
       +&gt; --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
       +&gt; +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
       +&gt; @@ -227,6 +227,10 @@ qcom_pmic_typec_pdphy_pd_transmit_payload(struct pmic_typec_pdphy *pmic_typec_pd
       +&gt;  
       +&gt;          spin_lock_irqsave(&#38;pmic_typec_pdphy-&gt;lock, flags);
       +&gt;  
       +&gt; +        hdr_len = sizeof(msg-&gt;header);
       +&gt; +        txbuf_len = pd_header_cnt_le(msg-&gt;header) * 4;
       +&gt; +        txsize_len = hdr_len + txbuf_len - 1;
       +&gt; +
       +&gt;          ret = regmap_read(pmic_typec_pdphy-&gt;regmap,
       +&gt;                            pmic_typec_pdphy-&gt;base + USB_PDPHY_RX_ACKNOWLEDGE_REG,
       +&gt;                            &#38;val);
       +&gt; @@ -244,10 +248,6 @@ qcom_pmic_typec_pdphy_pd_transmit_payload(struct pmic_typec_pdphy *pmic_typec_pd
       +&gt;          if (ret)
       +&gt;                  goto done;
       +&gt;  
       +&gt; -        hdr_len = sizeof(msg-&gt;header);
       +&gt; -        txbuf_len = pd_header_cnt_le(msg-&gt;header) * 4;
       +&gt; -        txsize_len = hdr_len + txbuf_len - 1;
       +&gt; -
       +&gt;          /* Write message header sizeof(u16) to USB_PDPHY_TX_BUFFER_HDR_REG */
       +&gt;          ret = regmap_bulk_write(pmic_typec_pdphy-&gt;regmap,
       +&gt;                                  pmic_typec_pdphy-&gt;base + USB_PDPHY_TX_BUFFER_HDR_REG,
       +&gt; -- 
       +&gt; 2.17.1
       +&gt; 
       +&gt; 
       +</span></pre></div></content></entry><entry><author><name>Jonathan Cameron</name><email>jic23@kernel.org</email></author><title>Re: [PATCH v2 06/15] iio: light: adux1020: write_event_config: use local variable for interrupt value</title><updated>2024-11-01T15:45:04Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101154451.227defba@jic23-huawei/"/><id>urn:uuid:637122ea-f8ad-6028-0dd8-41c4bbc74581</id><thr:in-reply-to
       +ref="urn:uuid:ee4c190c-4254-fe26-18b7-7c815612ce4c"
       +href="http://lore.kernel.org/lkml/ef4fe230-b7fb-4f7e-9173-ae85d305e9ae@baylibre.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On Thu, 31 Oct 2024 11:27:45 -0500
       +David Lechner &lt;dlechner@baylibre.com&gt; wrote:
       +
       +<span
       +class="q">&gt; On 10/31/24 10:27 AM, Julien Stephan wrote:
       +&gt; &gt; state parameter is currently an int, but it is actually a boolean.
       +&gt; &gt; iio_ev_state_store is actually using kstrtobool to check user input,
       +&gt; &gt; then gives the converted boolean value to write_event_config.  The code
       +&gt; &gt; in adux1020_write_event_config re-uses state parameter to store an
       +&gt; &gt; integer value. To prepare for updating the write_event_config signature
       +&gt; &gt; to use a boolean for state, introduce a new local int variable.
       +&gt; &gt; 
       +&gt; &gt; Signed-off-by: Julien Stephan &lt;jstephan@baylibre.com&gt;
       +&gt; &gt; ---
       +&gt; &gt;  drivers/iio/light/adux1020.c | 8 ++++----
       +&gt; &gt;  1 file changed, 4 insertions(+), 4 deletions(-)
       +&gt; &gt; 
       +&gt; &gt; diff --git a/drivers/iio/light/adux1020.c b/drivers/iio/light/adux1020.c
       +&gt; &gt; index 2e0170be077aef9aa194fab51afbb33aec02e513..db57d84da616b91add8c5d1aba08a73ce18c367e 100644
       +&gt; &gt; --- a/drivers/iio/light/adux1020.c
       +&gt; &gt; +++ b/drivers/iio/light/adux1020.c
       +&gt; &gt; @@ -505,7 +505,7 @@ static int adux1020_write_event_config(struct iio_dev *indio_dev,
       +&gt; &gt;                                         enum iio_event_direction dir, int state)
       +&gt; &gt;  {
       +&gt; &gt;          struct adux1020_data *data = iio_priv(indio_dev);
       +&gt; &gt; -        int ret, mask;
       +&gt; &gt; +        int ret, mask, val;
       +&gt; &gt;  
       +&gt; &gt;          mutex_lock(&#38;data-&gt;lock);
       +&gt; &gt;  
       +&gt; &gt; @@ -526,12 +526,12 @@ static int adux1020_write_event_config(struct iio_dev *indio_dev,
       +&gt; &gt;                          mask = ADUX1020_PROX_OFF1_INT;
       +&gt; &gt;  
       +&gt; &gt;                  if (state)
       +&gt; &gt; -                        state = 0;
       +&gt; &gt; +                        val = 0;
       +&gt; &gt;                  else
       +&gt; &gt; -                        state = mask;
       +&gt; &gt; +                        val = mask;
       +&gt; &gt;  
       +&gt; &gt;                  ret = regmap_update_bits(data-&gt;regmap, ADUX1020_REG_INT_MASK,
       +&gt; &gt; -                                         mask, state);
       +&gt; &gt; +                                         mask, val);
       +&gt; &gt;                  if (ret &lt; 0)
       +&gt; &gt;                          goto fail;
       +&gt; &gt;  
       +&gt; &gt;   
       +&gt; 
       +&gt; Instead of introducing `val`, I would rewrite this as:
       +&gt; 
       +&gt;         if (state)
       +&gt;                 ret = regmap_clear_bits(...);
       +&gt;         else
       +&gt;                 ret = regmap_set_bits(...);
       +&gt; 
       +</span>Good idea.  Rather than go around again and potentially stall the end of this series.
       +I made that change whilst applying.  Shout if either of you doesn&#39;t
       +like the result. Diff doesn&#39;t do a perfect job on readability (it does
       +if I add a line break but then the code looks worse in the end!)
       +
       +From 06a1ca816450d1b5524f6010581a83ab9935d51b Mon Sep 17 00:00:00 2001
       +From: Julien Stephan &lt;jstephan@baylibre.com&gt;
       +Date: Thu, 31 Oct 2024 16:27:01 +0100
       +Subject: [PATCH] iio: light: adux1020: write_event_config: use local variable
       + for interrupt value
       +
       +state parameter is currently an int, but it is actually a boolean.
       +iio_ev_state_store is actually using kstrtobool to check user input,
       +then gives the converted boolean value to write_event_config.  The code
       +in adux1020_write_event_config re-uses state parameter to store an
       +integer value. To prepare for updating the write_event_config signature
       +to use a boolean for state, introduce a new local int variable.
       +
       +Signed-off-by: Julien Stephan &lt;jstephan@baylibre.com&gt;
       +Link: <a
       +href="https://patch.msgid.link/20241031-iio-fix-write-event-config-signature-v2-6-2bcacbb517a2@baylibre.com">https://patch.msgid.link/20241031-iio-fix-write-event-config-signature-v2-6-2bcacbb517a2@baylibre.com</a>
       +Signed-off-by: Jonathan Cameron &lt;Jonathan.Cameron@huawei.com&gt;
       +---
       + drivers/iio/light/adux1020.c | 9 ++++-----
       + 1 file <a href="http://lore.kernel.org/lkml/20241101154451.227defba@jic23-huawei/#related">changed</a>, 4 insertions(+), 5 deletions(-)
       +
       +<span
       +class="head">diff --git a/drivers/iio/light/adux1020.c b/drivers/iio/light/adux1020.c
       +index 2e0170be077a..06d5bc1d246c 100644
       +--- a/drivers/iio/light/adux1020.c
       ++++ b/drivers/iio/light/adux1020.c
       +</span><span
       +class="hunk">@@ -526,12 +526,11 @@ static int adux1020_write_event_config(struct iio_dev *indio_dev,
       +</span>                         mask = ADUX1020_PROX_OFF1_INT;
       + 
       +                 if (state)
       +<span
       +class="del">-                        state = 0;
       +</span><span
       +class="add">+                        ret = regmap_clear_bits(data-&gt;regmap,
       ++                                                ADUX1020_REG_INT_MASK, mask);
       +</span>                 else
       +<span
       +class="del">-                        state = mask;
       +-
       +-                ret = regmap_update_bits(data-&gt;regmap, ADUX1020_REG_INT_MASK,
       +-                                         mask, state);
       +</span><span
       +class="add">+                        ret = regmap_set_bits(data-&gt;regmap,
       ++                                              ADUX1020_REG_INT_MASK, mask);
       +</span>                 if (ret &lt; 0)
       +                         goto fail;
       + 
       +-- 
       +2.46.2
       +
       +
       +
       +<span
       +class="q">&gt; 
       +&gt; 
       +</span>
       +</pre></div></content></entry><entry><author><name>Rob Herring (Arm)</name><email>robh@kernel.org</email></author><title>Re: [PATCH v2 1/3] dt-bindings: spi: apple,spi: Add binding for Apple SPI controllers</title><updated>2024-11-01T15:43:15Z</updated><link
       +href="http://lore.kernel.org/lkml/173047579349.3488175.222264580667894425.robh@kernel.org/"/><id>urn:uuid:b34217b9-76fa-1d6a-6a04-f4acc7c05359</id><thr:in-reply-to
       +ref="urn:uuid:854bcda4-a0b6-3948-c365-5fcf2e39136c"
       +href="http://lore.kernel.org/lkml/20241101-asahi-spi-v2-1-763a8a84d834@jannau.net/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">
       +On Fri, 01 Nov 2024 15:25:03 +0100, Janne Grunau wrote:
       +<span
       +class="q">&gt; From: Hector Martin &lt;marcan@marcan.st&gt;
       +&gt; 
       +&gt; The Apple SPI controller is present in SoCs such as the M1 (t8103) and
       +&gt; M1 Pro/Max (t600x). This controller uses one IRQ and one clock, and
       +&gt; doesn&#39;t need any special properties, so the binding is trivial.
       +&gt; 
       +&gt; Signed-off-by: Hector Martin &lt;marcan@marcan.st&gt;
       +&gt; Signed-off-by: Janne Grunau &lt;j@jannau.net&gt;
       +&gt; ---
       +&gt;  .../devicetree/bindings/spi/apple,spi.yaml         | 62 ++++++++++++++++++++++
       +&gt;  1 file changed, 62 insertions(+)
       +&gt; 
       +</span>
       +My bot found errors running &#39;make dt_binding_check&#39; on your patch:
       +
       +yamllint warnings/errors:
       +./Documentation/devicetree/bindings/spi/apple,spi.yaml:10:11: [error] string value is redundantly quoted with any quotes (quoted-strings)
       +
       +dtschema/dtc warnings/errors:
       +
       +doc reference errors (make refcheckdocs):
       +
       +See <a
       +href="https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20241101-asahi-spi-v2-1-763a8a84d834@jannau.net">https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20241101-asahi-spi-v2-1-763a8a84d834@jannau.net</a>
       +
       +The base for the series is generally the latest rc1. A different dependency
       +should be noted in *this* patch.
       +
       +If you already ran &#39;make dt_binding_check&#39; and didn&#39;t see the above
       +error(s), then make sure &#39;yamllint&#39; is installed and dt-schema is up to
       +date:
       +
       +pip3 install dtschema --upgrade
       +
       +Please check and re-submit after running the above command yourself. Note
       +that DT_SCHEMA_FILES can be set to your schema file to speed up checking
       +your schema. However, it must be unset to test all examples with your schema.
       +
       +</pre></div></content></entry><entry><author><name>Doug Anderson</name><email>dianders@chromium.org</email></author><title>Re: [PATCH] kdb: Fix incomplete usage help of md, mds and btc commands</title><updated>2024-11-01T15:43:04Z</updated><link
       +href="http://lore.kernel.org/lkml/CAD=FV=XY-mH2FxnnMsA99jQ2ZCcd=psTn+VJ4R9h9htK-f2ihw@mail.gmail.com/"/><id>urn:uuid:dc6d9489-7717-219b-3de4-493fa30755bf</id><thr:in-reply-to
       +ref="urn:uuid:26810420-d0a9-f486-7f7b-7f82c31643cf"
       +href="http://lore.kernel.org/lkml/20241031204041.GA27585@lichtman.org/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">Hi,
       +
       +On Thu, Oct 31, 2024 at 1:40&#8239;PM Nir Lichtman &lt;nir@lichtman.org&gt; wrote:
       +<span
       +class="q">&gt;
       +&gt; Fix kdb usage help to document some currently missing CLI commands options
       +&gt;
       +&gt; Signed-off-by: Nir Lichtman &lt;nir@lichtman.org&gt;
       +&gt; ---
       +&gt;  kernel/debug/kdb/kdb_main.c | 8 ++++----
       +&gt;  1 file changed, 4 insertions(+), 4 deletions(-)
       +</span>
       +Some of this is a bit similar to what I tried to do at :
       +
       +<a
       +href="https://lore.kernel.org/r/20240617173426.2.I5621f286f5131c84ac71a212508ba1467ac443f2@changeid">https://lore.kernel.org/r/20240617173426.2.I5621f286f5131c84ac71a212508ba1467ac443f2@changeid</a>
       +
       +...but that series kinda fell on the floor because my end goal was to
       +try to get it so I could access IO memory and Daniel pointed out that
       +what I was doing was unsafe. The earlier patches in the series are
       +overall good cleanups, though. If you&#39;re interested feel free to
       +iterate on any of them.
       +
       +
       +<span
       +class="q">&gt; diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
       +&gt; index f5f7d7fb5936..0bdffb17b163 100644
       +&gt; --- a/kernel/debug/kdb/kdb_main.c
       +&gt; +++ b/kernel/debug/kdb/kdb_main.c
       +&gt; @@ -2667,7 +2667,7 @@ EXPORT_SYMBOL_GPL(kdb_unregister);
       +&gt;  static kdbtab_t maintab[] = {
       +&gt;         {       .name = &#34;md&#34;,
       +&gt;                 .func = kdb_md,
       +&gt; -               .usage = &#34;&lt;vaddr&gt;&#34;,
       +&gt; +               .usage = &#34;&lt;vaddr&gt; [lines] [radix]&#34;,
       +</span>
       +In my patch, I said:
       +
       +.usage = &#34;&lt;vaddr&gt; [&lt;lines&gt; [&lt;radix&gt;]]&#34;,
       +
       +...so I had the &lt;&gt; characters and nested the []. I think that the &lt;&gt;
       +is supposed to signify that you&#39;re not supposed to write the text
       +&#34;lines&#34; but that it&#39;s a variable.
       +
       +
       +<span
       +class="q">&gt;                 .help = &#34;Display Memory Contents, also mdWcN, e.g. md8c1&#34;,
       +&gt;                 .minlen = 1,
       +&gt;                 .flags = KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS,
       +&gt; @@ -2686,7 +2686,7 @@ static kdbtab_t maintab[] = {
       +&gt;         },
       +&gt;         {       .name = &#34;mds&#34;,
       +&gt;                 .func = kdb_md,
       +&gt; -               .usage = &#34;&lt;vaddr&gt;&#34;,
       +&gt; +               .usage = &#34;&lt;vaddr&gt; [lines] [radix]&#34;,
       +</span>
       +From my prior research, &#34;mds&#34; doesn&#39;t support &lt;radix&gt;. However, some
       +of the other &#34;md&#34; commands that you didn&#39;t modify do support
       +lines/radix. Let me know if I got that wrong.
       +
       +
       +-Doug
       +</pre></div></content></entry><entry><author><name>George Stark</name><email>gnstark@salutedevices.com</email></author><title>Re: [PATCH 2/2] leds: pwm: Add optional DT property default-brightness</title><updated>2024-11-01T15:42:38Z</updated><link
       +href="http://lore.kernel.org/lkml/e37f23e6-f471-4061-b346-4b082f37060d@salutedevices.com/"/><id>urn:uuid:3725b04d-a9fc-e988-d606-967ab01b1b3f</id><thr:in-reply-to
       +ref="urn:uuid:05782edb-e993-bc96-9aad-9dcb63b5ab56"
       +href="http://lore.kernel.org/lkml/20241031143250.GH10824@google.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">Hello Lee
       +
       +Thanks for the review!
       +
       +On 10/31/24 17:32, Lee Jones wrote:
       +<span
       +class="q">&gt; On Tue, 15 Oct 2024, George Stark wrote:
       +&gt; 
       +&gt;&gt; When probing if default LED state is on then default brightness will be
       +&gt;&gt; applied instead of max brightness.
       +&gt;&gt;
       +&gt;&gt; Signed-off-by: George Stark &lt;gnstark@salutedevices.com&gt;
       +&gt;&gt; ---
       +&gt;&gt;   drivers/leds/leds-pwm.c | 13 ++++++++++---
       +&gt;&gt;   1 file changed, 10 insertions(+), 3 deletions(-)
       +&gt;&gt;
       +&gt;&gt; diff --git a/drivers/leds/leds-pwm.c b/drivers/leds/leds-pwm.c
       +&gt;&gt; index 7961dca0db2f..514fc8ca3e80 100644
       +&gt;&gt; --- a/drivers/leds/leds-pwm.c
       +&gt;&gt; +++ b/drivers/leds/leds-pwm.c
       +&gt;&gt; @@ -65,7 +65,8 @@ static int led_pwm_set(struct led_classdev *led_cdev,
       +&gt;&gt;   
       +&gt;&gt;   __attribute__((nonnull))
       +&gt;&gt;   static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
       +&gt;&gt; -                       struct led_pwm *led, struct fwnode_handle *fwnode)
       +&gt;&gt; +                       struct led_pwm *led, struct fwnode_handle *fwnode,
       +&gt;&gt; +                       unsigned int default_brightness)
       +&gt;&gt;   {
       +&gt;&gt;           struct led_pwm_data *led_data = &#38;priv-&gt;leds[priv-&gt;num_leds];
       +&gt;&gt;           struct led_init_data init_data = { .fwnode = fwnode };
       +&gt;&gt; @@ -104,7 +105,7 @@ static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
       +&gt;&gt;           /* set brightness */
       +&gt;&gt;           switch (led-&gt;default_state) {
       +&gt;&gt;           case LEDS_DEFSTATE_ON:
       +&gt;&gt; -                led_data-&gt;cdev.brightness = led-&gt;max_brightness;
       +&gt;&gt; +                led_data-&gt;cdev.brightness = default_brightness;
       +&gt;&gt;                   break;
       +&gt;&gt;           case LEDS_DEFSTATE_KEEP:
       +&gt;&gt;                   {
       +&gt;&gt; @@ -141,6 +142,7 @@ static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
       +&gt;&gt;   static int led_pwm_create_fwnode(struct device *dev, struct led_pwm_priv *priv)
       +&gt;&gt;   {
       +&gt;&gt;           struct led_pwm led;
       +&gt;&gt; +        unsigned int default_brightness;
       +&gt;&gt;           int ret;
       +&gt;&gt;   
       +&gt;&gt;           device_for_each_child_node_scoped(dev, fwnode) {
       +&gt;&gt; @@ -160,7 +162,12 @@ static int led_pwm_create_fwnode(struct device *dev, struct led_pwm_priv *priv)
       +&gt;&gt;   
       +&gt;&gt;                   led.default_state = led_init_default_state_get(fwnode);
       +&gt;&gt;   
       +&gt;&gt; -                ret = led_pwm_add(dev, priv, &#38;led, fwnode);
       +&gt;&gt; +                ret = fwnode_property_read_u32(fwnode, &#34;default-brightness&#34;,
       +&gt;&gt; +                                               &#38;default_brightness);
       +&gt;&gt; +                if (ret &lt; 0 || default_brightness &gt; led.max_brightness)
       +&gt;&gt; +                        default_brightness = led.max_brightness;
       +&gt;&gt; +
       +&gt;&gt; +                ret = led_pwm_add(dev, priv, &#38;led, fwnode, default_brightness);
       +&gt; 
       +&gt; This creates a lot more hopping around than is necessary.
       +&gt; 
       +&gt; Since led_pwm_add() already has access to the fwnode, why not look up
       +&gt; the property in there instead, thus massively simplifying things.
       +</span>
       +I looked up the new property here to be near to
       +led_init_default_state_get (both props are from the same group) and
       +led_pwm_add is big enough already. And you&#39;re absolutely right that the
       +patch can be optimized. Please take a look at the v2
       +
       +<span
       +class="q">&gt; 
       +&gt; 
       +&gt;&gt;                   if (ret)
       +&gt;&gt;                           return ret;
       +&gt;&gt;           }
       +&gt;&gt; -- 
       +&gt;&gt; 2.25.1
       +&gt;&gt;
       +&gt; 
       +</span>
       +-- 
       +Best regards
       +George
       +</pre></div></content></entry><entry><author><name>Mathieu Poirier</name><email>mathieu.poirier@linaro.org</email></author><title>Re: [PATCH V5] remoteproc: Documentation: update with details</title><updated>2024-11-01T15:41:29Z</updated><link
       +href="http://lore.kernel.org/lkml/ZyT2piU27MF28XcN@p14s/"/><id>urn:uuid:245ae693-dda8-67e2-5447-c96feb798e8f</id><thr:in-reply-to
       +ref="urn:uuid:4ad4a1f2-5c65-5556-9d95-c1f0b643fadb"
       +href="http://lore.kernel.org/lkml/20241026212259.31950-1-yesanishhere@gmail.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On Sat, Oct 26, 2024 at 02:22:59PM -0700, anish kumar wrote:
       +<span
       +class="q">&gt; Added details as below:
       +&gt; 1. added sysfs information
       +&gt; 2. verbose details about remoteproc driver/framework
       +&gt;    responsibilites.
       +&gt; 3. example for resource request
       +&gt; 
       +&gt; Signed-off-by: anish kumar &lt;yesanishhere@gmail.com&gt;
       +&gt; ---
       +&gt; V5:
       +&gt; based on comment from mathieu poirier, remove all files
       +&gt; and combined that in the original file and as he adviced
       +&gt; nothing with respect to old documentation was changed.
       +&gt; 
       +&gt; V4:
       +&gt; Fixed compilation errors and moved documentation to
       +&gt; driver-api directory.
       +&gt; 
       +&gt; V3:
       +&gt; Seperated out the patches further to make the intention
       +&gt; clear for each patch.
       +&gt; 
       +&gt; V2:
       +&gt; Reported-by: kernel test robot &lt;lkp@intel.com&gt;
       +&gt; Closes: <a
       +href="https://lore.kernel.org/oe-kbuild-all/202410161444.jOKMsoGS-lkp@intel.com/">https://lore.kernel.org/oe-kbuild-all/202410161444.jOKMsoGS-lkp@intel.com/</a>
       +&gt; 
       +&gt;  Documentation/staging/remoteproc.rst | 483 +++++++++++++++++++++++++++
       +&gt;  1 file changed, 483 insertions(+)
       +&gt; 
       +&gt; diff --git a/Documentation/staging/remoteproc.rst b/Documentation/staging/remoteproc.rst
       +&gt; index 348ee7e508ac..1c15f4d1b9eb 100644
       +&gt; --- a/Documentation/staging/remoteproc.rst
       +&gt; +++ b/Documentation/staging/remoteproc.rst
       +&gt; @@ -29,6 +29,68 @@ remoteproc will add those devices. This makes it possible to reuse the
       +&gt;  existing virtio drivers with remote processor backends at a minimal development
       +&gt;  cost.
       +&gt;  
       +&gt; +The primary purpose of the remoteproc framework is to download firmware
       +&gt; +for remote processors and manage their lifecycle. The framework consists
       +&gt; +of several key components:
       +&gt; +
       +&gt; +- **Character Driver**: Provides userspace access to control the remote
       +&gt; +  processor.
       +&gt; +- **ELF Utility**: Offers functions for handling ELF files and managing
       +&gt; +  resources requested by the remote processor.
       +&gt; +- **Remoteproc Core**: Manages firmware downloads and recovery actions
       +&gt; +  in case of a remote processor crash.
       +&gt; +- **Coredump**: Provides facilities for coredumping and tracing from
       +&gt; +  the remote processor in the event of a crash.
       +&gt; +- **Userspace Interaction**: Uses sysfs and debugfs to manage the
       +&gt; +  lifecycle and status of the remote processor.
       +&gt; +- **Virtio Support**: Facilitates interaction with the virtio and
       +&gt; +  rpmsg bus.
       +&gt; +
       +&gt; +Remoteproc framework Responsibilities
       +&gt; +=====================================
       +&gt; +
       +&gt; +The framework begins by gathering information about the firmware file
       +&gt; +to be downloaded through the request_firmware function. It supports
       +&gt; +the ELF format and parses the firmware image to identify the physical
       +&gt; +addresses that need to be populated from the corresponding ELF sections.
       +&gt; +The framework also requires knowledge of the logical or I/O-mapped
       +&gt; +addresses in the application processor. Once this information is
       +</span>
       +&#34;The framework also requires knowledge of the logical or I/O-mapped addresses in
       +the application processor&#34;. What is that about?
       +
       +<span
       +class="q">&gt; +obtained from the driver, the framework transfers the data to the
       +&gt; +specified addresses and starts the remote, along with
       +</span>
       +&#34;remote&#34; what?
       +
       +<span
       +class="q">&gt; +any devices physically or logically connected to it.
       +</span>
       +I have never seen this happening.
       +
       +<span
       +class="q">&gt; +
       +&gt; +Dependent devices, referred to as `subdevices` within the framework,
       +&gt; +are also managed post-registration by their respective drivers.
       +&gt; +Subdevices can register themselves using `rproc_(add/remove)_subdev`.
       +&gt; +Non-remoteproc drivers can use subdevices as a way to logically connect
       +&gt; +to remote and get lifecycle notifications of the remote.
       +&gt; +
       +&gt; +The framework oversees the lifecycle of the remote and
       +&gt; +provides the `rproc_report_crash` function, which the driver invokes
       +&gt; +upon receiving a crash notification from the remote. The
       +&gt; +notification method can differ based on the design of the remote
       +&gt; +processor and its communication with the application processor. For
       +&gt; +instance, if the remote is a DSP equipped with a watchdog,
       +&gt; +unresponsive behavior triggers the watchdog, generating an interrupt
       +&gt; +that routes to the application processor, allowing it to call
       +&gt; +`rproc_report_crash` in the driver&#39;s interrupt context.
       +&gt; +
       +&gt; +During crash handling, the framework performs the following actions:
       +&gt; +
       +&gt; +a. Sends a request to stop the remote and any connected or
       +&gt; +   dependent subdevices.
       +&gt; +b. Generates a coredump, dumping all `resources` requested by the
       +&gt; +   remote alongside relevant debugging information. Resources are
       +&gt; +   explained below.
       +&gt; +c. Reloads the firmware and restarts the remote.
       +&gt; +
       +&gt; +If the `RPROC_FEAT_ATTACH_ON_RECOVERY` flag is set, the detach and
       +&gt; +attach callbacks of the driver are invoked without reloading the
       +&gt; +firmware. This is useful when the remote requires no
       +&gt; +assistance for recovery, or when the application processor can restart
       +&gt; +independently. After recovery, the application processor can reattach
       +&gt; +to the remote.
       +&gt; +
       +</span>
       +The above provides a description of some of the things the remoteproc subsystem
       +does and as such, I would call it &#34;overview&#34; rather than responsabilities.
       +
       +<span
       +class="q">&gt;  User API
       +&gt;  ========
       +&gt;  
       +&gt; @@ -107,6 +169,239 @@ Typical usage
       +&gt;  API for implementors
       +&gt;  ====================
       +&gt;  
       +&gt; +It describes the API that can be used by remote processor Drivers
       +&gt; +that want to use the remote processor Driver Core Framework. This
       +&gt; +framework provides all interfacing towards user space so that the
       +&gt; +same code does not have to be reproduced each time. This also means
       +&gt; +that a remote processor driver then only needs to provide the different
       +&gt; +routines(operations) that control the remote processor.
       +&gt; +
       +&gt; +Each remote processor driver that wants to use the remote processor Driver Core
       +&gt; +must #include &lt;linux/remoteproc.h&gt; (you would have to do this anyway when
       +&gt; +writing a rproc device driver). This include file contains following
       +&gt; +register routine::
       +&gt; +
       +</span>
       +The above is very basic information about subsystems in general - please remove.
       +
       +<span
       +class="q">&gt; +        int devm_rproc_add(struct device *dev, struct rproc *rproc)
       +&gt; +
       +&gt; +The devm_rproc_add routine registers a remote processor device.
       +&gt; +The parameter of this routine is a pointer to a rproc device structure.
       +&gt; +This routine returns zero on success and a negative errno code for failure.
       +</span>
       +Look at what is documented for other API functions and do the same here.  
       +
       +<span
       +class="q">&gt; +
       +&gt; +The rproc device structure looks like this::
       +&gt; +
       +&gt; +  struct rproc {
       +&gt; +        struct list_head node;
       +&gt; +        struct iommu_domain *domain;
       +&gt; +        const char *name;
       +&gt; +        const char *firmware;
       +&gt; +        void *priv;
       +&gt; +        struct rproc_ops *ops;
       +&gt; +        struct device dev;
       +&gt; +        atomic_t power;
       +&gt; +        unsigned int state;
       +&gt; +        enum rproc_dump_mechanism dump_conf;
       +&gt; +        struct mutex lock;
       +&gt; +        struct dentry *dbg_dir;
       +&gt; +        struct list_head traces;
       +&gt; +        int num_traces;
       +&gt; +        struct list_head carveouts;
       +&gt; +        struct list_head mappings;
       +&gt; +        u64 bootaddr;
       +&gt; +        struct list_head rvdevs;
       +&gt; +        struct list_head subdevs;
       +&gt; +        struct idr notifyids;
       +&gt; +        int index;
       +&gt; +        struct work_struct crash_handler;
       +&gt; +        unsigned int crash_cnt;
       +&gt; +        bool recovery_disabled;
       +&gt; +        int max_notifyid;
       +&gt; +        struct resource_table *table_ptr;
       +&gt; +        struct resource_table *clean_table;
       +&gt; +        struct resource_table *cached_table;
       +&gt; +        size_t table_sz;
       +&gt; +        bool has_iommu;
       +&gt; +        bool auto_boot;
       +&gt; +        bool sysfs_read_only;
       +&gt; +        struct list_head dump_segments;
       +&gt; +        int nb_vdev;
       +&gt; +        u8 elf_class;
       +&gt; +        u16 elf_machine;
       +&gt; +        struct cdev cdev;
       +&gt; +        bool cdev_put_on_release;
       +&gt; +        DECLARE_BITMAP(features, RPROC_MAX_FEATURES);
       +&gt; +  };
       +</span>
       +All that is already part of remoteproc.h and doesn&#39;t need to be duplicated here
       +- please remove.
       +
       +<span
       +class="q">&gt; +
       +&gt; +It contains following fields:
       +&gt; +
       +&gt; +* node: list node of this rproc object
       +&gt; +* domain: iommu domain
       +&gt; +* name: human readable name of the rproc
       +&gt; +* firmware: name of firmware file to be loaded
       +&gt; +* priv: private data which belongs to the platform-specific rproc module
       +&gt; +* ops: platform-specific start/stop rproc handlers
       +&gt; +* dev: virtual device for refcounting and common remoteproc behavior
       +&gt; +* power: refcount of users who need this rproc powered up
       +&gt; +* state: state of the device
       +&gt; +* dump_conf: Currently selected coredump configuration
       +&gt; +* lock: lock which protects concurrent manipulations of the rproc
       +&gt; +* dbg_dir: debugfs directory of this rproc device
       +&gt; +* traces: list of trace buffers
       +&gt; +* num_traces: number of trace buffers
       +&gt; +* carveouts: list of physically contiguous memory allocations
       +&gt; +* mappings: list of iommu mappings we initiated, needed on shutdown
       +&gt; +* bootaddr: address of first instruction to boot rproc with (optional)
       +&gt; +* rvdevs: list of remote virtio devices
       +&gt; +* subdevs: list of subdevices, to following the running state
       +&gt; +* notifyids: idr for dynamically assigning rproc-wide unique notify ids
       +&gt; +* index: index of this rproc device
       +&gt; +* crash_handler: workqueue for handling a crash
       +&gt; +* crash_cnt: crash counter
       +&gt; +* recovery_disabled: flag that state if recovery was disabled
       +&gt; +* max_notifyid: largest allocated notify id.
       +&gt; +* table_ptr: pointer to the resource table in effect
       +&gt; +* clean_table: copy of the resource table without modifications.  Used
       +&gt; +*               when a remote processor is attached or detached from the core
       +&gt; +* cached_table: copy of the resource table
       +&gt; +* table_sz: size of @cached_table
       +&gt; +* has_iommu: flag to indicate if remote processor is behind an MMU
       +&gt; +* auto_boot: flag to indicate if remote processor should be auto-started
       +&gt; +* sysfs_read_only: flag to make remoteproc sysfs files read only
       +&gt; +* dump_segments: list of segments in the firmware
       +&gt; +* nb_vdev: number of vdev currently handled by rproc
       +&gt; +* elf_class: firmware ELF class
       +&gt; +* elf_machine: firmware ELF machine
       +&gt; +* cdev: character device of the rproc
       +&gt; +* cdev_put_on_release: flag to indicate if remoteproc should be shutdown on @char_dev release
       +&gt; +* features: indicate remoteproc features
       +&gt; +
       +</span>
       +Remove
       +
       +<span
       +class="q">&gt; +The list of rproc operations is defined as::
       +&gt; +
       +&gt; +  struct rproc_ops {
       +&gt; +        int (*prepare)(struct rproc *rproc);
       +&gt; +        int (*unprepare)(struct rproc *rproc);
       +&gt; +        int (*start)(struct rproc *rproc);
       +&gt; +        int (*stop)(struct rproc *rproc);
       +&gt; +        int (*attach)(struct rproc *rproc);
       +&gt; +        int (*detach)(struct rproc *rproc);
       +&gt; +        void (*kick)(struct rproc *rproc, int vqid);
       +&gt; +        void * (*da_to_va)(struct rproc *rproc, u64 da, size_t len, bool *is_iomem);
       +&gt; +        int (*parse_fw)(struct rproc *rproc, const struct firmware *fw);
       +&gt; +        int (*handle_rsc)(struct rproc *rproc, u32 rsc_type, void *rsc,
       +&gt; +                          int offset, int avail);
       +&gt; +        struct resource_table *(*find_loaded_rsc_table)(
       +&gt; +                                struct rproc *rproc, const struct firmware *fw);
       +&gt; +        struct resource_table *(*get_loaded_rsc_table)(
       +&gt; +                                struct rproc *rproc, size_t *size);
       +&gt; +        int (*load)(struct rproc *rproc, const struct firmware *fw);
       +&gt; +        int (*sanity_check)(struct rproc *rproc, const struct firmware *fw);
       +&gt; +        u64 (*get_boot_addr)(struct rproc *rproc, const struct firmware *fw);
       +&gt; +        unsigned long (*panic)(struct rproc *rproc);
       +&gt; +        void (*coredump)(struct rproc *rproc);
       +&gt; +  };
       +&gt; +
       +</span>
       +If you really want to document all the callbacks, it should be done in the
       +&#34;Implementation callbacks&#34; section following the style that is already in place.
       +
       +<span
       +class="q">&gt; +Most of the operations are optional. Currently in the implementation
       +&gt; +there are no mandatory operations, however from the practical standpoint
       +&gt; +minimum ops are:
       +&gt; +
       +&gt; +* start: this is a pointer to the routine that starts the remote processor
       +&gt; +  device.
       +&gt; +  The routine needs a pointer to the remote processor device structure as a
       +&gt; +  parameter. It returns zero on success or a negative errno code for failure.
       +&gt; +
       +&gt; +* stop: with this routine the remote processor device is being stopped.
       +&gt; +
       +&gt; +  The routine needs a pointer to the remote processor device structure as a
       +&gt; +  parameter. It returns zero on success or a negative errno code for failure.
       +&gt; +
       +&gt; +* da_to_va: this is the routine that needs to translate device address to
       +&gt; +  application processor virtual address that it can copy code to.
       +&gt; +
       +&gt; +  The routine needs a pointer to the remote processor device structure as a
       +&gt; +  parameter. It returns zero on success or a negative errno code for failure.
       +&gt; +
       +&gt; +  The routine provides the device address it finds in the ELF firmware and asks
       +&gt; +  the driver to convert that to virtual address.
       +&gt; +
       +&gt; +All other callbacks are optional in case of ELF provided firmware.
       +&gt; +
       +&gt; +* load: this is to load the firmware on to the remote device.
       +&gt; +
       +&gt; +  The routine needs firmware file that it needs to load on to the remote processor.
       +&gt; +  If the driver overrides this callback then default ELF loader will not get used.
       +&gt; +  Otherwise default framework provided loader gets used.
       +&gt; +
       +&gt; +  load = rproc_elf_load_segments;
       +&gt; +  parse_fw = rproc_elf_load_rsc_table;
       +&gt; +  find_loaded_rsc_table = rproc_elf_find_loaded_rsc_table;
       +&gt; +  sanity_check = rproc_elf_sanity_check;
       +&gt; +  get_boot_addr = rproc_elf_get_boot_addr;
       +&gt; +
       +&gt; +* parse_fw: this routing parses the provided firmware. In case of ELF format,
       +&gt; +  framework provided rproc_elf_load_rsc_table function can be used.
       +&gt; +
       +&gt; +* sanity_check: Check the format of the firmware.
       +&gt; +
       +&gt; +* coredump: If the driver prefers to manage coredumps independently, it can
       +&gt; +  implement its own coredump handling. However, the framework offers a default
       +&gt; +  implementation for the ELF format by assigning this callback to
       +&gt; +  rproc_coredump, unless the driver has overridden it.
       +&gt; +
       +&gt; +* get_boot_addr: In case the bootaddr defined in ELF firmware is different, driver
       +&gt; +  can use this callback to set a different boot address for remote processor to
       +&gt; +  starts its reset vector from.
       +&gt; +
       +&gt; +* find_loaded_rsc_table: this routine gets the loaded resource table from the firmware.
       +&gt; +
       +&gt; +  resource table should have a section named (.resource_table) for the framework
       +&gt; +  to understand and interpret its content. Resource table is a way for remote
       +&gt; +  processor to ask for resources such as memory for dumping and logging. Look
       +&gt; +  at core documentation to know how to create the ELF section for the same.
       +&gt; +
       +&gt; +* get_loaded_rsc_table: Driver can customize passing the resource table by overriding
       +&gt; +  this callback. Framework doesn&#39;t provide any default implementation for the same.
       +&gt; +
       +&gt; +The driver must provide the following information to the core:
       +&gt; +
       +&gt; +a. Translate device addresses (physical addresses) found in the ELF
       +&gt; +   firmware to virtual addresses in Linux using the `da_to_va`
       +&gt; +   callback. This allows the framework to copy ELF firmware from the
       +&gt; +   filesystem to the addresses expected by the remote since
       +&gt; +   the framework cannot directly access those physical addresses.
       +&gt; +b. Prepare/unprepare the remote prior to firmware loading,
       +&gt; +   which may involve allocating carveout and reserved memory regions.
       +&gt; +c. Implement methods for starting and stopping the remote,
       +&gt; +   whether by setting registers or sending explicit interrupts,
       +&gt; +   depending on the hardware design.
       +&gt; +d. Provide attach and detach callbacks to start the remote
       +&gt; +   without loading the firmware. This is beneficial when the remote
       +&gt; +   processor is already loaded and running.
       +&gt; +e. Implement a load callback for firmware loading, typically using
       +&gt; +   the ELF loader provided by the framework; currently, only ELF
       +&gt; +   format is supported.
       +&gt; +f. Invoke the framework&#39;s crash handler API upon detecting a remote
       +&gt; +   crash.
       +&gt; +
       +&gt; +Drivers must fill the `rproc_ops` structure and call `rproc_alloc`
       +&gt; +to register themselves with the framework.
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   struct rproc_ops {
       +&gt; +       int (*prepare)(struct rproc *rproc);
       +&gt; +       int (*unprepare)(struct rproc *rproc);
       +&gt; +       int (*start)(struct rproc *rproc);
       +&gt; +       int (*stop)(struct rproc *rproc);
       +&gt; +       int (*attach)(struct rproc *rproc);
       +&gt; +       int (*detach)(struct rproc *rproc);
       +&gt; +       void * (*da_to_va)(struct rproc *rproc, u64 da, size_t len,
       +&gt; +                          bool *is_iomem);
       +&gt; +       int (*parse_fw)(struct rproc *rproc, const struct firmware *fw);
       +&gt; +       int (*handle_rsc)(struct rproc *rproc, u32 rsc_type,
       +&gt; +                         void *rsc, int offset, int avail);
       +&gt; +       int (*load)(struct rproc *rproc, const struct firmware *fw);
       +&gt; +       //snip
       +&gt; +   };
       +</span>
       +This is already added above, why is it repeated here?
       +
       +<span
       +class="q">&gt; +
       +&gt;  ::
       +&gt;  
       +&gt;    struct rproc *rproc_alloc(struct device *dev, const char *name,
       +&gt; @@ -190,6 +485,35 @@ platform specific rproc implementation. This should not be called from a
       +&gt;  non-remoteproc driver. This function can be called from atomic/interrupt
       +&gt;  context.
       +&gt;  
       +&gt; +To add a subdev corresponding driver can call
       +&gt; +
       +&gt; +::
       +&gt; +
       +&gt; +  void rproc_add_subdev(struct rproc *rproc, struct rproc_subdev *subdev)
       +&gt; +
       +&gt; +To remove a subdev, driver can call.
       +&gt; +
       +&gt; +::
       +&gt; +
       +&gt; +  void rproc_remove_subdev(struct rproc *rproc, struct rproc_subdev *subdev)
       +&gt; +
       +</span>
       +The above doesn&#39;t add value to the documentation and users needing to use these
       +functions will need to look at the code anyway - please remove.
       +
       +<span
       +class="q">&gt; +To work with ELF coredump below function can be called
       +&gt; +
       +&gt; +::
       +&gt; +
       +&gt; +  void rproc_coredump_cleanup(struct rproc *rproc)
       +&gt; +  void rproc_coredump(struct rproc *rproc)
       +&gt; +  void rproc_coredump_using_sections(struct rproc *rproc)
       +&gt; +  int rproc_coredump_add_segment(struct rproc *rproc, dma_addr_t da, size_t size)
       +&gt; +  int rproc_coredump_add_custom_segment(struct rproc *rproc,
       +&gt; +                                        dma_addr_t da, size_t size,
       +&gt; +                                        void (*dumpfn)(struct rproc *rproc,
       +&gt; +                                        struct rproc_dump_segment *segment,
       +&gt; +                                        void *dest, size_t offset,
       +&gt; +                                        size_t size))
       +&gt; +
       +&gt; +Remember that coredump functions provided by the framework only works with ELF format.
       +&gt; +
       +</span>
       +Remove
       +
       +<span
       +class="q">&gt;  Implementation callbacks
       +&gt;  ========================
       +&gt;  
       +&gt; @@ -228,6 +552,123 @@ the exact virtqueue index to look in is optional: it is easy (and not
       +&gt;  too expensive) to go through the existing virtqueues and look for new buffers
       +&gt;  in the used rings.
       +&gt;  
       +&gt; +Userspace control methods
       +&gt; +==========================
       +&gt; +
       +&gt; +At times, userspace may need to check the state of the remote processor to
       +&gt; +prevent other processes from using it. For instance, if the remote processor
       +&gt; +is a DSP used for playback, there may be situations where the DSP is
       +&gt; +undergoing recovery and cannot be used. In such cases, attempts to access the
       +&gt; +DSP for playback should be blocked. The rproc framework provides sysfs APIs
       +&gt; +to inform userspace of the processor&#39;s current status which should be utilised
       +&gt; +to achieve the same.
       +&gt; +
       +</span>
       +Remove
       +
       +<span
       +class="q">&gt; +Additionally, there are scenarios where userspace applications need to explicitly
       +&gt; +control the rproc. In these cases, rproc also offers the file descriptors.
       +&gt; +
       +&gt; +Below set of commands can be used to start and stop the rproc
       +&gt; +where &#39;X&#39; refers to instance of associated remoteproc. There can be systems
       +&gt; +where there are more than one rprocs such as multiple DSP&#39;s
       +&gt; +connected to application processors running Linux.
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   echo start &gt; /sys/class/remoteproc/remoteprocX/state
       +&gt; +   echo stop &gt; /sys/class/remoteproc/remoteprocX/state
       +&gt; +
       +&gt; +To know the state of rproc:
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   cat /sys/class/remoteproc/remoteprocX/state
       +&gt; +
       +&gt; +
       +&gt; +To dynamically replace firmware, execute the following commands:
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   echo stop &gt; /sys/class/remoteproc/remoteprocX/state
       +&gt; +   echo -n &lt;firmware_name&gt; &gt;
       +&gt; +   /sys/class/remoteproc/remoteprocX/firmware
       +&gt; +   echo start &gt; /sys/class/remoteproc/remoteprocX/state
       +&gt; +
       +&gt; +To simulate a remote crash, execute:
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   echo 1 &gt; /sys/kernel/debug/remoteproc/remoteprocX/crash
       +&gt; +
       +&gt; +To get the trace logs, execute
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   cat /sys/kernel/debug/remoteproc/remoteprocX/crashX
       +&gt; +
       +&gt; +where X will be 0 or 1 if there are 2 resources. Also, this
       +&gt; +file will only exist if resources are defined in ELF firmware
       +&gt; +file.
       +&gt; +
       +&gt; +The coredump feature can be disabled with the following command:
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   echo disabled &gt; /sys/kernel/debug/remoteproc/remoteprocX/coredump
       +&gt; +
       +&gt; +Userspace can also control start/stop of rproc by using a
       +</span>
       +s/rproc/remote processor
       +
       +<span
       +class="q">&gt; +remoteproc Character Device, it can open the open a file descriptor
       +</span>
       +s/Character Device/character device
       +
       +<span
       +class="q">&gt; +and write `start` to initiate it, and `stop` to terminate it.
       +&gt; +Below set of api&#39;s can be used to start and stop the rproc
       +&gt; +where &#39;X&#39; refers to instance of associated remoteproc. There can be systems
       +&gt; +where there are more than one rprocs such as multiple DSP&#39;s
       +&gt; +connected to application processors running Linux.
       +</span>
       +Duplication from above - remove.
       +
       +<span
       +class="q">&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   echo start &gt; /sys/class/remoteproc/remoteprocX/state
       +&gt; +   echo stop &gt; /sys/class/remoteproc/remoteprocX/state
       +&gt; +
       +&gt; +To know the state of rproc:
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   cat /sys/class/remoteproc/remoteprocX/state
       +&gt; +
       +</span>
       +Remove
       +
       +<span
       +class="q">&gt; +
       +&gt; +To dynamically replace firmware, execute the following commands:
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   echo stop &gt; /sys/class/remoteproc/remoteprocX/state
       +&gt; +   echo -n &lt;firmware_name&gt; &gt;
       +&gt; +   /sys/class/remoteproc/remoteprocX/firmware
       +&gt; +   echo start &gt; /sys/class/remoteproc/remoteprocX/state
       +&gt; +
       +&gt; +To simulate a remote crash, execute:
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   echo 1 &gt; /sys/kernel/debug/remoteproc/remoteprocX/crash
       +&gt; +
       +&gt; +To get the trace logs, execute
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   cat /sys/kernel/debug/remoteproc/remoteprocX/crashX
       +&gt; +
       +&gt; +where X will be 0 or 1 if there are 2 resources. Also, this
       +&gt; +file will only exist if resources are defined in ELF firmware
       +&gt; +file.
       +&gt; +
       +&gt; +The coredump feature can be disabled with the following command:
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   echo disabled &gt; /sys/kernel/debug/remoteproc/remoteprocX/coredump
       +&gt; +
       +&gt; +Userspace can also control start/stop of rproc by using a
       +&gt; +remoteproc Character Device, it can open the open a file descriptor
       +&gt; +and write `start` to initiate it, and `stop` to terminate it.
       +</span>
       +Duplication from above - remove.
       +
       +<span
       +class="q">&gt; +
       +&gt;  Binary Firmware Structure
       +&gt;  =========================
       +&gt;  
       +&gt; @@ -340,6 +781,48 @@ We also expect that platform-specific resource entries will show up
       +&gt;  at some point. When that happens, we could easily add a new RSC_PLATFORM
       +&gt;  type, and hand those resources to the platform-specific rproc driver to handle.
       +&gt;  
       +&gt; +if the remote requests both `RSC_TRACE` and `RSC_CARVEOUT` for memory
       +&gt; +allocation, the ELF firmware can be structured as follows:
       +&gt; +
       +&gt; +.. code-block:: c
       +&gt; +
       +&gt; +   #define MAX_SHARED_RESOURCE 2
       +&gt; +   #define LOG_BUF_SIZE 1000
       +&gt; +   #define CARVEOUT_DUMP_PA 0x12345678
       +&gt; +   #define CARVEOUT_DUMP_SIZE 2000
       +&gt; +
       +&gt; +   struct shared_resource_table {
       +&gt; +       u32 ver;
       +&gt; +       u32 num;
       +&gt; +       u32 reserved[2];
       +&gt; +       u32 offset[MAX_SHARED_RESOURCE];
       +&gt; +       struct fw_rsc_trace log_trace;
       +&gt; +       struct fw_rsc_carveout dump_carveout;
       +&gt; +   };
       +&gt; +
       +&gt; +   volatile struct shared_resource_table table = {
       +&gt; +       .ver = 1,
       +&gt; +       .num = 2,
       +&gt; +       .reserved = {0, 0},
       +&gt; +       .offset = {
       +&gt; +           offsetof(struct resource_table, log_trace),
       +&gt; +           offsetof(struct resource_table, dump_carveout),
       +&gt; +       },
       +&gt; +       .log_trace = {
       +&gt; +           RSC_TRACE,
       +&gt; +           (u32)log_buf, LOG_BUF_SIZE, 0, &#34;log_trace&#34;,
       +&gt; +       },
       +&gt; +       .dump_carveout = {
       +&gt; +           RSC_CARVEOUT,
       +&gt; +           (u32)FW_RSC_ADDR_ANY, CARVEOUT_PA, 0, &#34;carveout_dump&#34;,
       +&gt; +       },
       +&gt; +   };
       +&gt; +
       +&gt; +The framework creates a sysfs file when it encounters the `RSC_TRACE`
       +&gt; +type to expose log information to userspace. Other resource types are
       +&gt; +handled accordingly. In the example above, `CARVEOUT_DUMP_SIZE` bytes
       +&gt; +of DMA memory will be allocated starting from `CARVEOUT_DUMP_PA`.
       +&gt; +
       +</span>
       +Remove
       +
       +<span
       +class="q">&gt;  Virtio and remoteproc
       +&gt;  =====================
       +&gt;  
       +</span>
       +Before spinning off another revision I encourage you to spend time looking at
       +existing documentation.  Reading various mailing lists with a special
       +focus on how people split their patches based on topics would also be
       +beneficial.
       +
       +Lastly, typing my email address correctly would be highly appreciated.
       +
       +Thanks,
       +Mathieu
       +
       +<span
       +class="q">&gt; -- 
       +&gt; 2.39.3 (Apple Git-146)
       +&gt; 
       +&gt; 
       +</span></pre></div></content></entry><entry><author><name>Borislav Petkov</name><email>bp@alien8.de</email></author><title>Re: [PATCH v5 0/4] Distinguish between variants of IBPB</title><updated>2024-11-01T15:41:19Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101153857.GAZyT2EdLXKs7ZmDFx@fat_crate.local/"/><id>urn:uuid:87315698-5cce-93e0-116f-32d3d054c439</id><thr:in-reply-to
       +ref="urn:uuid:7848ad27-59f2-66a2-0604-1759555ec538"
       +href="http://lore.kernel.org/lkml/173039500211.1507616.16831780895322741303.b4-ty@google.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On Thu, Oct 31, 2024 at 12:51:33PM -0700, Sean Christopherson wrote:
       +<span
       +class="q">&gt; [1/4] x86/cpufeatures: Clarify semantics of X86_FEATURE_IBPB
       +&gt;       <a
       +href="https://github.com/kvm-x86/linux/commit/43801a0dbb38">https://github.com/kvm-x86/linux/commit/43801a0dbb38</a>
       +&gt; [2/4] x86/cpufeatures: Define X86_FEATURE_AMD_IBPB_RET
       +&gt;       <a
       +href="https://github.com/kvm-x86/linux/commit/99d252e3ae3e">https://github.com/kvm-x86/linux/commit/99d252e3ae3e</a>
       +</span>
       +ff898623af2e (&#34;x86/cpufeatures: Define X86_FEATURE_AMD_IBPB_RET&#34;)
       +
       +-- 
       +Regards/Gruss,
       +    Boris.
       +
       +<a
       +href="https://people.kernel.org/tglx/notes-about-netiquette">https://people.kernel.org/tglx/notes-about-netiquette</a>
       +</pre></div></content></entry><entry><author><name>Krzysztof Kozlowski</name><email>krzk@kernel.org</email></author><title>Re: [PATCH v4 14/16] net: stmmac: dwmac-s32: add basic NXP S32G/S32R glue driver</title><updated>2024-11-01T15:41:02Z</updated><link
       +href="http://lore.kernel.org/lkml/9e876379-c555-45e6-8a8a-752d90fdc8ed@kernel.org/"/><id>urn:uuid:30c4433f-89b6-f3b7-80b7-9c9eeb95f8aa</id><thr:in-reply-to
       +ref="urn:uuid:fbcfeeed-2e04-e19b-b7e8-7edb91c7374e"
       +href="http://lore.kernel.org/lkml/ZyO9Mfq+znZdJJrJ@lsv051416.swis.nl-cdc01.nxp.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On 31/10/2024 18:24, Jan Petrous wrote:
       +<span
       +class="q">&gt; On Thu, Oct 31, 2024 at 06:16:46PM +0100, Jan Petrous wrote:
       +&gt;&gt; On Thu, Oct 31, 2024 at 04:44:45PM +0100, Krzysztof Kozlowski wrote:
       +&gt;&gt;&gt; On 31/10/2024 15:43, Jan Petrous wrote:
       +&gt;&gt;&gt;&gt; On Tue, Oct 29, 2024 at 08:13:40AM +0100, Krzysztof Kozlowski wrote:
       +&gt;&gt;&gt;&gt;&gt; On Mon, Oct 28, 2024 at 09:24:56PM +0100, Jan Petrous (OSS) wrote:
       +&gt;&gt;&gt;&gt;&gt;&gt; +        plat-&gt;init = s32_gmac_init;
       +&gt;&gt;&gt;&gt;&gt;&gt; +        plat-&gt;exit = s32_gmac_exit;
       +&gt;&gt;&gt;&gt;&gt;&gt; +        plat-&gt;fix_mac_speed = s32_fix_mac_speed;
       +&gt;&gt;&gt;&gt;&gt;&gt; +
       +&gt;&gt;&gt;&gt;&gt;&gt; +        plat-&gt;bsp_priv = gmac;
       +&gt;&gt;&gt;&gt;&gt;&gt; +
       +&gt;&gt;&gt;&gt;&gt;&gt; +        return stmmac_pltfr_probe(pdev, plat, &#38;res);
       +&gt;&gt;&gt;&gt;&gt;&gt; +}
       +&gt;&gt;&gt;&gt;&gt;&gt; +
       +&gt;&gt;&gt;&gt;&gt;&gt; +static const struct of_device_id s32_dwmac_match[] = {
       +&gt;&gt;&gt;&gt;&gt;&gt; +        { .compatible = &#34;nxp,s32g2-dwmac&#34; },
       +&gt;&gt;&gt;&gt;&gt;&gt; +        { .compatible = &#34;nxp,s32g3-dwmac&#34; },
       +&gt;&gt;&gt;&gt;&gt;&gt; +        { .compatible = &#34;nxp,s32r-dwmac&#34; },
       +&gt;&gt;&gt;&gt;&gt;
       +&gt;&gt;&gt;&gt;&gt; Why do you need three same entries?
       +&gt;&gt;&gt;&gt;&gt;
       +&gt;&gt;&gt;&gt;
       +&gt;&gt;&gt;&gt; We have three different SoCs and in v3 review you told me
       +&gt;&gt;&gt;&gt; to return all back:
       +&gt;&gt;&gt;&gt; <a
       +href="https://patchwork.kernel.org/comment/26067257/">https://patchwork.kernel.org/comment/26067257/</a>
       +&gt;&gt;&gt;
       +&gt;&gt;&gt; It was about binding, not driver.
       +&gt;&gt;&gt;
       +&gt;&gt;&gt; I also asked there: use proper fallback and compatibility. Both comments
       +&gt;&gt;&gt; of course affect your driver, but why choosing only first part?
       +&gt;&gt;&gt;
       +&gt;&gt;
       +&gt;&gt; Does it mean I should remove first two (G2/G3) members from match array
       +&gt;&gt; and use &#34;nxp,s32r-dwmac&#34; as fallback for G2/G3? And similarly change
       +&gt;&gt; the bindings to:
       +&gt;&gt;
       +&gt;&gt;   compatible:
       +&gt;&gt;     oneOf:
       +&gt;&gt;       - const: nxp,s32r-dwmac
       +&gt;&gt;       - items:
       +&gt;&gt;           - enum:
       +&gt;&gt;               - nxp,s32g2-dwmac
       +&gt;&gt;               - nxp,s32g3-dwmac
       +&gt;&gt;           - const: nxp,s32r-dwmac
       +&gt;&gt;
       +&gt;&gt; And add here, into the driver, those members back when some device
       +&gt;&gt; specific feature will be needed? Am I understand your hints right?
       +&gt;&gt;
       +&gt; 
       +&gt; Sorry, it&#39;s not correct. This way I&#39;m not able to detect S32R which is
       +&gt; the only one with higher speed.
       +&gt; 
       +&gt; Then I could use the G2 as fallback I think, Ie.:
       +&gt; 
       +&gt;   compatible:
       +&gt;     oneOf:
       +&gt;       - const: nxp,s32g2-dwmac
       +&gt;       - items:
       +&gt;           - enum:
       +&gt;               - nxp,s32g3-dwmac
       +&gt;               - nxp,s32r-dwmac
       +&gt;            - const: nxp,s32g2-dwmac
       +</span>
       +I don&#39;t understand. In both cases you can &#39;detect r&#39;, if by this you
       +meant match and bind. I don&#39;t care which one is the fallback, but if one
       +does not work it points to different issues with your code.
       +
       +Best regards,
       +Krzysztof
       +
       +</pre></div></content></entry><entry><author><name>Bjorn Andersson</name><email>andersson@kernel.org</email></author><title>Re: [PATCH v3 3/3] PCI: qcom: Update ICC and OPP values during link up event</title><updated>2024-11-01T15:40:58Z</updated><link
       +href="http://lore.kernel.org/lkml/bsxaq6zilwaavcwi25dbz2wgrgqrqxfme6a5lfdg6jqfl4kspj@xahygne3tqg4/"/><id>urn:uuid:c1a51ad4-30df-8454-421f-cfa43c8a4dd0</id><thr:in-reply-to
       +ref="urn:uuid:60c26f9c-0686-e5b4-b0fd-213e2ead902f"
       +href="http://lore.kernel.org/lkml/20241101-remove_wait-v3-3-7accf27f7202@quicinc.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On Fri, Nov 01, 2024 at 05:04:14PM GMT, Krishna chaitanya chundru wrote:
       +<span
       +class="q">&gt; As part of the PCIe link up event, update ICC and OPP values
       +&gt; as at this point only driver can know the link speed and
       +&gt; width of the PCIe link.
       +&gt; 
       +</span>
       +It would be nice if you were to write your commit messages in the style
       +documented at <a
       +href="https://docs.kernel.org/process/submitting-patches.html#describe-your-changes">https://docs.kernel.org/process/submitting-patches.html#describe-your-changes</a>
       +I.e. start with a clear problem description, then move into describing
       +the solution.
       +
       +Your commit message is stating that this is the only place the driver
       +can know the link speed, but wouldn&#39;t that imply that there&#39;s some
       +actual problem with the code currently?
       +
       +
       +I&#39;m guessing (because that&#39;s what your commit message is forcing me to
       +do) that in the case that we don&#39;t detect anything connected at probe
       +time and then we get a &#34;hotplug&#34; interrupt, we will have completely
       +incorrect bus votes?
       +
       +If so, it would seem that this patch should have a:
       +Fixes: 4581403f6792 (&#34;PCI: qcom: Enumerate endpoints based on Link up event in &#39;global_irq&#39; interrupt&#34;)
       +
       +And of course, a proper description of that problem.
       +
       +Regards,
       +Bjorn
       +
       +<span
       +class="q">&gt; Signed-off-by: Krishna chaitanya chundru &lt;quic_krichai@quicinc.com&gt;
       +&gt; ---
       +&gt;  drivers/pci/controller/dwc/pcie-qcom.c | 2 ++
       +&gt;  1 file changed, 2 insertions(+)
       +&gt; 
       +&gt; diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
       +&gt; index 474b7525442d..5826c0e7ca0b 100644
       +&gt; --- a/drivers/pci/controller/dwc/pcie-qcom.c
       +&gt; +++ b/drivers/pci/controller/dwc/pcie-qcom.c
       +&gt; @@ -1558,6 +1558,8 @@ static irqreturn_t qcom_pcie_global_irq_thread(int irq, void *data)
       +&gt;                  pci_lock_rescan_remove();
       +&gt;                  pci_rescan_bus(pp-&gt;bridge-&gt;bus);
       +&gt;                  pci_unlock_rescan_remove();
       +&gt; +
       +&gt; +                qcom_pcie_icc_opp_update(pcie);
       +&gt;          } else {
       +&gt;                  dev_WARN_ONCE(dev, 1, &#34;Received unknown event. INT_STATUS: 0x%08x\n&#34;,
       +&gt;                                status);
       +&gt; 
       +&gt; -- 
       +&gt; 2.34.1
       +&gt; 
       +&gt; 
       +</span></pre></div></content></entry><entry><author><name>Krzysztof Kozlowski</name><email>krzk@kernel.org</email></author><title>Re: [PATCH asahi-soc/dt 01/10] dt-bindings: arm: apple: apple,pmgr: Add A7-A11 compatibles</title><updated>2024-11-01T15:39:39Z</updated><link
       +href="http://lore.kernel.org/lkml/4ce01e3b-9bcd-4d8c-bfe1-c2b17a4c2566@kernel.org/"/><id>urn:uuid:0326f435-109d-72bc-0241-95f810e4c4e3</id><thr:in-reply-to
       +ref="urn:uuid:7100b345-9ca2-8988-dd45-907cd539adb4"
       +href="http://lore.kernel.org/lkml/5e0b5238-d781-458a-9285-df54a16232af@marcan.st/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On 01/11/2024 13:33, Hector Martin wrote:
       +<span
       +class="q">&gt; - First the ancient s5l series
       +&gt; - Then all the t/sXXXX chips up to t8103 (M1) (numeric order, ignoring
       +&gt; prefix letter)
       +&gt; - Then the rest of the &#34;baseline&#34; Ax,Mx chips that continue after M1,
       +&gt; which are all numbered t8xxx (numeric order)
       +&gt; - Finally the t6xxx series (Mx Pro/Mx Max), which forks the timeline and
       +&gt; numbering after t8103/M1 (M1 Pro = t6000).
       +&gt; 
       +&gt; Unless there&#39;s significant objection I&#39;d like to keep this pattern, it
       +&gt; makes sense from the POV of people working on these chips.
       +</span>
       +No, no, it&#39;s fine, I am just forgetting where do we have exceptions. :)
       +
       +Best regards,
       +Krzysztof
       +
       +</pre></div></content></entry><entry><author><name>Oliver Upton</name><email>oliver.upton@linux.dev</email></author><title>Re: [PATCH v3 03/14] KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param</title><updated>2024-11-01T15:38:59Z</updated><link
       +href="http://lore.kernel.org/lkml/ZyT2CB6zodtbWEI9@linux.dev/"/><id>urn:uuid:8e0284c3-77ef-8e37-aab3-cf5125f83ce8</id><thr:in-reply-to
       +ref="urn:uuid:eaa12fb4-732a-6676-4b84-22d6654838f7"
       +href="http://lore.kernel.org/lkml/ZyTpwwm0s89iU9Pk@google.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">Hey,
       +
       +On Fri, Nov 01, 2024 at 07:48:00AM -0700, Sean Christopherson wrote:
       +<span
       +class="q">&gt; On Fri, Nov 01, 2024, Mark Brown wrote:
       +&gt; &gt; On Wed, Oct 09, 2024 at 08:49:42AM -0700, Sean Christopherson wrote:
       +&gt; &gt; &gt; Return a uint64_t from vcpu_get_reg() instead of having the caller provide
       +&gt; &gt; &gt; a pointer to storage, as none of the vcpu_get_reg() usage in KVM selftests
       +&gt; &gt; &gt; accesses a register larger than 64 bits, and vcpu_set_reg() only accepts a
       +&gt; &gt; &gt; 64-bit value.  If a use case comes along that needs to get a register that
       +&gt; &gt; &gt; is larger than 64 bits, then a utility can be added to assert success and
       +&gt; &gt; &gt; take a void pointer, but until then, forcing an out param yields ugly code
       +&gt; &gt; &gt; and prevents feeding the output of vcpu_get_reg() into vcpu_set_reg().
       +&gt; &gt; 
       +&gt; &gt; This commit, which is in today&#39;s -next as 5c6c7b71a45c9c, breaks the
       +&gt; &gt; build on arm64:
       +&gt; &gt; 
       +&gt; &gt; aarch64/psci_test.c: In function &#8216;host_test_system_off2&#8217;:
       +&gt; &gt; aarch64/psci_test.c:247:9: error: too many arguments to function &#8216;vcpu_get_reg&#8217;
       +&gt; &gt;   247 |         vcpu_get_reg(target, KVM_REG_ARM_PSCI_VERSION, &#38;psci_version);
       +&gt; &gt;       |         ^~~~~~~~~~~~
       +&gt; &gt; In file included from aarch64/psci_test.c:18:
       +&gt; &gt; include/kvm_util.h:705:24: note: declared here
       +&gt; &gt;   705 | static inline uint64_t vcpu_get_reg(struct kvm_vcpu *vcpu, uint64_t id)
       +&gt; &gt;       |                        ^~~~~~~~~~~~
       +&gt; &gt; At top level:
       +&gt; &gt; cc1: note: unrecognized command-line option &#8216;-Wno-gnu-variable-sized-type-not-at
       +&gt; &gt; -end&#8217; may have been intended to silence earlier diagnostics
       +&gt; &gt; 
       +&gt; &gt; since the updates done to that file did not take account of 72be5aa6be4
       +&gt; &gt; (&#34;KVM: selftests: Add test for PSCI SYSTEM_OFF2&#34;) which has been merged
       +&gt; &gt; in the kvm-arm64 tree.
       +&gt; 
       +&gt; Bugger.  In hindsight, it&#39;s obvious that of course arch selftests would add usage
       +&gt; of vcpu_get_reg().
       +&gt; 
       +&gt; Unless someone has a better idea, I&#39;ll drop the series from kvm-x86, post a new
       +&gt; version that applies on linux-next, and then re-apply the series just before the
       +&gt; v6.13 merge window (rinse and repeat as needed if more vcpu_get_reg() users come
       +&gt; along).
       +</span>
       +Can you instead just push out a topic branch and let the affected
       +maintainers deal with it? This is the usual way we handle conflicts
       +between trees...
       +
       +<span
       +class="q">&gt; That would be a good oppurtunity to do the $(ARCH) directory switch[*] too, e.g.
       +&gt; have a &#34;selftests_late&#34; or whatever topic branch.
       +</span>
       +The right time to do KVM-wide changes (even selftests) is *early* in the
       +development cycle, not last minute. It gives us plenty of time to iron out
       +the wrinkles.
       +
       +<span
       +class="q">&gt; Sorry for the pain Mark, you&#39;ve been playing janitor for us too much lately.
       +</span>
       ++1, appreciate your help on this.
       +
       +-- 
       +Thanks,
       +Oliver
       +</pre></div></content></entry><entry><author><name>Jonathan Cameron</name><email>jic23@kernel.org</email></author><title>Re: [PATCH v2 05/15] iio: proximity: sx9500: simplify code in write_event_config callback</title><updated>2024-11-01T15:37:09Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101153656.43e27240@jic23-huawei/"/><id>urn:uuid:c655d237-138d-92db-3a39-fc0924f674ea</id><thr:in-reply-to
       +ref="urn:uuid:da253a47-1fe4-d6ec-5897-5cfcd6c7fd9f"
       +href="http://lore.kernel.org/lkml/20241031-iio-fix-write-event-config-signature-v2-5-2bcacbb517a2@baylibre.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On Thu, 31 Oct 2024 16:27:00 +0100
       +Julien Stephan &lt;jstephan@baylibre.com&gt; wrote:
       +
       +<span
       +class="q">&gt; iio_ev_state_store is actually using kstrtobool to check user
       +&gt; input, then gives the converted boolean value to the write_event_config
       +&gt; callback.
       +&gt; 
       +&gt; Remove useless code in write_event_config callback.
       +&gt; 
       +&gt; Signed-off-by: Julien Stephan &lt;jstephan@baylibre.com&gt;
       +</span>Applied and pushed out as testing. Still time for other reviews if anyone
       +cares to take a look.
       +
       +Thanks,
       +
       +Jonathan
       +
       +<span
       +class="q">&gt; ---
       +&gt;  drivers/iio/proximity/sx9500.c | 4 ++--
       +&gt;  1 file changed, 2 insertions(+), 2 deletions(-)
       +&gt; 
       +&gt; diff --git a/drivers/iio/proximity/sx9500.c b/drivers/iio/proximity/sx9500.c
       +&gt; index 3f4eace05cfc6a4679fe82854dc059aa4a710d6d..e3da709424d5b2bd4e746df7adc4a4969e62f2a6 100644
       +&gt; --- a/drivers/iio/proximity/sx9500.c
       +&gt; +++ b/drivers/iio/proximity/sx9500.c
       +&gt; @@ -551,7 +551,7 @@ static int sx9500_write_event_config(struct iio_dev *indio_dev,
       +&gt;  
       +&gt;          mutex_lock(&#38;data-&gt;mutex);
       +&gt;  
       +&gt; -        if (state == 1) {
       +&gt; +        if (state) {
       +&gt;                  ret = sx9500_inc_chan_users(data, chan-&gt;channel);
       +&gt;                  if (ret &lt; 0)
       +&gt;                          goto out_unlock;
       +&gt; @@ -571,7 +571,7 @@ static int sx9500_write_event_config(struct iio_dev *indio_dev,
       +&gt;          goto out_unlock;
       +&gt;  
       +&gt;  out_undo_chan:
       +&gt; -        if (state == 1)
       +&gt; +        if (state)
       +&gt;                  sx9500_dec_chan_users(data, chan-&gt;channel);
       +&gt;          else
       +&gt;                  sx9500_inc_chan_users(data, chan-&gt;channel);
       +&gt; 
       +</span>
       +</pre></div></content></entry><entry><author><name>Kevin Hilman</name><email>khilman@baylibre.com</email></author><title>[PATCH v5 3/3] pmdomain: ti_sci: handle wake IRQs for IO daisy chain wakeups</title><updated>2024-11-01T15:36:48Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101-lpm-v6-10-constraints-pmdomain-v5-3-3011aa04622f@baylibre.com/"/><id>urn:uuid:11615bf4-8ff2-c4a8-144c-ff8bb03cdf31</id><thr:in-reply-to
       +ref="urn:uuid:4b4b1161-c4f3-5b7a-f4fd-b9a8d5e4d864"
       +href="http://lore.kernel.org/lkml/20241101-lpm-v6-10-constraints-pmdomain-v5-0-3011aa04622f@baylibre.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">When a device supports IO daisy-chain wakeups, it uses a dedicated
       +wake IRQ.  Devices with IO daisy-chain wakeups enabled should not set
       +wakeup constraints since these can happen even from deep power states,
       +so should not prevent the DM from picking deep power states.
       +
       +Wake IRQs are set with dev_pm_set_wake_irq() or
       +dev_pm_set_dedicated_wake_irq().  The latter is used by the serial
       +driver used on K3 platforms (drivers/tty/serial/8250/8250_omap.c)
       +when the interrupts-extended property is used to describe the
       +dedicated wakeup interrupt.
       +
       +Detect these wake IRQs in the suspend path, and if set, skip sending
       +constraint.
       +
       +Tested-by: Dhruva Gole &lt;d-gole@ti.com&gt;
       +Signed-off-by: Kevin Hilman &lt;khilman@baylibre.com&gt;
       +---
       + drivers/pmdomain/ti/ti_sci_pm_domains.c | 9 +++++++++
       + 1 file <a href="http://lore.kernel.org/lkml/20241101-lpm-v6-10-constraints-pmdomain-v5-3-3011aa04622f@baylibre.com/#related">changed</a>, 9 insertions(+)
       +
       +<span
       +class="head">diff --git a/drivers/pmdomain/ti/ti_sci_pm_domains.c b/drivers/pmdomain/ti/ti_sci_pm_domains.c
       +index ff529fa2d6135cc2fb32ae8a3ca26ac055f66cf5..8c46ca428f60b3d42a5a43488538f16b7ffaa3ac 100644
       +--- a/drivers/pmdomain/ti/ti_sci_pm_domains.c
       ++++ b/drivers/pmdomain/ti/ti_sci_pm_domains.c
       +</span><span
       +class="hunk">@@ -82,6 +82,15 @@ static inline void ti_sci_pd_set_wkup_constraint(struct device *dev)
       +</span>         int ret;
       + 
       +         if (device_may_wakeup(dev)) {
       +<span
       +class="add">+                /*
       ++                 * If device can wakeup using IO daisy chain wakeups,
       ++                 * we do not want to set a constraint.
       ++                 */
       ++                if (dev-&gt;power.wakeirq) {
       ++                        dev_dbg(dev, &#34;%s: has wake IRQ, not setting constraints\n&#34;, __func__);
       ++                        return;
       ++                }
       ++
       +</span>                 ret = ti_sci-&gt;ops.pm_ops.set_device_constraint(ti_sci, pd-&gt;idx,
       +                                                                TISCI_MSG_CONSTRAINT_SET);
       +                 if (!ret)
       +
       +-- 
       +2.46.2
       +
       +</pre></div></content></entry><entry><author><name>Kevin Hilman</name><email>khilman@baylibre.com</email></author><title>[PATCH v5 2/3] pmdomain: ti_sci: add wakeup constraint management</title><updated>2024-11-01T15:36:47Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101-lpm-v6-10-constraints-pmdomain-v5-2-3011aa04622f@baylibre.com/"/><id>urn:uuid:48eb97d7-ab67-98c3-64b3-b03b2a84f61b</id><thr:in-reply-to
       +ref="urn:uuid:4b4b1161-c4f3-5b7a-f4fd-b9a8d5e4d864"
       +href="http://lore.kernel.org/lkml/20241101-lpm-v6-10-constraints-pmdomain-v5-0-3011aa04622f@baylibre.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">During system-wide suspend, check all devices connected to PM domain
       +to see if they are wakeup-enabled.  If so, set a TI SCI device
       +constraint.
       +
       +Note: DM firmware clears all constraints on resume.
       +
       +Co-developed-by: Vibhore Vardhan &lt;vibhore@ti.com&gt;
       +Signed-off-by: Vibhore Vardhan &lt;vibhore@ti.com&gt;
       +Reviewed-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
       +Tested-by: Dhruva Gole &lt;d-gole@ti.com&gt;
       +Signed-off-by: Kevin Hilman &lt;khilman@baylibre.com&gt;
       +---
       + drivers/pmdomain/ti/ti_sci_pm_domains.c | 17 +++++++++++++++++
       + 1 file <a href="http://lore.kernel.org/lkml/20241101-lpm-v6-10-constraints-pmdomain-v5-2-3011aa04622f@baylibre.com/#related">changed</a>, 17 insertions(+)
       +
       +<span
       +class="head">diff --git a/drivers/pmdomain/ti/ti_sci_pm_domains.c b/drivers/pmdomain/ti/ti_sci_pm_domains.c
       +index c976a382d64c807daea72fa1ea9d6c11c8773762..ff529fa2d6135cc2fb32ae8a3ca26ac055f66cf5 100644
       +--- a/drivers/pmdomain/ti/ti_sci_pm_domains.c
       ++++ b/drivers/pmdomain/ti/ti_sci_pm_domains.c
       +</span><span
       +class="hunk">@@ -74,6 +74,21 @@ static void ti_sci_pd_set_lat_constraint(struct device *dev, s32 val)
       +</span>                         pd-&gt;idx, val);
       + }
       + 
       +<span
       +class="add">+static inline void ti_sci_pd_set_wkup_constraint(struct device *dev)
       ++{
       ++        struct generic_pm_domain *genpd = pd_to_genpd(dev-&gt;pm_domain);
       ++        struct ti_sci_pm_domain *pd = genpd_to_ti_sci_pd(genpd);
       ++        const struct ti_sci_handle *ti_sci = pd-&gt;parent-&gt;ti_sci;
       ++        int ret;
       ++
       ++        if (device_may_wakeup(dev)) {
       ++                ret = ti_sci-&gt;ops.pm_ops.set_device_constraint(ti_sci, pd-&gt;idx,
       ++                                                               TISCI_MSG_CONSTRAINT_SET);
       ++                if (!ret)
       ++                        dev_dbg(dev, &#34;ti_sci_pd: ID:%d set device constraint.\n&#34;, pd-&gt;idx);
       ++        }
       ++}
       ++
       +</span> /*
       +  * ti_sci_pd_power_off(): genpd power down hook
       +  * @domain: pointer to the powerdomain to power off
       +<span
       +class="hunk">@@ -116,6 +131,8 @@ static int ti_sci_pd_suspend(struct device *dev)
       +</span>         if (ti_sci_pd_is_valid_constraint(val))
       +                 ti_sci_pd_set_lat_constraint(dev, val);
       + 
       +<span
       +class="add">+        ti_sci_pd_set_wkup_constraint(dev);
       ++
       +</span>         return 0;
       + }
       + #else
       +
       +-- 
       +2.46.2
       +
       +</pre></div></content></entry><entry><author><name>Kevin Hilman</name><email>khilman@baylibre.com</email></author><title>[PATCH v5 1/3] pmdomain: ti_sci: add per-device latency constraint management</title><updated>2024-11-01T15:36:47Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101-lpm-v6-10-constraints-pmdomain-v5-1-3011aa04622f@baylibre.com/"/><id>urn:uuid:31e47c58-c301-6d44-2c84-1d34a06ae318</id><thr:in-reply-to
       +ref="urn:uuid:4b4b1161-c4f3-5b7a-f4fd-b9a8d5e4d864"
       +href="http://lore.kernel.org/lkml/20241101-lpm-v6-10-constraints-pmdomain-v5-0-3011aa04622f@baylibre.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">For each device in a TI SCI PM domain, check whether the device has
       +any resume latency constraints set via per-device PM QoS.  If
       +constraints are set, send them to DM via the new SCI constraints API.
       +
       +Checking for constraints happen for each device before system-wide
       +suspend (via -&gt;suspend() hook.)
       +
       +An important detail here is that the PM domain driver inserts itself
       +into the path of both the -&gt;suspend() and -&gt;resume() hook path
       +of *all* devices in the PM domain.  This allows generic PM domain code
       +to handle the constraint management and communication with TI SCI.
       +
       +Further, this allows device drivers to use existing PM QoS APIs to
       +add/update constraints.
       +
       +DM firmware clears constraints during its resume, so Linux has
       +to check/update/send constraints each time system suspends.
       +
       +Co-developed-by: Vibhore Vardhan &lt;vibhore@ti.com&gt;
       +Signed-off-by: Vibhore Vardhan &lt;vibhore@ti.com&gt;
       +Reviewed-by: Markus Schneider-Pargmann &lt;msp@baylibre.com&gt;
       +Reviewed-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
       +Tested-by: Dhruva Gole &lt;d-gole@ti.com&gt;
       +Signed-off-by: Kevin Hilman &lt;khilman@baylibre.com&gt;
       +---
       + drivers/pmdomain/ti/ti_sci_pm_domains.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
       + 1 file <a href="http://lore.kernel.org/lkml/20241101-lpm-v6-10-constraints-pmdomain-v5-1-3011aa04622f@baylibre.com/#related">changed</a>, 50 insertions(+)
       +
       +<span
       +class="head">diff --git a/drivers/pmdomain/ti/ti_sci_pm_domains.c b/drivers/pmdomain/ti/ti_sci_pm_domains.c
       +index 1510d5ddae3decd5b70f835338ed4e0b2a3c9373..c976a382d64c807daea72fa1ea9d6c11c8773762 100644
       +--- a/drivers/pmdomain/ti/ti_sci_pm_domains.c
       ++++ b/drivers/pmdomain/ti/ti_sci_pm_domains.c
       +</span><span
       +class="hunk">@@ -13,6 +13,8 @@
       +</span> #include &lt;linux/platform_device.h&gt;
       + #include &lt;linux/pm_domain.h&gt;
       + #include &lt;linux/slab.h&gt;
       +<span
       +class="add">+#include &lt;linux/pm_qos.h&gt;
       ++#include &lt;linux/pm_runtime.h&gt;
       +</span> #include &lt;linux/soc/ti/ti_sci_protocol.h&gt;
       + #include &lt;dt-bindings/soc/ti,sci_pm_domain.h&gt;
       + 
       +<span
       +class="hunk">@@ -51,6 +53,27 @@ struct ti_sci_pm_domain {
       +</span> 
       + #define genpd_to_ti_sci_pd(gpd) container_of(gpd, struct ti_sci_pm_domain, pd)
       + 
       +<span
       +class="add">+static inline bool ti_sci_pd_is_valid_constraint(s32 val)
       ++{
       ++        return val != PM_QOS_RESUME_LATENCY_NO_CONSTRAINT;
       ++}
       ++
       ++static void ti_sci_pd_set_lat_constraint(struct device *dev, s32 val)
       ++{
       ++        struct generic_pm_domain *genpd = pd_to_genpd(dev-&gt;pm_domain);
       ++        struct ti_sci_pm_domain *pd = genpd_to_ti_sci_pd(genpd);
       ++        const struct ti_sci_handle *ti_sci = pd-&gt;parent-&gt;ti_sci;
       ++        int ret;
       ++
       ++        ret = ti_sci-&gt;ops.pm_ops.set_latency_constraint(ti_sci, val, TISCI_MSG_CONSTRAINT_SET);
       ++        if (ret)
       ++                dev_err(dev, &#34;ti_sci_pd: set latency constraint failed: ret=%d\n&#34;,
       ++                        ret);
       ++        else
       ++                dev_dbg(dev, &#34;ti_sci_pd: ID:%d set latency constraint %d\n&#34;,
       ++                        pd-&gt;idx, val);
       ++}
       ++
       +</span> /*
       +  * ti_sci_pd_power_off(): genpd power down hook
       +  * @domain: pointer to the powerdomain to power off
       +<span
       +class="hunk">@@ -79,6 +102,26 @@ static int ti_sci_pd_power_on(struct generic_pm_domain *domain)
       +</span>                 return ti_sci-&gt;ops.dev_ops.get_device(ti_sci, pd-&gt;idx);
       + }
       + 
       +<span
       +class="add">+#ifdef CONFIG_PM_SLEEP
       ++static int ti_sci_pd_suspend(struct device *dev)
       ++{
       ++        int ret;
       ++        s32 val;
       ++
       ++        ret = pm_generic_suspend(dev);
       ++        if (ret)
       ++                return ret;
       ++
       ++        val = dev_pm_qos_read_value(dev, DEV_PM_QOS_RESUME_LATENCY);
       ++        if (ti_sci_pd_is_valid_constraint(val))
       ++                ti_sci_pd_set_lat_constraint(dev, val);
       ++
       ++        return 0;
       ++}
       ++#else
       ++#define ti_sci_pd_suspend                NULL
       ++#endif
       ++
       +</span> /*
       +  * ti_sci_pd_xlate(): translation service for TI SCI genpds
       +  * @genpdspec: DT identification data for the genpd
       +<span
       +class="hunk">@@ -188,6 +231,13 @@ static int ti_sci_pm_domain_probe(struct platform_device *pdev)
       +</span>                                 pd-&gt;pd.power_on = ti_sci_pd_power_on;
       +                                 pd-&gt;idx = args.args[0];
       +                                 pd-&gt;parent = pd_provider;
       +<span
       +class="add">+                                /*
       ++                                 * If SCI constraint functions are present, then firmware
       ++                                 * supports the constraints API.
       ++                                 */
       ++                                if (pd_provider-&gt;ti_sci-&gt;ops.pm_ops.set_device_constraint &#38;&#38;
       ++                                    pd_provider-&gt;ti_sci-&gt;ops.pm_ops.set_latency_constraint)
       ++                                        pd-&gt;pd.domain.ops.suspend = ti_sci_pd_suspend;
       +</span> 
       +                                 pm_genpd_init(&#38;pd-&gt;pd, NULL, true);
       + 
       +
       +-- 
       +2.46.2
       +
       +</pre></div></content></entry><entry><author><name>Kevin Hilman</name><email>khilman@baylibre.com</email></author><title>[PATCH v5 0/3] pmdomain: ti_sci: collect and send low-power mode constraints</title><updated>2024-11-01T15:36:46Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101-lpm-v6-10-constraints-pmdomain-v5-0-3011aa04622f@baylibre.com/"/><id>urn:uuid:4b4b1161-c4f3-5b7a-f4fd-b9a8d5e4d864</id><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">The latest (10.x) version of the firmware for the PM co-processor (aka
       +device manager, or DM) adds support for a &#34;managed&#34; mode, where the DM
       +firmware will select the specific low power state which is entered
       +when Linux requests a system-wide suspend.
       +
       +In this mode, the DM will always attempt the deepest low-power state
       +available for the SoC.
       +
       +However, Linux (or OSes running on other cores) may want to constrain
       +the DM for certain use cases.  For example, the deepest state may have
       +a wakeup/resume latency that is too long for certain use cases.  Or,
       +some wakeup-capable devices may potentially be powered off in deep
       +low-power states, but if one of those devices is enabled as a wakeup
       +source, it should not be powered off.
       +
       +These kinds of constraints are are already known in Linux by the use
       +of existing APIs such as per-device PM QoS and device wakeup APIs, but
       +now we need to communicate these constraints to the DM.
       +
       +For TI SoCs with TI SCI support, all DM-managed devices will be
       +connected to a TI SCI PM domain.  So the goal of this series is to use
       +the PM domain driver for TI SCI devices to collect constraints, and
       +communicate them to the DM via the new TI SCI APIs.
       +
       +This is all managed by TI SCI PM domain code.  No new APIs are needed
       +by Linux drivers.  Any device that is managed by TI SCI will be
       +checked for QoS constraints or wakeup capability and the constraints
       +will be collected and sent to the DM.
       +
       +This series depends on the support for the new TI SCI APIs (v10) and
       +was also tested with this series to update 8250_omap serial support
       +for AM62x[2].
       +
       +[1] <a
       +href="https://lore.kernel.org/all/20240801195422.2296347-1-msp@baylibre.com">https://lore.kernel.org/all/20240801195422.2296347-1-msp@baylibre.com</a>
       +[2] <a
       +href="https://lore.kernel.org/all/20240807141227.1093006-1-msp@baylibre.com/">https://lore.kernel.org/all/20240807141227.1093006-1-msp@baylibre.com/</a>
       +
       +Signed-off-by: Kevin Hilman &lt;khilman@baylibre.com&gt;
       +---
       +Changes in v5:
       +- fix build-error when CONFIG_PM_SLEEP not defined
       +- Link to v4: <a
       +href="https://lore.kernel.org/r/20240906-lpm-v6-10-constraints-pmdomain-v4-0-4055557fafbc@baylibre.com">https://lore.kernel.org/r/20240906-lpm-v6-10-constraints-pmdomain-v4-0-4055557fafbc@baylibre.com</a>
       +
       +Changes in v4:
       +- fixed missing return in wakeirq error path
       +- updated trailers with reviewed &#38; tested tags
       +- Link to v3: <a
       +href="https://lore.kernel.org/r/20240905-lpm-v6-10-constraints-pmdomain-v3-0-e359cbb39654@baylibre.com">https://lore.kernel.org/r/20240905-lpm-v6-10-constraints-pmdomain-v3-0-e359cbb39654@baylibre.com</a>
       +
       +Changes in v3:
       +- change latency set functions to static void
       +- Link to v2: <a
       +href="https://lore.kernel.org/r/20240819-lpm-v6-10-constraints-pmdomain-v2-0-461325a6008f@baylibre.com">https://lore.kernel.org/r/20240819-lpm-v6-10-constraints-pmdomain-v2-0-461325a6008f@baylibre.com</a>
       +
       +Changes in v2:
       +- To simplify this version a bit, drop the pmdomain -&gt;power_off()
       +  changes.  Constraints only sent during -&gt;suspend() path.  The pmdomain
       +  path was an optimization that may be added back later.
       +- With the above simplification, drop the extra state variables that
       +  had been added to keep track of constraint status.
       +- Link to v1: <a
       +href="https://lore.kernel.org/r/20240805-lpm-v6-10-constraints-pmdomain-v1-0-d186b68ded4c@baylibre.com">https://lore.kernel.org/r/20240805-lpm-v6-10-constraints-pmdomain-v1-0-d186b68ded4c@baylibre.com</a>
       +
       +---
       +Kevin Hilman (3):
       +      pmdomain: ti_sci: add per-device latency constraint management
       +      pmdomain: ti_sci: add wakeup constraint management
       +      pmdomain: ti_sci: handle wake IRQs for IO daisy chain wakeups
       +
       + drivers/pmdomain/ti/ti_sci_pm_domains.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
       + 1 file changed, 76 insertions(+)
       +---
       +base-commit: ad7eb1b6b92ee0c959a0a6ae846ddadd7a79ea64
       +change-id: 20240802-lpm-v6-10-constraints-pmdomain-f33df5aef449
       +prerequisite-change-id: 20241006-tisci-syssuspendresume-e6550720a50f:v13
       +prerequisite-patch-id: 945b15416a011cb40007c5d95561786c1776bb98
       +prerequisite-patch-id: 69a741b9c81d7990937483fc481aafa70e67669d
       +prerequisite-patch-id: 15e97947da8cb7055745151990c756d81fded804
       +prerequisite-patch-id: a0efbf22e69d23dba8bb96db4032ca644935709b
       +prerequisite-patch-id: 2999da190c1ba63aabecc55fae501d442e4e0d7b
       +
       +Best regards,
       +-- 
       +Kevin Hilman &lt;khilman@baylibre.com&gt;
       +
       +</pre></div></content></entry><entry><author><name>Jonathan Cameron</name><email>jic23@kernel.org</email></author><title>Re: [PATCH v2 04/15] iio: proximity: irsd200: simplify code in write_event_config callback</title><updated>2024-11-01T15:36:20Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101153608.23a9c6f1@jic23-huawei/"/><id>urn:uuid:74f09b13-8157-93a6-328b-90d18d2afd4b</id><thr:in-reply-to
       +ref="urn:uuid:447a8057-432d-a0a9-a141-fc5025a1a9a0"
       +href="http://lore.kernel.org/lkml/20241031-iio-fix-write-event-config-signature-v2-4-2bcacbb517a2@baylibre.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On Thu, 31 Oct 2024 16:26:59 +0100
       +Julien Stephan &lt;jstephan@baylibre.com&gt; wrote:
       +
       +<span
       +class="q">&gt; iio_ev_state_store is actually using kstrtobool to check user
       +&gt; input, then gives the converted boolean value to the write_event_config
       +&gt; callback.
       +&gt; 
       +&gt; Remove useless code in write_event_config callback.
       +&gt; 
       +&gt; Signed-off-by: Julien Stephan &lt;jstephan@baylibre.com&gt;
       +</span>Applied and pushed out as testing.  If anyone has time to review
       +I can still add tags (or pull the patches if there is something I missed!)
       +
       +Thanks,
       +
       +Jonathan
       +
       +<span
       +class="q">&gt; ---
       +&gt;  drivers/iio/proximity/irsd200.c | 2 +-
       +&gt;  1 file changed, 1 insertion(+), 1 deletion(-)
       +&gt; 
       +&gt; diff --git a/drivers/iio/proximity/irsd200.c b/drivers/iio/proximity/irsd200.c
       +&gt; index 6e96b764fed8b577d71c3146210679b0b61d4c38..fb0691da99ee621e19013a64d122f097e793efd9 100644
       +&gt; --- a/drivers/iio/proximity/irsd200.c
       +&gt; +++ b/drivers/iio/proximity/irsd200.c
       +&gt; @@ -662,7 +662,7 @@ static int irsd200_write_event_config(struct iio_dev *indio_dev,
       +&gt;                          return ret;
       +&gt;  
       +&gt;                  return regmap_field_write(
       +&gt; -                        data-&gt;regfields[IRS_REGF_INTR_COUNT_THR_OR], !!state);
       +&gt; +                        data-&gt;regfields[IRS_REGF_INTR_COUNT_THR_OR], state);
       +&gt;          default:
       +&gt;                  return -EINVAL;
       +&gt;          }
       +&gt; 
       +</span>
       +</pre></div></content></entry><entry><author><name>Kevin Hilman</name><email>khilman@baylibre.com</email></author><title>Re: [PATCH v4 0/3] pmdomain: ti_sci: collect and send low-power mode constraints</title><updated>2024-11-01T15:35:30Z</updated><link
       +href="http://lore.kernel.org/lkml/7hwmhnnf0f.fsf@baylibre.com/"/><id>urn:uuid:c61ea5b1-48e8-c3d0-eac6-5fc9154ec730</id><thr:in-reply-to
       +ref="urn:uuid:cc2c9c2c-260b-f814-2876-26305aeca478"
       +href="http://lore.kernel.org/lkml/20241101144445.56ejnuoxshqwns37@boots/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">Nishanth Menon &lt;nm@ti.com&gt; writes:
       +
       +<span
       +class="q">&gt; On 11:11-20241031, Ulf Hansson wrote:
       +&gt;&gt; On Wed, 30 Oct 2024 at 20:43, Kevin Hilman &lt;khilman@baylibre.com&gt; wrote:
       +&gt;&gt; &gt;
       +&gt;&gt; &gt; Ulf Hansson &lt;ulf.hansson@linaro.org&gt; writes:
       +&gt;&gt; &gt;
       +&gt;&gt; &gt; &gt; On Wed, 30 Oct 2024 at 14:01, Nishanth Menon &lt;nm@ti.com&gt; wrote:
       +&gt;&gt; &gt; &gt;&gt;
       +&gt;&gt; &gt; &gt;&gt; Hi Kevin Hilman,
       +&gt;&gt; &gt; &gt;&gt;
       +&gt;&gt; &gt; &gt;&gt; On Fri, 06 Sep 2024 09:14:48 -0700, Kevin Hilman wrote:
       +&gt;&gt; &gt; &gt;&gt; &gt; The latest (10.x) version of the firmware for the PM co-processor (aka
       +&gt;&gt; &gt; &gt;&gt; &gt; device manager, or DM) adds support for a &#34;managed&#34; mode, where the DM
       +&gt;&gt; &gt; &gt;&gt; &gt; firmware will select the specific low power state which is entered
       +&gt;&gt; &gt; &gt;&gt; &gt; when Linux requests a system-wide suspend.
       +&gt;&gt; &gt; &gt;&gt; &gt;
       +&gt;&gt; &gt; &gt;&gt; &gt; In this mode, the DM will always attempt the deepest low-power state
       +&gt;&gt; &gt; &gt;&gt; &gt; available for the SoC.
       +&gt;&gt; &gt; &gt;&gt; &gt;
       +&gt;&gt; &gt; &gt;&gt; &gt; [...]
       +&gt;&gt; &gt; &gt;&gt;
       +&gt;&gt; &gt; &gt;&gt; I have applied the following to branch ti-drivers-soc-next on [1].
       +&gt;&gt; &gt; &gt;&gt; Thank you!
       +&gt;&gt; &gt; &gt;&gt;
       +&gt;&gt; &gt; &gt;&gt; Ulf, based on your ack[2], I have assumed that you want me to pick
       +&gt;&gt; &gt; &gt;&gt; this series up. Let me know if that is not the case and I can drop the
       +&gt;&gt; &gt; &gt;&gt; series.
       +&gt;&gt; &gt; &gt;
       +&gt;&gt; &gt; &gt; Well, that was a while ago. The reason was because there was a
       +&gt;&gt; &gt; &gt; dependency to another series [2], when this was posted.
       +&gt;&gt; &gt; &gt;
       +&gt;&gt; &gt; &gt; If that&#39;s not the case anymore, I think it&#39;s better to funnel this via
       +&gt;&gt; &gt; &gt; my pmdomain tree. Please let me know how to proceed.
       +&gt;&gt; &gt;
       +&gt;&gt; &gt; The build-time dependency on [2] still exists, and since that was just
       +&gt;&gt; &gt; queued up by Nishanth, I think this series should (still) go along with
       +&gt;&gt; &gt; it to keep things simple.
       +&gt;&gt; &gt;
       +&gt;&gt; &gt; Kevin
       +&gt;&gt; 
       +&gt;&gt; Right, that makes perfect sense to me too. If we discover conflicts,
       +&gt;&gt; let&#39;s deal with them then.
       +&gt;
       +&gt;
       +&gt; oops.. I missed this response. OK, I will let things be.
       +&gt;
       +</span>
       +Oops, 0day bot found a build error in linux-next when CONFIG_PM_SLEEP is
       +not defined[1].  Need to respin to fix this.
       +
       +v5 coming right up....
       +
       +Kevin
       +
       +[1] <a
       +href="https://lore.kernel.org/all/CA+G9fYtioQ22nVr9m22+qyMqUNRsGdA=cFw_j1OUv=x8Pcs-bw@mail.gmail.com/">https://lore.kernel.org/all/CA+G9fYtioQ22nVr9m22+qyMqUNRsGdA=cFw_j1OUv=x8Pcs-bw@mail.gmail.com/</a>
       +</pre></div></content></entry><entry><author><name>Jonathan Cameron</name><email>jic23@kernel.org</email></author><title>Re: [PATCH v2 03/15] iio: light: tsl2772: simplify code in write_event_config callback</title><updated>2024-11-01T15:35:21Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101153509.11ae74b9@jic23-huawei/"/><id>urn:uuid:ba78cdbf-6561-c6ef-f0fd-10f343557c18</id><thr:in-reply-to
       +ref="urn:uuid:c9c12e36-c944-62c0-f373-d6c3c51e217e"
       +href="http://lore.kernel.org/lkml/20241031-iio-fix-write-event-config-signature-v2-3-2bcacbb517a2@baylibre.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On Thu, 31 Oct 2024 16:26:58 +0100
       +Julien Stephan &lt;jstephan@baylibre.com&gt; wrote:
       +
       +<span
       +class="q">&gt; iio_ev_state_store is actually using kstrtobool to check user
       +&gt; input, then gives the converted boolean value to the write_event_config
       +&gt; callback.
       +&gt; 
       +&gt; Remove useless code in write_event_config callback.
       +&gt; 
       +&gt; Signed-off-by: Julien Stephan &lt;jstephan@baylibre.com&gt;
       +</span>Applied.
       +<span
       +class="q">&gt; ---
       +&gt;  drivers/iio/light/tsl2772.c | 4 ++--
       +&gt;  1 file changed, 2 insertions(+), 2 deletions(-)
       +&gt; 
       +&gt; diff --git a/drivers/iio/light/tsl2772.c b/drivers/iio/light/tsl2772.c
       +&gt; index cab468a82b616a23394977da1d8822d29d8941d3..26082f239c4c3aeabfe73ed100d6e885f5266329 100644
       +&gt; --- a/drivers/iio/light/tsl2772.c
       +&gt; +++ b/drivers/iio/light/tsl2772.c
       +&gt; @@ -1086,9 +1086,9 @@ static int tsl2772_write_interrupt_config(struct iio_dev *indio_dev,
       +&gt;          struct tsl2772_chip *chip = iio_priv(indio_dev);
       +&gt;  
       +&gt;          if (chan-&gt;type == IIO_INTENSITY)
       +&gt; -                chip-&gt;settings.als_interrupt_en = val ? true : false;
       +&gt; +                chip-&gt;settings.als_interrupt_en = val;
       +&gt;          else
       +&gt; -                chip-&gt;settings.prox_interrupt_en = val ? true : false;
       +&gt; +                chip-&gt;settings.prox_interrupt_en = val;
       +&gt;  
       +&gt;          return tsl2772_invoke_change(indio_dev);
       +&gt;  }
       +&gt; 
       +</span>
       +</pre></div></content></entry><entry><author><name>Jonathan Cameron</name><email>jic23@kernel.org</email></author><title>Re: [PATCH v2 02/15] iio: proximity: hx9023s: simplify code in write_event_config callback</title><updated>2024-11-01T15:34:46Z</updated><link
       +href="http://lore.kernel.org/lkml/20241101153434.11d85f8b@jic23-huawei/"/><id>urn:uuid:c8a9619e-10eb-3a16-1f56-21cbfa9dc5e5</id><thr:in-reply-to
       +ref="urn:uuid:86f1d001-2b45-a3aa-44a1-1b4b99f208db"
       +href="http://lore.kernel.org/lkml/20241031-iio-fix-write-event-config-signature-v2-2-2bcacbb517a2@baylibre.com/"/><content
       +type="xhtml"><div
       +xmlns="http://www.w3.org/1999/xhtml"><pre
       +style="white-space:pre-wrap">On Thu, 31 Oct 2024 16:26:57 +0100
       +Julien Stephan &lt;jstephan@baylibre.com&gt; wrote:
       +
       +<span
       +class="q">&gt; iio_ev_state_store is actually using kstrtobool to check user
       +&gt; input, then gives the converted boolean value to the write_event_config
       +&gt; callback.
       +&gt; 
       +&gt; Remove useless code in write_event_config callback.
       +&gt; 
       +&gt; Signed-off-by: Julien Stephan &lt;jstephan@baylibre.com&gt;
       +</span>Applied to the togreg branch of iio.git and pushed out as testing.
       +Note if anyone else has time to review, I can still add tags for now.
       +
       +I&#39;ll probably push it out as an (in theory) not rebasing tree early
       +next week to give a bit of time in next before a pull request.
       +
       +Jonathan
       +
       +<span
       +class="q">&gt; ---
       +&gt;  drivers/iio/proximity/hx9023s.c | 2 +-
       +&gt;  1 file changed, 1 insertion(+), 1 deletion(-)
       +&gt; 
       +&gt; diff --git a/drivers/iio/proximity/hx9023s.c b/drivers/iio/proximity/hx9023s.c
       +&gt; index d8fb34060d3db88a3ba5ecdc209b14be8e42e8b9..38441b1ee040c7c26047b0cb2ac443ecb8396df3 100644
       +&gt; --- a/drivers/iio/proximity/hx9023s.c
       +&gt; +++ b/drivers/iio/proximity/hx9023s.c
       +&gt; @@ -879,7 +879,7 @@ static int hx9023s_write_event_config(struct iio_dev *indio_dev,
       +&gt;          struct hx9023s_data *data = iio_priv(indio_dev);
       +&gt;  
       +&gt;          if (test_bit(chan-&gt;channel, &#38;data-&gt;chan_in_use)) {
       +&gt; -                hx9023s_ch_en(data, chan-&gt;channel, !!state);
       +&gt; +                hx9023s_ch_en(data, chan-&gt;channel, state);
       +&gt;                  __assign_bit(chan-&gt;channel, &#38;data-&gt;chan_event,
       +&gt;                               data-&gt;ch_data[chan-&gt;channel].enable);
       +&gt;          }
       +&gt; 
       +</span>
       +</pre></div></content></entry></feed>
       +\ No newline at end of file