* [PATCH v2 0/3] pinctrl: single: support #pinctrl-cells = 2
@ 2020-06-19 9:06 Drew Fustini
2020-06-19 9:06 ` [PATCH v2 1/3] ARM: dts: change AM33XX_PADCONF macro separate conf and mux Drew Fustini
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Drew Fustini @ 2020-06-19 9:06 UTC (permalink / raw)
To: Tony Lindgren, Rob Herring, linux-omap, linux-kernel, linux-gpio,
linux-arm-kernel, Linus Walleij, Haojian Zhuang, devicetree,
Benoît Cousson, 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.
v2 changes:
- 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):
ARM: dts: change AM33XX_PADCONF macro separate conf and mux
ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2
pinctrl: single: parse #pinctrl-cells = 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] 4+ messages in thread
* [PATCH v2 1/3] ARM: dts: change AM33XX_PADCONF macro separate conf and mux
2020-06-19 9:06 [PATCH v2 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
@ 2020-06-19 9:06 ` Drew Fustini
2020-06-19 9:06 ` [PATCH v2 2/3] ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2 Drew Fustini
2020-06-19 9:06 ` [PATCH v2 3/3] pinctrl: single: parse #pinctrl-cells = 2 Drew Fustini
2 siblings, 0 replies; 4+ messages in thread
From: Drew Fustini @ 2020-06-19 9:06 UTC (permalink / raw)
To: Tony Lindgren, Rob Herring, linux-omap, linux-kernel, linux-gpio,
linux-arm-kernel, Linus Walleij, Haojian Zhuang, devicetree,
Benoît Cousson, 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>
---
v2 change:
- 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.
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 related [flat|nested] 4+ messages in thread
* [PATCH v2 2/3] ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2
2020-06-19 9:06 [PATCH v2 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
2020-06-19 9:06 ` [PATCH v2 1/3] ARM: dts: change AM33XX_PADCONF macro separate conf and mux Drew Fustini
@ 2020-06-19 9:06 ` Drew Fustini
2020-06-19 9:06 ` [PATCH v2 3/3] pinctrl: single: parse #pinctrl-cells = 2 Drew Fustini
2 siblings, 0 replies; 4+ messages in thread
From: Drew Fustini @ 2020-06-19 9:06 UTC (permalink / raw)
To: Tony Lindgren, Rob Herring, linux-omap, linux-kernel, linux-gpio,
linux-arm-kernel, Linus Walleij, Haojian Zhuang, devicetree,
Benoît Cousson, 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 340ea331e54d..f9b99cfa93b6 100644
--- a/arch/arm/boot/dts/am33xx-l4.dtsi
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -290,7 +290,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 related [flat|nested] 4+ messages in thread
* [PATCH v2 3/3] pinctrl: single: parse #pinctrl-cells = 2
2020-06-19 9:06 [PATCH v2 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
2020-06-19 9:06 ` [PATCH v2 1/3] ARM: dts: change AM33XX_PADCONF macro separate conf and mux Drew Fustini
2020-06-19 9:06 ` [PATCH v2 2/3] ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2 Drew Fustini
@ 2020-06-19 9:06 ` Drew Fustini
2 siblings, 0 replies; 4+ messages in thread
From: Drew Fustini @ 2020-06-19 9:06 UTC (permalink / raw)
To: Tony Lindgren, Rob Herring, linux-omap, linux-kernel, linux-gpio,
linux-arm-kernel, Linus Walleij, Haojian Zhuang, devicetree,
Benoît Cousson, 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 02f677eb1d53..e6d1cf25782c 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 related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-06-19 9:07 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-19 9:06 [PATCH v2 0/3] pinctrl: single: support #pinctrl-cells = 2 Drew Fustini
2020-06-19 9:06 ` [PATCH v2 1/3] ARM: dts: change AM33XX_PADCONF macro separate conf and mux Drew Fustini
2020-06-19 9:06 ` [PATCH v2 2/3] ARM: dts: am33xx-l4: change #pinctrl-cells from 1 to 2 Drew Fustini
2020-06-19 9:06 ` [PATCH v2 3/3] pinctrl: single: parse #pinctrl-cells = 2 Drew Fustini
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).