* [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it @ 2023-12-20 23:54 Mark Hasemeyer 2023-12-20 23:54 ` [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource Mark Hasemeyer 2023-12-21 13:42 ` [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it Andy Shevchenko 0 siblings, 2 replies; 8+ messages in thread From: Mark Hasemeyer @ 2023-12-20 23:54 UTC (permalink / raw) To: LKML Cc: AngeloGioacchino Del Regno, Krzysztof Kozlowski, Tzung-Bi Shih, Raul Rangel, Konrad Dybcio, Andy Shevchenko, Rob Herring, Sudeep Holla, Mark Hasemeyer, Alim Akhtar, Andre Przywara, Andy Shevchenko, Bartosz Golaszewski, Benson Leung, Bhanu Prakash Maiya, Bjorn Andersson, Chen-Yu Tsai, Conor Dooley, Daniel Scally, David Gow, Enric Balletbo i Serra, Frank Rowand, Greg Kroah-Hartman, Guenter Roeck, Heikki Krogerus, Heiko Stuebner, Jesper Nilsson, Jisheng Zhang, Jonathan Hunter, Krzysztof Kozlowski, Kunihiko Hayashi, Lee Jones, Len Brown, Linus Walleij, Mark Brown, Matthias Brugger, Mika Westerberg, Patrice Chotard, Prashant Malani, Rafael J. Wysocki, Rob Barnes, Rob Herring, Romain Perier, Sakari Ailus, Stephen Boyd, Takashi Iwai, Thierry Reding, Uwe Kleine-König, Wei Xu, Wolfram Sang, chrome-platform, cros-qcom-dts-watchers, devicetree, linux-acpi, linux-arm-kernel, linux-arm-msm, linux-gpio, linux-i2c, linux-mediatek, linux-rockchip, linux-samsung-soc, linux-tegra Currently the cros_ec driver assumes that its associated interrupt is wake capable. This is an incorrect assumption as some Chromebooks use a separate wake pin, while others overload the interrupt for wake and IO. This patch train updates the driver to query the underlying ACPI/DT data to determine whether or not the IRQ should be enabled for wake. Both the device tree and ACPI systems have methods for reporting IRQ wake capability. In device tree based systems, a node can advertise itself as a 'wakeup-source'. In ACPI based systems, GpioInt and Interrupt resource descriptors can use the 'SharedAndWake' or 'ExclusiveAndWake' share types. Some logic is added to the platform, ACPI, and DT subsystems to more easily pipe wakeirq information up to the driver. Changes in v2: -Rebase on linux-next -Add cover letter -See each patch for patch specific changes Mark Hasemeyer (22): gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource i2c: acpi: Modify i2c_acpi_get_irq() to use resource Documentation: devicetree: Clarify wording for wakeup-source property ARM: dts: tegra: Enable cros-ec-spi as wake source ARM: dts: rockchip: rk3288: Enable cros-ec-spi as wake source ARM: dts: samsung: exynos5420: Enable cros-ec-spi as wake source ARM: dts: samsung: exynos5800: Enable cros-ec-spi as wake source arm64: dts: mediatek: mt8173: Enable cros-ec-spi as wake source arm64: dts: mediatek: mt8183: Enable cros-ec-spi as wake source arm64: dts: mediatek: mt8192: Enable cros-ec-spi as wake source arm64: dts: mediatek: mt8195: Enable cros-ec-spi as wake source arm64: dts: tegra: Enable cros-ec-spi as wake source arm64: dts: qcom: sc7180: Enable cros-ec-spi as wake source arm64: dts: qcom: sc7280: Enable cros-ec-spi as wake source arm64: dts: qcom: sdm845: Enable cros-ec-spi as wake source arm64: dts: rockchip: rk3399: Enable cros-ec-spi as wake source of: irq: add wake capable bit to of_irq_resource() of: irq: Add default implementation for of_irq_to_resource() of: irq: Remove extern from function declarations device property: Modify fwnode irq_get() to use resource platform: Modify platform_get_irq_optional() to use resource platform/chrome: cros_ec: Use PM subsystem to manage wakeirq .../bindings/power/wakeup-source.txt | 18 +++-- arch/arm/boot/dts/nvidia/tegra124-nyan.dtsi | 1 + arch/arm/boot/dts/nvidia/tegra124-venice2.dts | 1 + .../rockchip/rk3288-veyron-chromebook.dtsi | 1 + .../boot/dts/samsung/exynos5420-peach-pit.dts | 1 + .../boot/dts/samsung/exynos5800-peach-pi.dts | 1 + arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi | 1 + .../arm64/boot/dts/mediatek/mt8183-kukui.dtsi | 1 + .../boot/dts/mediatek/mt8192-asurada.dtsi | 1 + .../boot/dts/mediatek/mt8195-cherry.dtsi | 1 + .../arm64/boot/dts/nvidia/tegra132-norrin.dts | 1 + arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 1 + .../arm64/boot/dts/qcom/sc7280-herobrine.dtsi | 1 + .../arm64/boot/dts/qcom/sc7280-idp-ec-h1.dtsi | 1 + arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi | 1 + arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi | 1 + drivers/acpi/property.c | 11 ++- drivers/base/platform.c | 74 +++++++++++++------ drivers/base/property.c | 24 +++++- drivers/gpio/gpiolib-acpi.c | 25 ++++--- drivers/i2c/i2c-core-acpi.c | 38 +++++----- drivers/i2c/i2c-core-base.c | 6 +- drivers/i2c/i2c-core.h | 4 +- drivers/of/irq.c | 32 +++++++- drivers/of/property.c | 8 +- drivers/platform/chrome/cros_ec.c | 9 --- drivers/platform/chrome/cros_ec_lpc.c | 52 ++++++++++++- drivers/platform/chrome/cros_ec_spi.c | 41 ++++++++-- drivers/platform/chrome/cros_ec_uart.c | 34 +++++++-- include/linux/acpi.h | 23 +++--- include/linux/fwnode.h | 8 +- include/linux/of_irq.h | 41 +++++----- include/linux/platform_data/cros_ec_proto.h | 2 - include/linux/platform_device.h | 3 + include/linux/property.h | 2 + 35 files changed, 328 insertions(+), 142 deletions(-) -- 2.43.0.472.g3155946c3a-goog ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource 2023-12-20 23:54 [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it Mark Hasemeyer @ 2023-12-20 23:54 ` Mark Hasemeyer 2023-12-21 15:17 ` Andy Shevchenko 2023-12-23 2:05 ` kernel test robot 2023-12-21 13:42 ` [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it Andy Shevchenko 1 sibling, 2 replies; 8+ messages in thread From: Mark Hasemeyer @ 2023-12-20 23:54 UTC (permalink / raw) To: LKML Cc: AngeloGioacchino Del Regno, Krzysztof Kozlowski, Tzung-Bi Shih, Raul Rangel, Konrad Dybcio, Andy Shevchenko, Rob Herring, Sudeep Holla, Mark Hasemeyer, Andy Shevchenko, Bartosz Golaszewski, Len Brown, Linus Walleij, Mika Westerberg, Rafael J. Wysocki, Wolfram Sang, linux-acpi, linux-gpio, linux-i2c Other information besides wake capability can be provided about GPIO IRQs such as triggering, polarity, and sharability. Use resource flags to provide this information to the caller if they want it. This should keep the API more robust over time as flags are added, modified, or removed. It also more closely matches acpi_irq_get() which take a resource as an argument. Rename the function to acpi_dev_get_gpio_irq_resource() to better describe the function's new behavior. Signed-off-by: Mark Hasemeyer <markhas@chromium.org> --- Changes in v2: -Remove explicit cast to struct resource -irq -> IRQ drivers/gpio/gpiolib-acpi.c | 25 ++++++++++++++++--------- drivers/i2c/i2c-core-acpi.c | 10 ++++++++-- include/linux/acpi.h | 23 ++++++++++------------- 3 files changed, 34 insertions(+), 24 deletions(-) diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c index 88066826d8e5b..ef98b50f42f86 100644 --- a/drivers/gpio/gpiolib-acpi.c +++ b/drivers/gpio/gpiolib-acpi.c @@ -111,6 +111,7 @@ struct acpi_gpio_info { int polarity; int triggering; bool wake_capable; + bool shareable; unsigned int debounce; unsigned int quirks; }; @@ -760,6 +761,7 @@ static int acpi_populate_gpio_lookup(struct acpi_resource *ares, void *data) lookup->info.debounce = agpio->debounce_timeout; lookup->info.gpioint = gpioint; lookup->info.wake_capable = acpi_gpio_irq_is_wake(&lookup->info.adev->dev, agpio); + lookup->info.shareable = agpio->shareable == ACPI_SHARED; /* * Polarity and triggering are only specified for GpioInt @@ -1004,11 +1006,11 @@ struct gpio_desc *acpi_find_gpio(struct fwnode_handle *fwnode, } /** - * acpi_dev_gpio_irq_wake_get_by() - Find GpioInt and translate it to Linux IRQ number + * acpi_dev_get_gpio_irq_resource() - Find GpioInt and populate resource struct * @adev: pointer to a ACPI device to get IRQ from * @name: optional name of GpioInt resource * @index: index of GpioInt resource (starting from %0) - * @wake_capable: Set to true if the IRQ is wake capable + * @r: pointer to resource to populate with IRQ information. * * If the device has one or more GpioInt resources, this function can be * used to translate from the GPIO offset in the resource to the Linux IRQ @@ -1023,10 +1025,12 @@ struct gpio_desc *acpi_find_gpio(struct fwnode_handle *fwnode, * The GPIO is considered wake capable if the GpioInt resource specifies * SharedAndWake or ExclusiveAndWake. * - * Return: Linux IRQ number (> %0) on success, negative errno on failure. + * IRQ number will be available in the resource structure. + * + * Return: 0 on success, negative errno on failure. */ -int acpi_dev_gpio_irq_wake_get_by(struct acpi_device *adev, const char *name, int index, - bool *wake_capable) +int acpi_dev_get_gpio_irq_resource(struct acpi_device *adev, const char *name, int index, + struct resource *r) { int idx, i; unsigned int irq_flags; @@ -1084,16 +1088,19 @@ int acpi_dev_gpio_irq_wake_get_by(struct acpi_device *adev, const char *name, in } /* avoid suspend issues with GPIOs when systems are using S3 */ - if (wake_capable && acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0) - *wake_capable = info.wake_capable; + if (info.wake_capable && !(acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0)) + info.wake_capable = false; - return irq; + *r = DEFINE_RES_IRQ(irq); + r->flags = acpi_dev_irq_flags(info.triggering, info.polarity, + info.shareable, info.wake_capable); + return 0; } } return -ENOENT; } -EXPORT_SYMBOL_GPL(acpi_dev_gpio_irq_wake_get_by); +EXPORT_SYMBOL_GPL(acpi_dev_get_gpio_irq_resource); static acpi_status acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address, diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c index d6037a3286690..8126a87baf3d4 100644 --- a/drivers/i2c/i2c-core-acpi.c +++ b/drivers/i2c/i2c-core-acpi.c @@ -203,6 +203,7 @@ int i2c_acpi_get_irq(struct i2c_client *client, bool *wake_capable) { struct acpi_device *adev = ACPI_COMPANION(&client->dev); struct list_head resource_list; + struct resource irqres; struct i2c_acpi_irq_context irq_ctx = { .irq = -ENOENT, }; @@ -217,8 +218,13 @@ int i2c_acpi_get_irq(struct i2c_client *client, bool *wake_capable) acpi_dev_free_resource_list(&resource_list); - if (irq_ctx.irq == -ENOENT) - irq_ctx.irq = acpi_dev_gpio_irq_wake_get(adev, 0, &irq_ctx.wake_capable); + if (irq_ctx.irq == -ENOENT) { + ret = acpi_dev_get_gpio_irq_resource(adev, NULL, 0, &irqres); + if (ret) + return ret; + irq_ctx.irq = irqres.start; + irq_ctx.wake_capable = irqres.flags & IORESOURCE_IRQ_WAKECAPABLE; + } if (irq_ctx.irq < 0) return irq_ctx.irq; diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 118a18b7ff844..83aa2fa8e81fc 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -1221,8 +1221,8 @@ bool acpi_gpio_get_irq_resource(struct acpi_resource *ares, struct acpi_resource_gpio **agpio); bool acpi_gpio_get_io_resource(struct acpi_resource *ares, struct acpi_resource_gpio **agpio); -int acpi_dev_gpio_irq_wake_get_by(struct acpi_device *adev, const char *name, int index, - bool *wake_capable); +int acpi_dev_get_gpio_irq_resource(struct acpi_device *adev, const char *name, int index, + struct resource *r); #else static inline bool acpi_gpio_get_irq_resource(struct acpi_resource *ares, struct acpi_resource_gpio **agpio) @@ -1234,28 +1234,25 @@ static inline bool acpi_gpio_get_io_resource(struct acpi_resource *ares, { return false; } -static inline int acpi_dev_gpio_irq_wake_get_by(struct acpi_device *adev, const char *name, - int index, bool *wake_capable) +static inline int acpi_dev_get_gpio_irq_resource(struct acpi_device *adev, const char *name, + int index, struct resource *r) { return -ENXIO; } #endif -static inline int acpi_dev_gpio_irq_wake_get(struct acpi_device *adev, int index, - bool *wake_capable) +static inline int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, const char *name, int index) { - return acpi_dev_gpio_irq_wake_get_by(adev, NULL, index, wake_capable); -} + struct resource r; + int ret; -static inline int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, const char *name, - int index) -{ - return acpi_dev_gpio_irq_wake_get_by(adev, name, index, NULL); + ret = acpi_dev_get_gpio_irq_resource(adev, name, index, &r); + return ret ?: r.start; } static inline int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index) { - return acpi_dev_gpio_irq_wake_get_by(adev, NULL, index, NULL); + return acpi_dev_gpio_irq_get_by(adev, NULL, index); } /* Device properties */ -- 2.43.0.472.g3155946c3a-goog ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource 2023-12-20 23:54 ` [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource Mark Hasemeyer @ 2023-12-21 15:17 ` Andy Shevchenko 2023-12-23 2:05 ` kernel test robot 1 sibling, 0 replies; 8+ messages in thread From: Andy Shevchenko @ 2023-12-21 15:17 UTC (permalink / raw) To: Mark Hasemeyer Cc: LKML, AngeloGioacchino Del Regno, Krzysztof Kozlowski, Tzung-Bi Shih, Raul Rangel, Konrad Dybcio, Rob Herring, Sudeep Holla, Bartosz Golaszewski, Len Brown, Linus Walleij, Mika Westerberg, Rafael J. Wysocki, Wolfram Sang, linux-acpi, linux-gpio, linux-i2c On Wed, Dec 20, 2023 at 04:54:15PM -0700, Mark Hasemeyer wrote: > Other information besides wake capability can be provided about GPIO > IRQs such as triggering, polarity, and sharability. Use resource flags > to provide this information to the caller if they want it. > > This should keep the API more robust over time as flags are added, > modified, or removed. It also more closely matches acpi_irq_get() which > take a resource as an argument. > > Rename the function to acpi_dev_get_gpio_irq_resource() to better > describe the function's new behavior. ... > + *r = DEFINE_RES_IRQ(irq); > + r->flags = acpi_dev_irq_flags(info.triggering, info.polarity, > + info.shareable, info.wake_capable); Looking at this I am wondering if we can actually to have unsigned long irq_flags; ... irq_flags = acpi_dev_irq_flags(info.triggering, info.polarity, info.shareable, info.wake_capable); *r = DEFINE_RES_NAMED(irq, 1, NULL, irq_flags); as we don't need to duplicate IORESOURCE_IRQ. -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource 2023-12-20 23:54 ` [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource Mark Hasemeyer 2023-12-21 15:17 ` Andy Shevchenko @ 2023-12-23 2:05 ` kernel test robot 2023-12-23 3:09 ` Mark Hasemeyer 1 sibling, 1 reply; 8+ messages in thread From: kernel test robot @ 2023-12-23 2:05 UTC (permalink / raw) To: Mark Hasemeyer, LKML Cc: oe-kbuild-all, AngeloGioacchino Del Regno, Krzysztof Kozlowski, Tzung-Bi Shih, Raul Rangel, Konrad Dybcio, Andy Shevchenko, Rob Herring, Sudeep Holla, Mark Hasemeyer, Bartosz Golaszewski, Len Brown, Linus Walleij, Mika Westerberg, Rafael J. Wysocki, Wolfram Sang, linux-acpi, linux-gpio, linux-i2c Hi Mark, kernel test robot noticed the following build warnings: [auto build test WARNING on robh/for-next] [also build test WARNING on chrome-platform/for-next chrome-platform/for-firmware-next wsa/i2c/for-next driver-core/driver-core-testing driver-core/driver-core-next driver-core/driver-core-linus linus/master v6.7-rc6 next-20231222] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Mark-Hasemeyer/gpiolib-acpi-Modify-acpi_dev_irq_wake_get_by-to-use-resource/20231222-172104 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next patch link: https://lore.kernel.org/r/20231220165423.v2.1.Ifd0903f1c351e84376d71dbdadbd43931197f5ea%40changeid patch subject: [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource config: x86_64-randconfig-161-20231222 (https://download.01.org/0day-ci/archive/20231223/202312230907.szXqJyXq-lkp@intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231223/202312230907.szXqJyXq-lkp@intel.com/reproduce) 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 <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202312230907.szXqJyXq-lkp@intel.com/ All warnings (new ones prefixed by >>): >> drivers/gpio/gpiolib-acpi.c:117: warning: Function parameter or member 'shareable' not described in 'acpi_gpio_info' vim +117 drivers/gpio/gpiolib-acpi.c aa92b6f689acf1 Mika Westerberg 2014-03-10 93 b7452d670fdef8 Dmitry Torokhov 2022-11-15 94 /** b7452d670fdef8 Dmitry Torokhov 2022-11-15 95 * struct acpi_gpio_info - ACPI GPIO specific information b7452d670fdef8 Dmitry Torokhov 2022-11-15 96 * @adev: reference to ACPI device which consumes GPIO resource b7452d670fdef8 Dmitry Torokhov 2022-11-15 97 * @flags: GPIO initialization flags b7452d670fdef8 Dmitry Torokhov 2022-11-15 98 * @gpioint: if %true this GPIO is of type GpioInt otherwise type is GpioIo b7452d670fdef8 Dmitry Torokhov 2022-11-15 99 * @pin_config: pin bias as provided by ACPI b7452d670fdef8 Dmitry Torokhov 2022-11-15 100 * @polarity: interrupt polarity as provided by ACPI b7452d670fdef8 Dmitry Torokhov 2022-11-15 101 * @triggering: triggering type as provided by ACPI b7452d670fdef8 Dmitry Torokhov 2022-11-15 102 * @wake_capable: wake capability as provided by ACPI b7452d670fdef8 Dmitry Torokhov 2022-11-15 103 * @debounce: debounce timeout as provided by ACPI b7452d670fdef8 Dmitry Torokhov 2022-11-15 104 * @quirks: Linux specific quirks as provided by struct acpi_gpio_mapping b7452d670fdef8 Dmitry Torokhov 2022-11-15 105 */ b7452d670fdef8 Dmitry Torokhov 2022-11-15 106 struct acpi_gpio_info { b7452d670fdef8 Dmitry Torokhov 2022-11-15 107 struct acpi_device *adev; b7452d670fdef8 Dmitry Torokhov 2022-11-15 108 enum gpiod_flags flags; b7452d670fdef8 Dmitry Torokhov 2022-11-15 109 bool gpioint; b7452d670fdef8 Dmitry Torokhov 2022-11-15 110 int pin_config; b7452d670fdef8 Dmitry Torokhov 2022-11-15 111 int polarity; b7452d670fdef8 Dmitry Torokhov 2022-11-15 112 int triggering; b7452d670fdef8 Dmitry Torokhov 2022-11-15 113 bool wake_capable; 189f4620fa2d51 Mark Hasemeyer 2023-12-20 114 bool shareable; b7452d670fdef8 Dmitry Torokhov 2022-11-15 115 unsigned int debounce; b7452d670fdef8 Dmitry Torokhov 2022-11-15 116 unsigned int quirks; b7452d670fdef8 Dmitry Torokhov 2022-11-15 @117 }; b7452d670fdef8 Dmitry Torokhov 2022-11-15 118 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource 2023-12-23 2:05 ` kernel test robot @ 2023-12-23 3:09 ` Mark Hasemeyer 0 siblings, 0 replies; 8+ messages in thread From: Mark Hasemeyer @ 2023-12-23 3:09 UTC (permalink / raw) To: kernel test robot Cc: LKML, oe-kbuild-all, AngeloGioacchino Del Regno, Krzysztof Kozlowski, Tzung-Bi Shih, Raul Rangel, Konrad Dybcio, Andy Shevchenko, Rob Herring, Sudeep Holla, Bartosz Golaszewski, Len Brown, Linus Walleij, Mika Westerberg, Rafael J. Wysocki, Wolfram Sang, linux-acpi, linux-gpio, linux-i2c On Fri, Dec 22, 2023 at 7:09 PM kernel test robot <lkp@intel.com> wrote: > > Hi Mark, > > kernel test robot noticed the following build warnings: > > [auto build test WARNING on robh/for-next] > [also build test WARNING on chrome-platform/for-next chrome-platform/for-firmware-next wsa/i2c/for-next driver-core/driver-core-testing driver-core/driver-core-next driver-core/driver-core-linus linus/master v6.7-rc6 next-20231222] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch#_base_tree_information] > > url: https://github.com/intel-lab-lkp/linux/commits/Mark-Hasemeyer/gpiolib-acpi-Modify-acpi_dev_irq_wake_get_by-to-use-resource/20231222-172104 > base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next > patch link: https://lore.kernel.org/r/20231220165423.v2.1.Ifd0903f1c351e84376d71dbdadbd43931197f5ea%40changeid > patch subject: [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource > config: x86_64-randconfig-161-20231222 (https://download.01.org/0day-ci/archive/20231223/202312230907.szXqJyXq-lkp@intel.com/config) > compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231223/202312230907.szXqJyXq-lkp@intel.com/reproduce) > > 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 <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202312230907.szXqJyXq-lkp@intel.com/ > > All warnings (new ones prefixed by >>): > > >> drivers/gpio/gpiolib-acpi.c:117: warning: Function parameter or member 'shareable' not described in 'acpi_gpio_info' > > > vim +117 drivers/gpio/gpiolib-acpi.c > > aa92b6f689acf1 Mika Westerberg 2014-03-10 93 > b7452d670fdef8 Dmitry Torokhov 2022-11-15 94 /** > b7452d670fdef8 Dmitry Torokhov 2022-11-15 95 * struct acpi_gpio_info - ACPI GPIO specific information > b7452d670fdef8 Dmitry Torokhov 2022-11-15 96 * @adev: reference to ACPI device which consumes GPIO resource > b7452d670fdef8 Dmitry Torokhov 2022-11-15 97 * @flags: GPIO initialization flags > b7452d670fdef8 Dmitry Torokhov 2022-11-15 98 * @gpioint: if %true this GPIO is of type GpioInt otherwise type is GpioIo > b7452d670fdef8 Dmitry Torokhov 2022-11-15 99 * @pin_config: pin bias as provided by ACPI > b7452d670fdef8 Dmitry Torokhov 2022-11-15 100 * @polarity: interrupt polarity as provided by ACPI > b7452d670fdef8 Dmitry Torokhov 2022-11-15 101 * @triggering: triggering type as provided by ACPI > b7452d670fdef8 Dmitry Torokhov 2022-11-15 102 * @wake_capable: wake capability as provided by ACPI > b7452d670fdef8 Dmitry Torokhov 2022-11-15 103 * @debounce: debounce timeout as provided by ACPI > b7452d670fdef8 Dmitry Torokhov 2022-11-15 104 * @quirks: Linux specific quirks as provided by struct acpi_gpio_mapping > b7452d670fdef8 Dmitry Torokhov 2022-11-15 105 */ > b7452d670fdef8 Dmitry Torokhov 2022-11-15 106 struct acpi_gpio_info { > b7452d670fdef8 Dmitry Torokhov 2022-11-15 107 struct acpi_device *adev; > b7452d670fdef8 Dmitry Torokhov 2022-11-15 108 enum gpiod_flags flags; > b7452d670fdef8 Dmitry Torokhov 2022-11-15 109 bool gpioint; > b7452d670fdef8 Dmitry Torokhov 2022-11-15 110 int pin_config; > b7452d670fdef8 Dmitry Torokhov 2022-11-15 111 int polarity; > b7452d670fdef8 Dmitry Torokhov 2022-11-15 112 int triggering; > b7452d670fdef8 Dmitry Torokhov 2022-11-15 113 bool wake_capable; > 189f4620fa2d51 Mark Hasemeyer 2023-12-20 114 bool shareable; > b7452d670fdef8 Dmitry Torokhov 2022-11-15 115 unsigned int debounce; > b7452d670fdef8 Dmitry Torokhov 2022-11-15 116 unsigned int quirks; > b7452d670fdef8 Dmitry Torokhov 2022-11-15 @117 }; > b7452d670fdef8 Dmitry Torokhov 2022-11-15 118 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki Ack. Missing documentation for acpi_gpio_info.shareable member. Will add in next version. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it 2023-12-20 23:54 [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it Mark Hasemeyer 2023-12-20 23:54 ` [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource Mark Hasemeyer @ 2023-12-21 13:42 ` Andy Shevchenko 2023-12-22 22:30 ` Mark Hasemeyer 1 sibling, 1 reply; 8+ messages in thread From: Andy Shevchenko @ 2023-12-21 13:42 UTC (permalink / raw) To: Mark Hasemeyer Cc: LKML, chrome-platform, cros-qcom-dts-watchers, devicetree, linux-acpi, linux-arm-kernel, linux-arm-msm, linux-gpio, linux-i2c, linux-mediatek, linux-rockchip, linux-samsung-soc, linux-tegra On Wed, Dec 20, 2023 at 04:54:14PM -0700, Mark Hasemeyer wrote: > Currently the cros_ec driver assumes that its associated interrupt is > wake capable. This is an incorrect assumption as some Chromebooks use a > separate wake pin, while others overload the interrupt for wake and IO. > This patch train updates the driver to query the underlying ACPI/DT data > to determine whether or not the IRQ should be enabled for wake. > > Both the device tree and ACPI systems have methods for reporting IRQ > wake capability. In device tree based systems, a node can advertise > itself as a 'wakeup-source'. In ACPI based systems, GpioInt and > Interrupt resource descriptors can use the 'SharedAndWake' or > 'ExclusiveAndWake' share types. > > Some logic is added to the platform, ACPI, and DT subsystems to more > easily pipe wakeirq information up to the driver. Just wondering if you used --histogram diff algo when preparing patches. -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it 2023-12-21 13:42 ` [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it Andy Shevchenko @ 2023-12-22 22:30 ` Mark Hasemeyer 2023-12-27 16:01 ` Andy Shevchenko 0 siblings, 1 reply; 8+ messages in thread From: Mark Hasemeyer @ 2023-12-22 22:30 UTC (permalink / raw) To: Andy Shevchenko Cc: LKML, chrome-platform, cros-qcom-dts-watchers, devicetree, linux-acpi, linux-arm-kernel, linux-arm-msm, linux-gpio, linux-i2c, linux-mediatek, linux-rockchip, linux-samsung-soc, linux-tegra > Just wondering if you used --histogram diff algo when preparing patches. Not knowingly. I use patman which uses 'git format-patch' under the covers with some added options: https://github.com/siemens/u-boot/blob/master/tools/patman/gitutil.py#L308 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it 2023-12-22 22:30 ` Mark Hasemeyer @ 2023-12-27 16:01 ` Andy Shevchenko 0 siblings, 0 replies; 8+ messages in thread From: Andy Shevchenko @ 2023-12-27 16:01 UTC (permalink / raw) To: Mark Hasemeyer Cc: LKML, chrome-platform, cros-qcom-dts-watchers, devicetree, linux-acpi, linux-arm-kernel, linux-arm-msm, linux-gpio, linux-i2c, linux-mediatek, linux-rockchip, linux-samsung-soc, linux-tegra On Fri, Dec 22, 2023 at 03:30:43PM -0700, Mark Hasemeyer wrote: > > Just wondering if you used --histogram diff algo when preparing patches. > > Not knowingly. I use patman which uses 'git format-patch' under the > covers with some added options: > https://github.com/siemens/u-boot/blob/master/tools/patman/gitutil.py#L308 Add a configuration into your ~/.gitconfig (or local for the project), it really makes the difference. -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-12-27 16:01 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-12-20 23:54 [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it Mark Hasemeyer 2023-12-20 23:54 ` [PATCH v2 01/22] gpiolib: acpi: Modify acpi_dev_irq_wake_get_by() to use resource Mark Hasemeyer 2023-12-21 15:17 ` Andy Shevchenko 2023-12-23 2:05 ` kernel test robot 2023-12-23 3:09 ` Mark Hasemeyer 2023-12-21 13:42 ` [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it Andy Shevchenko 2023-12-22 22:30 ` Mark Hasemeyer 2023-12-27 16:01 ` Andy Shevchenko
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).