[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240112163608.528453-1-krzysztof.kozlowski@linaro.org>
Date: Fri, 12 Jan 2024 17:36:03 +0100
From: Krzysztof Kozlowski <krzysztof.kozlowski@...aro.org>
To: Bjorn Andersson <andersson@...nel.org>,
Konrad Dybcio <konrad.dybcio@...aro.org>,
Srinivas Kandagatla <srinivas.kandagatla@...aro.org>,
Banajit Goswami <bgoswami@...cinc.com>,
Liam Girdwood <lgirdwood@...il.com>,
Mark Brown <broonie@...nel.org>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Conor Dooley <conor+dt@...nel.org>,
Peter Rosin <peda@...ntia.se>,
Philipp Zabel <p.zabel@...gutronix.de>,
Jaroslav Kysela <perex@...ex.cz>,
Takashi Iwai <tiwai@...e.com>,
linux-arm-msm@...r.kernel.org,
alsa-devel@...a-project.org,
linux-sound@...r.kernel.org,
devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org,
linux-i2c@...r.kernel.org
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@...aro.org>,
Chris Packham <chris.packham@...iedtelesis.co.nz>,
Bartosz Golaszewski <brgl@...ev.pl>,
Sean Anderson <sean.anderson@...o.com>
Subject: [PATCH v3 0/5] reset: gpio: ASoC: shared GPIO resets
Hi,
Changes in v3
=============
1. reset-gpio.c:
- Add reset_gpio_of_xlate (Philipp).
- reset_gpio_of_args_put->reset_gpio_of_node_put (Philipp).
- Expect via platdata of_phandle_args.
- Do not call device_set_node() to attach itself to reset consumer
(the final device). This was questionable idea in the first place.
Bartosz suggested to use GPIO_LOOKUP to solve this.
2. reset/core.c, implement Philipp's feedback. That was a lot:
- Commit msg fixes.
- Add new platform_device earlier, when reset core found "reset-gpios" but
not "resets".
- Do not overwrite of_phandle_args.
- Expect matching .of_reset_n_cells.
- Pass of_phandle_args as platdata to reset-gpio.
- Rename reset_gpio_device->reset_gpio_lookup and others. Fix few comments
and code cleanup pointed on review.
- From Bartosz:
Use GPIO_LOOKUP and a lot of cleanup.h in __reset_add_reset_gpio_lookup().
3. Include here Chris' patch: "i2c: muxes: pca954x: Allow sharing reset GPIO".
Changes in v2
=============
1. wsa884x.c: add missing return in wsa884x_get_reset(), correct comment.
2. qcom,wsa8840.yaml: fix oneOf syntax.
3. reset-gpio.c:
- Fix smatch warning on platdata evaluation.
- Parse GPIO args and store them in rc.of_args.
4. reset/core.c:
- Revise approach based on Bartosz comments: parse the reset-gpios phandle
with arguments, do not use deprecated API and do not rely on gpio_desc
pointer.
- Create a list of instantiated platform devices to avoid any duplicates.
- After creating reset-gpio platform device, try to get new reset controller
or return EPROBE_DEFER.
- Drop the "cookie" member and add new "of_args" to "struct
reset_controller_dev".
Description
===========
We have at least few cases where hardware engineers decided to use one
powerdown/shutdown/reset GPIO line for multiple devices:
1. WSA884x (this and previous patch):
https://lore.kernel.org/all/b7aeda24-d638-45b7-8e30-80d287f498f8@sirena.org.uk/
2. https://lore.kernel.org/all/20231027033104.1348921-1-chris.packham@alliedtelesis.co.nz/
3. https://lore.kernel.org/lkml/20191030120440.3699-1-peter.ujfalusi@ti.com/
4. https://lore.kernel.org/all/20211018234923.1769028-1-sean.anderson@seco.com/
5. https://social.treehouse.systems/@marcan/111268780311634160
I try to solve my case, hopefuly Chris' (2), partially Sean's (4) and maybe
Hectors (5), using Rob's suggestion:
https://lore.kernel.org/all/YXi5CUCEi7YmNxXM@robh.at.kernel.org/
Best regards,
Krzysztof
Cc: Chris Packham <chris.packham@...iedtelesis.co.nz>
Cc: Bartosz Golaszewski <brgl@...ev.pl>
Cc: Sean Anderson <sean.anderson@...o.com>
Chris Packham (1):
i2c: muxes: pca954x: Allow sharing reset GPIO
Krzysztof Kozlowski (4):
reset: gpio: Add GPIO-based reset controller
reset: Instantiate reset GPIO controller for shared reset-gpios
ASoC: dt-bindings: qcom,wsa8840: Add reset-gpios for shared line
ASoC: codecs: wsa884x: Allow sharing reset GPIO
.../bindings/sound/qcom,wsa8840.yaml | 11 +-
MAINTAINERS | 5 +
drivers/i2c/muxes/i2c-mux-pca954x.c | 46 +++-
drivers/reset/Kconfig | 9 +
drivers/reset/Makefile | 1 +
drivers/reset/core.c | 227 ++++++++++++++++--
drivers/reset/reset-gpio.c | 121 ++++++++++
include/linux/reset-controller.h | 4 +
sound/soc/codecs/wsa884x.c | 53 +++-
9 files changed, 444 insertions(+), 33 deletions(-)
create mode 100644 drivers/reset/reset-gpio.c
--
2.34.1
Powered by blists - more mailing lists