Linux-GPIO Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2
@ 2020-06-22 17:29 Drew Fustini
  2020-06-22 17:29 ` [PATCH v3 1/3] pinctrl: single: parse " Drew Fustini
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Drew Fustini @ 2020-06-22 17:29 UTC (permalink / raw)
  To: Tony Lindgren, Rob Herring, linux-omap, linux-kernel, linux-gpio,
	linux-arm-kernel, Linus Walleij, Haojian Zhuang, devicetree,
	bcousson, Jason Kridner, Robert Nelson
  Cc: Drew Fustini

Currently, pinctrl-single only allows #pinctrl-cells = 1.

This series will allow pinctrl-single to also support #pinctrl-cells = 2

If "pinctrl-single,pins" has 3 arguments (offset, conf, mux) then
pcs_parse_one_pinctrl_entry() does an OR operation on to get the
value to store in the register.
    
To take advantage of #pinctrl-cells = 2, the AM33XX_PADCONF macro in
omap.h is modified to keep pin conf and pin mux values separate.

change log:
- v3: change order of patches to make sure the pinctrl-single.c patch
  does not break anything without the dts patches

- v2: remove outer parentheses from AM33XX_PADCONF macro as it causes a
  compile error in dtc.  I had added it per suggestion from checkpatch
  about having parentheses around complex values.

Drew Fustini (3):
  pinctrl: single: parse #pinctrl-cells = 2
  ARM: dts: change AM33XX_PADCONF macro separate conf and mux
  ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2

 arch/arm/boot/dts/am33xx-l4.dtsi   |  2 +-
 drivers/pinctrl/pinctrl-single.c   | 11 +++++++++--
 include/dt-bindings/pinctrl/omap.h |  2 +-
 3 files changed, 11 insertions(+), 4 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 1/3] pinctrl: single: parse #pinctrl-cells = 2
  2020-06-22 17:29 [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
@ 2020-06-22 17:29 ` Drew Fustini
  2020-06-22 17:29 ` [PATCH v3 2/3] ARM: dts: change AM33XX_PADCONF macro separate conf and mux Drew Fustini
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Drew Fustini @ 2020-06-22 17:29 UTC (permalink / raw)
  To: Tony Lindgren, Rob Herring, linux-omap, linux-kernel, linux-gpio,
	linux-arm-kernel, Linus Walleij, Haojian Zhuang, devicetree,
	bcousson, Jason Kridner, Robert Nelson
  Cc: Drew Fustini

If "pinctrl-single,pins" has 3 arguments (offset, conf, mux) then
pcs_parse_one_pinctrl_entry() does an OR operation on to get the
value to store in the register.

Signed-off-by: Drew Fustini <drew@beagleboard.org>
---
 drivers/pinctrl/pinctrl-single.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index a9d511982780..17b32cafe5f0 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -1017,10 +1017,17 @@ static int pcs_parse_one_pinctrl_entry(struct pcs_device *pcs,
 			break;
 		}
 
-		/* Index plus one value cell */
 		offset = pinctrl_spec.args[0];
 		vals[found].reg = pcs->base + offset;
-		vals[found].val = pinctrl_spec.args[1];
+
+		switch (pinctrl_spec.args_count) {
+		case 2:
+			vals[found].val = pinctrl_spec.args[1];
+			break;
+		case 3:
+			vals[found].val = (pinctrl_spec.args[1] | pinctrl_spec.args[2]);
+			break;
+		}
 
 		dev_dbg(pcs->dev, "%pOFn index: 0x%x value: 0x%x\n",
 			pinctrl_spec.np, offset, pinctrl_spec.args[1]);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 2/3] ARM: dts: change AM33XX_PADCONF macro separate conf and mux
  2020-06-22 17:29 [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
  2020-06-22 17:29 ` [PATCH v3 1/3] pinctrl: single: parse " Drew Fustini
@ 2020-06-22 17:29 ` Drew Fustini
  2020-06-22 17:29 ` [PATCH v3 3/3] ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2 Drew Fustini
  2020-06-29 12:28 ` [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
  3 siblings, 0 replies; 6+ messages in thread
From: Drew Fustini @ 2020-06-22 17:29 UTC (permalink / raw)
  To: Tony Lindgren, Rob Herring, linux-omap, linux-kernel, linux-gpio,
	linux-arm-kernel, Linus Walleij, Haojian Zhuang, devicetree,
	bcousson, Jason Kridner, Robert Nelson
  Cc: Drew Fustini

AM33XX_PADCONF macro is modified to keep pin conf and pin mux separate.

This requires #pinctrl-cells = 2 in am33xx-l4.dtsi

pinctrl-single.c but also be changed to support "pinctrl-single,pins"
with 3 arguments (offset, conf, mux)

Signed-off-by: Drew Fustini <drew@beagleboard.org>
---
 include/dt-bindings/pinctrl/omap.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/dt-bindings/pinctrl/omap.h b/include/dt-bindings/pinctrl/omap.h
index 625718042413..2d2a8c737822 100644
--- a/include/dt-bindings/pinctrl/omap.h
+++ b/include/dt-bindings/pinctrl/omap.h
@@ -65,7 +65,7 @@
 #define DM814X_IOPAD(pa, val)		OMAP_IOPAD_OFFSET((pa), 0x0800) (val)
 #define DM816X_IOPAD(pa, val)		OMAP_IOPAD_OFFSET((pa), 0x0800) (val)
 #define AM33XX_IOPAD(pa, val)		OMAP_IOPAD_OFFSET((pa), 0x0800) (val)
-#define AM33XX_PADCONF(pa, dir, mux)	OMAP_IOPAD_OFFSET((pa), 0x0800) ((dir) | (mux))
+#define AM33XX_PADCONF(pa, conf, mux)	OMAP_IOPAD_OFFSET((pa), 0x0800) (conf) (mux)
 
 /*
  * Macros to allow using the offset from the padconf physical address
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 3/3] ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2
  2020-06-22 17:29 [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
  2020-06-22 17:29 ` [PATCH v3 1/3] pinctrl: single: parse " Drew Fustini
  2020-06-22 17:29 ` [PATCH v3 2/3] ARM: dts: change AM33XX_PADCONF macro separate conf and mux Drew Fustini
@ 2020-06-22 17:29 ` Drew Fustini
  2020-06-29 12:28 ` [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
  3 siblings, 0 replies; 6+ messages in thread
From: Drew Fustini @ 2020-06-22 17:29 UTC (permalink / raw)
  To: Tony Lindgren, Rob Herring, linux-omap, linux-kernel, linux-gpio,
	linux-arm-kernel, Linus Walleij, Haojian Zhuang, devicetree,
	bcousson, Jason Kridner, Robert Nelson
  Cc: Drew Fustini

This requires AM33XX_PADCONF macro in omap.h to be modified to keep pin
conf and pin mux values separate.

pinctrl-single.c must also be changed to support "pinctrl-single,pins"
with 3 arguments (offset, conf, mux).

Signed-off-by: Drew Fustini <drew@beagleboard.org>
---
 arch/arm/boot/dts/am33xx-l4.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
index 7ff11d6bf0f2..dafd6e8b42a1 100644
--- a/arch/arm/boot/dts/am33xx-l4.dtsi
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -278,7 +278,7 @@ scm: scm@0 {
 				am33xx_pinmux: pinmux@800 {
 					compatible = "pinctrl-single";
 					reg = <0x800 0x238>;
-					#pinctrl-cells = <1>;
+					#pinctrl-cells = <2>;
 					pinctrl-single,register-width = <32>;
 					pinctrl-single,function-mask = <0x7f>;
 				};
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2
  2020-06-22 17:29 [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
                   ` (2 preceding siblings ...)
  2020-06-22 17:29 ` [PATCH v3 3/3] ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2 Drew Fustini
@ 2020-06-29 12:28 ` Drew Fustini
  2020-06-29 16:31   ` Tony Lindgren
  3 siblings, 1 reply; 6+ messages in thread
From: Drew Fustini @ 2020-06-29 12:28 UTC (permalink / raw)
  To: Tony Lindgren, Rob Herring, linux-omap, linux-kernel, linux-gpio,
	linux-arm-kernel, Linus Walleij, Haojian Zhuang, devicetree,
	bcousson, Jason Kridner, Robert Nelson

On Mon, Jun 22, 2020 at 07:29:48PM +0200, Drew Fustini wrote:
> Currently, pinctrl-single only allows #pinctrl-cells = 1.
> 
> This series will allow pinctrl-single to also support #pinctrl-cells = 2
> 
> If "pinctrl-single,pins" has 3 arguments (offset, conf, mux) then
> pcs_parse_one_pinctrl_entry() does an OR operation on to get the
> value to store in the register.
>     
> To take advantage of #pinctrl-cells = 2, the AM33XX_PADCONF macro in
> omap.h is modified to keep pin conf and pin mux values separate.
> 
> change log:
> - v3: change order of patches to make sure the pinctrl-single.c patch
>   does not break anything without the dts patches
> 
> - v2: remove outer parentheses from AM33XX_PADCONF macro as it causes a
>   compile error in dtc.  I had added it per suggestion from checkpatch
>   about having parentheses around complex values.
> 
> Drew Fustini (3):
>   pinctrl: single: parse #pinctrl-cells = 2
>   ARM: dts: change AM33XX_PADCONF macro separate conf and mux
>   ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2
> 
>  arch/arm/boot/dts/am33xx-l4.dtsi   |  2 +-
>  drivers/pinctrl/pinctrl-single.c   | 11 +++++++++--
>  include/dt-bindings/pinctrl/omap.h |  2 +-
>  3 files changed, 11 insertions(+), 4 deletions(-)
> 
> -- 
> 2.25.1
> 

Hi Tony - do you think this series is useful as-is?

Or do you want to see some usage of the seperate conf and mux values
first?

thanks,
drew

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2
  2020-06-29 12:28 ` [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
@ 2020-06-29 16:31   ` Tony Lindgren
  0 siblings, 0 replies; 6+ messages in thread
From: Tony Lindgren @ 2020-06-29 16:31 UTC (permalink / raw)
  To: Drew Fustini
  Cc: Rob Herring, linux-omap, linux-kernel, linux-gpio,
	linux-arm-kernel, Linus Walleij, Haojian Zhuang, devicetree,
	bcousson, Jason Kridner, Robert Nelson

* Drew Fustini <drew@beagleboard.org> [200629 12:29]:
> Hi Tony - do you think this series is useful as-is?
> 
> Or do you want to see some usage of the seperate conf and mux values
> first?

Hmm to me it seems you should squash patches 2 and 3 together as
otherwise git bisect will fail to boot probably at patch 2.

Regards,

Tony

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-22 17:29 [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
2020-06-22 17:29 ` [PATCH v3 1/3] pinctrl: single: parse " Drew Fustini
2020-06-22 17:29 ` [PATCH v3 2/3] ARM: dts: change AM33XX_PADCONF macro separate conf and mux Drew Fustini
2020-06-22 17:29 ` [PATCH v3 3/3] ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2 Drew Fustini
2020-06-29 12:28 ` [PATCH v3 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
2020-06-29 16:31   ` Tony Lindgren

Linux-GPIO Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-gpio/0 linux-gpio/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-gpio linux-gpio/ https://lore.kernel.org/linux-gpio \
		linux-gpio@vger.kernel.org
	public-inbox-index linux-gpio

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-gpio


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git