[PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it

Mark Hasemeyer posted 22 patches 9 months ago
There is a newer version of this series
.../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(-)
[PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it
Posted by Mark Hasemeyer 9 months ago
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
Re: [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it
Posted by Andy Shevchenko 9 months ago
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
Re: [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it
Posted by Mark Hasemeyer 9 months ago
> 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
Re: [PATCH v2 00/22] Improve IRQ wake capability reporting and update the cros_ec driver to use it
Posted by Andy Shevchenko 8 months, 3 weeks ago
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