2020-11-15 22:57:19

by Michael Klein

[permalink] [raw]
Subject: [PATCH] ARM: dts: sun8i-h2-plus-bananapi-m2-zero: add gpio-line-names

Add gpio-line-names as documented in the Banana Pi wiki [1] and in the
schematics [2].

[1]: http://wiki.banana-pi.org/Banana_Pi_BPI-M2_ZERO#GPIO_PIN_define
[2]: https://drive.google.com/file/d/0B4PAo2nW2KfnMW5sVkxWSW9qa28/view

Signed-off-by: Michael Klein <[email protected]>
---
.../dts/sun8i-h2-plus-bananapi-m2-zero.dts | 64 +++++++++++++++++++
1 file changed, 64 insertions(+)

diff --git a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
index 4c6704e4c57e..b4ddfaf01b45 100644
--- a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
+++ b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
@@ -136,6 +136,70 @@ bluetooth {

};

+&pio {
+ gpio-line-names =
+ /* PA */
+ "UART2-TX", "UART2-RX", "UART2-RTS", "UART2-CTS",
+ "UART0-TXD", "UART0-RXD", "PWM1", "PA7-EINT7",
+ "PA8-EINT8", "PA9-EINT9", "PA10-EINT10", "TWI0-SCK",
+ "TWI0-SDA", "UART3-TX", "UART3-RX", "UART3-RTS",
+ "UART3-CTS", "PA17-EINT17", "TWI1-SCK", "TWI1-SDA",
+ "PA20-EINT20", "PA21-EINT21", "", "",
+ "", "", "", "", "", "", "", "",
+
+ /* PB */
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+
+ /* PC */
+ "SPI0-MOSI", "SPI0-MISO", "SPI0-CLK", "SPI0-CS", "PC4", "", "",
+ "PC7",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+
+ /* PD */
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "CSI-PWR-EN", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+
+ /* PE */
+ "CSI0-PCLK", "CSI0-MCLK", "CSI0-HSYNC", "CSI0-VSYNC",
+ "CSI0-D0", "CSI0-D1", "CSI0-D2", "CSI0-D3",
+ "CSI0-D4", "CSI0-D5", "CSI0-D6", "CSI0-D7",
+ "CSI0-SCK", "CSI0-SDA", "CSI0-RST#", "CSI0-PWDN",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+
+ /* PF */
+ "SDC0-D1", "SDC0-D0", "SDC0-CLK", "SDC0-CMD", "SDC0-D3",
+ "SDC0-D2", "SDC0-DET", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+
+ /* PG */
+ "WL-SDIO-CLK", "WL-SDIO-CMD", "WL-SDIO-D0", "WL-SDIO-D1",
+ "WL-SDIO-D2", "WL-SDIO-D3", "UART1-TX", "UART1-RX",
+ "UART1-RTS", "UART1-CTS", "WL-WAKE-AP", "BT-WAKE-AP",
+ "BT-RST-N", "AP-WAKE-BT", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "";
+};
+
+&r_pio {
+ gpio-line-names =
+ /* PL */
+ "", "CPUX-SET", "PL2-S-EINT2", "POWER-KEY", "PL4-S-EINT4",
+ "VCC-IO-EN", "USB0-ID", "WIFI-EN",
+ "PWR-STB", "PWR-DRAM", "PWR-LED", "IR-RX", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "";
+};
+
&usb_otg {
dr_mode = "otg";
status = "okay";
--
2.28.0


2020-11-20 15:56:05

by Maxime Ripard

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: sun8i-h2-plus-bananapi-m2-zero: add gpio-line-names

Hi!

On Sun, Nov 15, 2020 at 11:24:25PM +0100, Michael Klein wrote:
> Add gpio-line-names as documented in the Banana Pi wiki [1] and in the
> schematics [2].
>
> [1]: http://wiki.banana-pi.org/Banana_Pi_BPI-M2_ZERO#GPIO_PIN_define
> [2]: https://drive.google.com/file/d/0B4PAo2nW2KfnMW5sVkxWSW9qa28/view
>
> Signed-off-by: Michael Klein <[email protected]>
> ---
> .../dts/sun8i-h2-plus-bananapi-m2-zero.dts | 64 +++++++++++++++++++
> 1 file changed, 64 insertions(+)
>
> diff --git a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
> index 4c6704e4c57e..b4ddfaf01b45 100644
> --- a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
> +++ b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
> @@ -136,6 +136,70 @@ bluetooth {
>
> };
>
> +&pio {
> + gpio-line-names =
> + /* PA */
> + "UART2-TX", "UART2-RX", "UART2-RTS", "UART2-CTS",
> + "UART0-TXD", "UART0-RXD", "PWM1", "PA7-EINT7",
> + "PA8-EINT8", "PA9-EINT9", "PA10-EINT10", "TWI0-SCK",
> + "TWI0-SDA", "UART3-TX", "UART3-RX", "UART3-RTS",
> + "UART3-CTS", "PA17-EINT17", "TWI1-SCK", "TWI1-SDA",
> + "PA20-EINT20", "PA21-EINT21", "", "",
> + "", "", "", "", "", "", "", "",

IIRC, the point is to have the pin names that the vendor publishes.

Looking at Documentation/devicetree/bindings/gpio/gpio.txt, it says:

"""
Optionally, a GPIO controller may have a "gpio-line-names" property. This is
an array of strings defining the names of the GPIO lines going out of the
GPIO controller. This name should be the most meaningful producer name
for the system, such as a rail name indicating the usage. Package names
such as pin name are discouraged: such lines have opaque names (since they
are by definition generic purpose) and such names are usually not very
helpful.
"""

In this case, from the link you gave above, I think having the CON*-P*
names make more sense.

Maxime


Attachments:
(No filename) (1.93 kB)
signature.asc (235.00 B)
Download all attachments

2020-11-20 18:36:25

by Michael Klein

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: sun8i-h2-plus-bananapi-m2-zero: add gpio-line-names

Thank you for having a look at the patch!

On Fri, Nov 20, 2020 at 04:52:52PM +0100, Maxime Ripard wrote:
>On Sun, Nov 15, 2020 at 11:24:25PM +0100, Michael Klein wrote:
>> Add gpio-line-names as documented in the Banana Pi wiki [1] and in the
>> schematics [2].
>>
>> [1]: http://wiki.banana-pi.org/Banana_Pi_BPI-M2_ZERO#GPIO_PIN_define
>> [2]: https://drive.google.com/file/d/0B4PAo2nW2KfnMW5sVkxWSW9qa28/view
>>
>> Signed-off-by: Michael Klein <[email protected]>
>> ---
>> .../dts/sun8i-h2-plus-bananapi-m2-zero.dts | 64 +++++++++++++++++++
>> 1 file changed, 64 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
>> index 4c6704e4c57e..b4ddfaf01b45 100644
>> --- a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
>> +++ b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
>> @@ -136,6 +136,70 @@ bluetooth {
>>
>> };
>>
>> +&pio {
>> + gpio-line-names =
>> + /* PA */
>> + "UART2-TX", "UART2-RX", "UART2-RTS", "UART2-CTS",
>> + "UART0-TXD", "UART0-RXD", "PWM1", "PA7-EINT7",
>> + "PA8-EINT8", "PA9-EINT9", "PA10-EINT10", "TWI0-SCK",
>> + "TWI0-SDA", "UART3-TX", "UART3-RX", "UART3-RTS",
>> + "UART3-CTS", "PA17-EINT17", "TWI1-SCK", "TWI1-SDA",
>> + "PA20-EINT20", "PA21-EINT21", "", "",
>> + "", "", "", "", "", "", "", "",
>
>IIRC, the point is to have the pin names that the vendor publishes.
>
>Looking at Documentation/devicetree/bindings/gpio/gpio.txt, it says:
>
>"""
>Optionally, a GPIO controller may have a "gpio-line-names" property. This is
>an array of strings defining the names of the GPIO lines going out of the
>GPIO controller. This name should be the most meaningful producer name
>for the system, such as a rail name indicating the usage. Package names
>such as pin name are discouraged: such lines have opaque names (since they
>are by definition generic purpose) and such names are usually not very
>helpful.
>"""
>
>In this case, from the link you gave above, I think having the CON*-P*
>names make more sense.

Hm, but these are the pin names (of the connector) and should thus not
be used, right?

For e.g. the PA0 pin, the wiki link gives three candidates:

- CON2-P13 (GPIO Pin Name -> pin 13 of the 40 pin GPIO header)
- UART2-TX (Default Function)
- PA0-EINT0 (Function2 : GPIO)

IMHO, the CON*-P* name is the least helpful of the above, as it tells
nothing about the usage. I'm not sure about the other two names, though.

Michael

2020-11-23 05:27:02

by Chen-Yu Tsai

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: sun8i-h2-plus-bananapi-m2-zero: add gpio-line-names

On Sat, Nov 21, 2020 at 2:28 AM Michael Klein <[email protected]> wrote:
>
> Thank you for having a look at the patch!
>
> On Fri, Nov 20, 2020 at 04:52:52PM +0100, Maxime Ripard wrote:
> >On Sun, Nov 15, 2020 at 11:24:25PM +0100, Michael Klein wrote:
> >> Add gpio-line-names as documented in the Banana Pi wiki [1] and in the
> >> schematics [2].
> >>
> >> [1]: http://wiki.banana-pi.org/Banana_Pi_BPI-M2_ZERO#GPIO_PIN_define
> >> [2]: https://drive.google.com/file/d/0B4PAo2nW2KfnMW5sVkxWSW9qa28/view
> >>
> >> Signed-off-by: Michael Klein <[email protected]>
> >> ---
> >> .../dts/sun8i-h2-plus-bananapi-m2-zero.dts | 64 +++++++++++++++++++
> >> 1 file changed, 64 insertions(+)
> >>
> >> diff --git a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
> >> index 4c6704e4c57e..b4ddfaf01b45 100644
> >> --- a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
> >> +++ b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
> >> @@ -136,6 +136,70 @@ bluetooth {
> >>
> >> };
> >>
> >> +&pio {
> >> + gpio-line-names =
> >> + /* PA */
> >> + "UART2-TX", "UART2-RX", "UART2-RTS", "UART2-CTS",
> >> + "UART0-TXD", "UART0-RXD", "PWM1", "PA7-EINT7",
> >> + "PA8-EINT8", "PA9-EINT9", "PA10-EINT10", "TWI0-SCK",
> >> + "TWI0-SDA", "UART3-TX", "UART3-RX", "UART3-RTS",
> >> + "UART3-CTS", "PA17-EINT17", "TWI1-SCK", "TWI1-SDA",
> >> + "PA20-EINT20", "PA21-EINT21", "", "",
> >> + "", "", "", "", "", "", "", "",
> >
> >IIRC, the point is to have the pin names that the vendor publishes.
> >
> >Looking at Documentation/devicetree/bindings/gpio/gpio.txt, it says:
> >
> >"""
> >Optionally, a GPIO controller may have a "gpio-line-names" property. This is
> >an array of strings defining the names of the GPIO lines going out of the
> >GPIO controller. This name should be the most meaningful producer name
> >for the system, such as a rail name indicating the usage. Package names
> >such as pin name are discouraged: such lines have opaque names (since they
> >are by definition generic purpose) and such names are usually not very
> >helpful.
> >"""
> >
> >In this case, from the link you gave above, I think having the CON*-P*
> >names make more sense.
>
> Hm, but these are the pin names (of the connector) and should thus not
> be used, right?
>
> For e.g. the PA0 pin, the wiki link gives three candidates:
>
> - CON2-P13 (GPIO Pin Name -> pin 13 of the 40 pin GPIO header)
> - UART2-TX (Default Function)
> - PA0-EINT0 (Function2 : GPIO)
>
> IMHO, the CON*-P* name is the least helpful of the above, as it tells
> nothing about the usage. I'm not sure about the other two names, though.

I believe the function names are pretty useless in this case, as you
cannot use the GPIO subsystem to mux functions. That is what pinctrl
does. And in our case, the pinctrl drivers already know all the
available functions each pin has.

Using the pin count and connector name provides the user direct mapping
of the software representation of the pin against the actual pin on the
hardware. The user can then proceed to request and use that pin.

Again, you can not request "functions" from userspace, only GPIO usage.

Also using "one" function name creates confusion if the same function
is available on multiple pins.

ChenYu


> Michael
>
> _______________________________________________
> linux-arm-kernel mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

2020-11-23 23:23:49

by Michael Klein

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: sun8i-h2-plus-bananapi-m2-zero: add gpio-line-names

On Mon, Nov 23, 2020 at 12:39:07PM +0800, Chen-Yu Tsai wrote:
>On Sat, Nov 21, 2020 at 2:28 AM Michael Klein <[email protected]> wrote:
>>
>> Thank you for having a look at the patch!
>>
>> On Fri, Nov 20, 2020 at 04:52:52PM +0100, Maxime Ripard wrote:
>> >On Sun, Nov 15, 2020 at 11:24:25PM +0100, Michael Klein wrote:
>> >> Add gpio-line-names as documented in the Banana Pi wiki [1] and in the
>> >> schematics [2].
>> >>
>> >> [1]: http://wiki.banana-pi.org/Banana_Pi_BPI-M2_ZERO#GPIO_PIN_define
>> >> [2]: https://drive.google.com/file/d/0B4PAo2nW2KfnMW5sVkxWSW9qa28/view
>> >>
>> >> Signed-off-by: Michael Klein <[email protected]>
>> >> ---
>> >> .../dts/sun8i-h2-plus-bananapi-m2-zero.dts | 64 +++++++++++++++++++
>> >> 1 file changed, 64 insertions(+)
>> >>
>> >> diff --git a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
>> >> index 4c6704e4c57e..b4ddfaf01b45 100644
>> >> --- a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
>> >> +++ b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
>> >> @@ -136,6 +136,70 @@ bluetooth {
>> >>
>> >> };
>> >>
>> >> +&pio {
>> >> + gpio-line-names =
>> >> + /* PA */
>> >> + "UART2-TX", "UART2-RX", "UART2-RTS", "UART2-CTS",
>> >> + "UART0-TXD", "UART0-RXD", "PWM1", "PA7-EINT7",
>> >> + "PA8-EINT8", "PA9-EINT9", "PA10-EINT10", "TWI0-SCK",
>> >> + "TWI0-SDA", "UART3-TX", "UART3-RX", "UART3-RTS",
>> >> + "UART3-CTS", "PA17-EINT17", "TWI1-SCK", "TWI1-SDA",
>> >> + "PA20-EINT20", "PA21-EINT21", "", "",
>> >> + "", "", "", "", "", "", "", "",
>> >
>> >IIRC, the point is to have the pin names that the vendor publishes.
>> >
>> >Looking at Documentation/devicetree/bindings/gpio/gpio.txt, it says:
>> >
>> >"""
>> >Optionally, a GPIO controller may have a "gpio-line-names" property. This is
>> >an array of strings defining the names of the GPIO lines going out of the
>> >GPIO controller. This name should be the most meaningful producer name
>> >for the system, such as a rail name indicating the usage. Package names
>> >such as pin name are discouraged: such lines have opaque names (since they
>> >are by definition generic purpose) and such names are usually not very
>> >helpful.
>> >"""
>> >
>> >In this case, from the link you gave above, I think having the CON*-P*
>> >names make more sense.
>>
>> Hm, but these are the pin names (of the connector) and should thus not
>> be used, right?
>>
>> For e.g. the PA0 pin, the wiki link gives three candidates:
>>
>> - CON2-P13 (GPIO Pin Name -> pin 13 of the 40 pin GPIO header)
>> - UART2-TX (Default Function)
>> - PA0-EINT0 (Function2 : GPIO)
>>
>> IMHO, the CON*-P* name is the least helpful of the above, as it tells
>> nothing about the usage. I'm not sure about the other two names, though.
>
>I believe the function names are pretty useless in this case, as you
>cannot use the GPIO subsystem to mux functions. That is what pinctrl
>does. And in our case, the pinctrl drivers already know all the
>available functions each pin has.
>
>Using the pin count and connector name provides the user direct mapping
>of the software representation of the pin against the actual pin on the
>hardware. The user can then proceed to request and use that pin.

Thank you for the explanation, that makes sense. I'll update the patch
then.

Michael