Re: [PATCH v2] arm: dts: am335x-boneblack: add gpio-line-names

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 21, 2020 at 10:09:26PM +0200, Drew Fustini wrote:
> The BeagleBone Black has P8 and P9 headers [0] which expose many of the
> AM3358 ZCZ SoC balls to stacking expansion boards called "capes", or to
> other external connections like jumper wires connected to a breadboard.
> BeagleBone users will often refer to the "Cape Exanpsion Headers" pin
> diagram [1] as it is in the "Bone101" getting started tutorial. [2]
> 
> Most of the P8 and P9 header pins can muxed to a GPIO line.  The
> gpio-line-names describe which P8 or P9 pin that line goes to and the
> default mux for that P8 or P9 pin if it is not GPIO.
> 
> For example, gpiochip 1 line 0 is connected to P8 header pin 25 (P8_25)
> however the default device tree has the corresponding BGA ball (ZCZ U7)
> muxed to mmc1_dat0 as it is used for the on-board eMMC chip.  For that
> GPIO line to be used, one would need to modify the device tree to
> disable the eMMC and change the pin mux for that ball to GPIO mode.
> 
> Some of the AM3358 ZCZ balls corresponding to GPIO lines are not routed
> to a P8 or P9 header, but are instead wired to some peripheral device
> like on-board eMMC, HDMI framer IC, or status LEDs.  Those names are in
> brackets to denote those GPIO lines can not be used.
> 
> Some GPIO lines are named "[NC]" as the corresponding balls are not
> routed to anything on the PCB.
> 
> The goal for these names is to make it easier for a user viewing the
> output of gpioinfo to determine which P8 or P9 pin is connected to a
> GPIO line.  The output of gpioinfo on a BeagleBone Black would be:
> 
> gpiochip0 - 32 lines:
> 	line   0: "[ethernet]"       unused   input  active-high 
> 	line   1: "[ethernet]"       unused   input  active-high 
> 	line   2: "P9_22 [spi0_sclk]" unused input active-high 
> 	line   3: "P9_21 [spi0_d0]" unused input active-high 
> 	line   4: "P9_18 [spi0_d1]" unused input active-high 
> 	line   5: "P9_17 [spi0_cs0]" unused input active-high 
> 	line   6:  "[sd card]"         "cd"   input   active-low [used]
> 	line   7: "P9_42A [ecappwm0]" unused input active-high 
> 	line   8: "P8_35 [hdmi]" unused input active-high 
> 	line   9: "P8_33 [hdmi]" unused input active-high 
> 	line  10: "P8_31 [hdmi]" unused input active-high 
> 	line  11: "P8_32 [hdmi]" unused input active-high 
> 	line  12: "P9_20 [i2c2_sda]" unused input active-high 
> 	line  13: "P9_19 [i2c2_scl]" unused input active-high 
> 	line  14: "P9_26 [uart1_rxd]" unused input active-high 
> 	line  15: "P9_24 [uart1_txd]" unused input active-high 
> 	line  16: "[ethernet]"       unused   input  active-high 
> 	line  17: "[ethernet]"       unused   input  active-high 
> 	line  18:      "[usb]"       unused   input  active-high 
> 	line  19:     "[hdmi]"       unused   input  active-high 
> 	line  20:     "P9_41B"       unused   input  active-high 
> 	line  21: "[ethernet]"       unused   input  active-high 
> 	line  22: "P8_19 [ehrpwm2a]" unused input active-high 
> 	line  23: "P8_13 [ehrpwm2b]" unused input active-high 
> 	line  24:       "[NC]"       unused   input  active-high 
> 	line  25:       "[NC]"       unused   input  active-high 
> 	line  26:      "P8_14"       unused   input  active-high 
> 	line  27:      "P8_17"       unused   input  active-high 
> 	line  28: "[ethernet]"       unused   input  active-high 
> 	line  29: "[ethernet]"       unused   input  active-high 
> 	line  30: "P9_11 [uart4_rxd]" unused input active-high 
> 	line  31: "P9_13 [uart4_txd]" unused input active-high 
> gpiochip1 - 32 lines:
> 	line   0: "P8_25 [emmc]" unused input active-high 
> 	line   1:     "[emmc]"       unused   input  active-high 
> 	line   2: "P8_5 [emmc]" unused input active-high 
> 	line   3: "P8_6 [emmc]" unused input active-high 
> 	line   4: "P8_23 [emmc]" unused input active-high 
> 	line   5: "P8_22 [emmc]" unused input active-high 
> 	line   6: "P8_3 [emmc]" unused input active-high 
> 	line   7: "P8_4 [emmc]" unused input active-high 
> 	line   8:       "[NC]"       unused   input  active-high 
> 	line   9:       "[NC]"       unused   input  active-high 
> 	line  10:       "[NC]"       unused   input  active-high 
> 	line  11:       "[NC]"       unused   input  active-high 
> 	line  12:      "P8_12"       unused   input  active-high 
> 	line  13:      "P8_11"       unused   input  active-high 
> 	line  14:      "P8_16"       unused   input  active-high 
> 	line  15:      "P8_15"       unused   input  active-high 
> 	line  16:     "P9_15A"       unused   input  active-high 
> 	line  17:      "P9_23"       unused   input  active-high 
> 	line  18: "P9_14 [ehrpwm1a]" unused input active-high 
> 	line  19: "P9_16 [ehrpwm1b]" unused input active-high 
> 	line  20:     "[emmc]"       unused   input  active-high 
> 	line  21: "[usr0 led]" "beaglebone:green:heartbeat" output active-high [used]
> 	line  22: "[usr1 led]" "beaglebone:green:mmc0" output active-high [used]
> 	line  23: "[usr2 led]" "beaglebone:green:usr2" output active-high [used]
> 	line  24: "[usr3 led]" "beaglebone:green:usr3" output active-high [used]
> 	line  25:     "[hdmi]"  "interrupt"   input  active-high [used]
> 	line  26:      "[usb]"       unused   input  active-high 
> 	line  27: "[hdmi audio]" "enable" output active-high [used]
> 	line  28:      "P9_12"       unused   input  active-high 
> 	line  29:      "P8_26"       unused   input  active-high 
> 	line  30: "P8_21 [emmc]" unused input active-high 
> 	line  31: "P8_20 [emmc]" unused input active-high 
> gpiochip2 - 32 lines:
> 	line   0:     "P9_15B"       unused   input  active-high 
> 	line   1:      "P8_18"       unused   input  active-high 
> 	line   2:       "P8_7"       unused   input  active-high 
> 	line   3:       "P8_8"       unused   input  active-high 
> 	line   4:      "P8_10"       unused   input  active-high 
> 	line   5:       "P8_9"       unused   input  active-high 
> 	line   6: "P8_45 [hdmi]" unused input active-high 
> 	line   7: "P8_46 [hdmi]" unused input active-high 
> 	line   8: "P8_43 [hdmi]" unused input active-high 
> 	line   9: "P8_44 [hdmi]" unused input active-high 
> 	line  10: "P8_41 [hdmi]" unused input active-high 
> 	line  11: "P8_42 [hdmi]" unused input active-high 
> 	line  12: "P8_39 [hdmi]" unused input active-high 
> 	line  13: "P8_40 [hdmi]" unused input active-high 
> 	line  14: "P8_37 [hdmi]" unused input active-high 
> 	line  15: "P8_38 [hdmi]" unused input active-high 
> 	line  16: "P8_36 [hdmi]" unused input active-high 
> 	line  17: "P8_34 [hdmi]" unused input active-high 
> 	line  18: "[ethernet]"       unused   input  active-high 
> 	line  19: "[ethernet]"       unused   input  active-high 
> 	line  20: "[ethernet]"       unused   input  active-high 
> 	line  21: "[ethernet]"       unused   input  active-high 
> 	line  22: "P8_27 [hdmi]" unused input active-high 
> 	line  23: "P8_29 [hdmi]" unused input active-high 
> 	line  24: "P8_28 [hdmi]" unused input active-high 
> 	line  25: "P8_30 [hdmi]" unused input active-high 
> 	line  26:     "[emmc]"       unused   input  active-high 
> 	line  27:     "[emmc]"       unused   input  active-high 
> 	line  28:     "[emmc]"       unused   input  active-high 
> 	line  29:     "[emmc]"       unused   input  active-high 
> 	line  30:     "[emmc]"       unused   input  active-high 
> 	line  31:     "[emmc]"       unused   input  active-high 
> gpiochip3 - 32 lines:
> 	line   0: "[ethernet]"       unused   input  active-high 
> 	line   1: "[ethernet]"       unused   input  active-high 
> 	line   2: "[ethernet]"       unused   input  active-high 
> 	line   3: "[ethernet]"       unused   input  active-high 
> 	line   4: "[ethernet]"       unused   input  active-high 
> 	line   5:     "[i2c0]"       unused   input  active-high 
> 	line   6:     "[i2c0]"       unused   input  active-high 
> 	line   7:      "[emu]"       unused   input  active-high 
> 	line   8:      "[emu]"       unused   input  active-high 
> 	line   9: "[ethernet]"       unused   input  active-high 
> 	line  10: "[ethernet]"       unused   input  active-high 
> 	line  11:       "[NC]"       unused   input  active-high 
> 	line  12:       "[NC]"       unused   input  active-high 
> 	line  13:      "[usb]"       unused   input  active-high 
> 	line  14: "P9_31 [spi1_sclk]" unused input active-high 
> 	line  15: "P9_29 [spi1_d0]" unused input active-high 
> 	line  16: "P9_30 [spi1_d1]" unused input active-high 
> 	line  17: "P9_28 [spi1_cs0]" unused input active-high 
> 	line  18: "P9_42B [ecappwm0]" unused input active-high 
> 	line  19:      "P9_27"       unused   input  active-high 
> 	line  20:     "P9_41A"       unused   input  active-high 
> 	line  21:      "P9_25"       unused   input  active-high 
> 	line  22:       "[NC]"       unused   input  active-high 
> 	line  23:       "[NC]"       unused   input  active-high 
> 	line  24:       "[NC]"       unused   input  active-high 
> 	line  25:       "[NC]"       unused   input  active-high 
> 	line  26:       "[NC]"       unused   input  active-high 
> 	line  27:       "[NC]"       unused   input  active-high 
> 	line  28:       "[NC]"       unused   input  active-high 
> 	line  29:       "[NC]"       unused   input  active-high 
> 	line  30:       "[NC]"       unused   input  active-high 
> 	line  31:       "[NC]"       unused   input  active-high 
> 
> [0] https://git.io/JfgOd
> [1] https://beagleboard.org/capes
> [1] https://beagleboard.org/Support/bone101
> [2] https://beagleboard.org/static/images/cape-headers.png
> 
> Reviewed-by: Jason Kridner <jason@xxxxxxxxxxxxxxx>
> Reviewed-by: Robert Nelson <robertcnelson@xxxxxxxxx>
> Signed-off-by: Drew Fustini <drew@xxxxxxxxxxxxxxx>
> ---
> V2 change:
> - include output of gpioinfo to illustrate how the gpio-line-names
> will appear. My apologies for forgetting to include in V1.
> 
> V1 note:
> I had posted a patch with these line names for am335x-bone-common.dtsi
> but Grygorii Strashko pointed out that the names are not applicable to
> all BeagleBone models.  Thus I have created this patch to add these
> names just for the BeagleBone Black.
> 
>  arch/arm/boot/dts/am335x-boneblack.dts | 144 +++++++++++++++++++++++++
>  1 file changed, 144 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/am335x-boneblack.dts b/arch/arm/boot/dts/am335x-boneblack.dts
> index d3928662aed4..5f31e832eb82 100644
> --- a/arch/arm/boot/dts/am335x-boneblack.dts
> +++ b/arch/arm/boot/dts/am335x-boneblack.dts
> @@ -23,3 +23,147 @@ oppnitro-1000000000 {
>  		opp-supported-hw = <0x06 0x0100>;
>  	};
>  };
> +
> +&gpio0 {
> +	gpio-line-names =
> +		"[ethernet]",
> +		"[ethernet]",
> +		"P9_22 [spi0_sclk]",
> +		"P9_21 [spi0_d0]",
> +		"P9_18 [spi0_d1]",
> +		"P9_17 [spi0_cs0]",
> +		"[sd card]",
> +		"P9_42A [ecappwm0]",
> +		"P8_35 [hdmi]",
> +		"P8_33 [hdmi]",
> +		"P8_31 [hdmi]",
> +		"P8_32 [hdmi]",
> +		"P9_20 [i2c2_sda]",
> +		"P9_19 [i2c2_scl]",
> +		"P9_26 [uart1_rxd]",
> +		"P9_24 [uart1_txd]",
> +		"[ethernet]",
> +		"[ethernet]",
> +		"[usb]",
> +		"[hdmi]",
> +		"P9_41B",
> +		"[ethernet]",
> +		"P8_19 [ehrpwm2a]",
> +		"P8_13 [ehrpwm2b]",
> +		"[NC]",
> +		"[NC]",
> +		"P8_14",
> +		"P8_17",
> +		"[ethernet]",
> +		"[ethernet]",
> +		"P9_11 [uart4_rxd]",
> +		"P9_13 [uart4_txd]";
> +};
> +
> +&gpio1 {
> +	gpio-line-names =
> +		"P8_25 [emmc]",
> +		"[emmc]",
> +		"P8_5 [emmc]",
> +		"P8_6 [emmc]",
> +		"P8_23 [emmc]",
> +		"P8_22 [emmc]",
> +		"P8_3 [emmc]",
> +		"P8_4 [emmc]",
> +		"[NC]",
> +		"[NC]",
> +		"[NC]",
> +		"[NC]",
> +		"P8_12",
> +		"P8_11",
> +		"P8_16",
> +		"P8_15",
> +		"P9_15A",
> +		"P9_23",
> +		"P9_14 [ehrpwm1a]",
> +		"P9_16 [ehrpwm1b]",
> +		"[emmc]",
> +		"[usr0 led]",
> +		"[usr1 led]",
> +		"[usr2 led]",
> +		"[usr3 led]",
> +		"[hdmi]",
> +		"[usb]",
> +		"[hdmi audio]",
> +		"P9_12",
> +		"P8_26",
> +		"P8_21 [emmc]",
> +		"P8_20 [emmc]";
> +};
> +
> +&gpio2 {
> +	gpio-line-names =
> +		"P9_15B",
> +		"P8_18",
> +		"P8_7",
> +		"P8_8",
> +		"P8_10",
> +		"P8_9",
> +		"P8_45 [hdmi]",
> +		"P8_46 [hdmi]",
> +		"P8_43 [hdmi]",
> +		"P8_44 [hdmi]",
> +		"P8_41 [hdmi]",
> +		"P8_42 [hdmi]",
> +		"P8_39 [hdmi]",
> +		"P8_40 [hdmi]",
> +		"P8_37 [hdmi]",
> +		"P8_38 [hdmi]",
> +		"P8_36 [hdmi]",
> +		"P8_34 [hdmi]",
> +		"[ethernet]",
> +		"[ethernet]",
> +		"[ethernet]",
> +		"[ethernet]",
> +		"P8_27 [hdmi]",
> +		"P8_29 [hdmi]",
> +		"P8_28 [hdmi]",
> +		"P8_30 [hdmi]",
> +		"[emmc]",
> +		"[emmc]",
> +		"[emmc]",
> +		"[emmc]",
> +		"[emmc]",
> +		"[emmc]";
> +};
> +
> +&gpio3 {
> +	gpio-line-names =
> +		"[ethernet]",
> +		"[ethernet]",
> +		"[ethernet]",
> +		"[ethernet]",
> +		"[ethernet]",
> +		"[i2c0]",
> +		"[i2c0]",
> +		"[emu]",
> +		"[emu]",
> +		"[ethernet]",
> +		"[ethernet]",
> +		"[NC]",
> +		"[NC]",
> +		"[usb]",
> +		"P9_31 [spi1_sclk]",
> +		"P9_29 [spi1_d0]",
> +		"P9_30 [spi1_d1]",
> +		"P9_28 [spi1_cs0]",
> +		"P9_42B [ecappwm0]",
> +		"P9_27",
> +		"P9_41A",
> +		"P9_25",
> +		"[NC]",
> +		"[NC]",
> +		"[NC]",
> +		"[NC]",
> +		"[NC]",
> +		"[NC]",
> +		"[NC]",
> +		"[NC]",
> +		"[NC]",
> +		"[NC]";
> +};
> -- 
> 2.25.1
> 


FYI - Linus W. provided an Acked-by in related thread [0].

Anyone else have any review comments?

thank you,
drew

[0] https://lore.kernel.org/linux-devicetree/CACRpkdZLRjcE0FGwVR-Q7a50aEmpB=xO4q6H8_EaV199fGr0OA@xxxxxxxxxxxxxx/



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux