Linux-OMAP Archive on lore.kernel.org
 help / color / Atom feed
From: Drew Fustini <drew@beagleboard.org>
To: "Linus Walleij" <linus.walleij@linaro.org>,
	"Grygorii Strashko" <grygorii.strashko@ti.com>,
	"Benoît Cousson" <bcousson@baylibre.com>,
	"Tony Lindgren" <tony@atomide.com>,
	"Rob Herring" <robh+dt@kernel.org>,
	Linux-OMAP <linux-omap@vger.kernel.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Jason Kridner" <jkridner@beagleboard.org>,
	"Robert Nelson" <robertcnelson@beagleboard.org>
Subject: Re: [PATCH v2] arm: dts: am335x-boneblack: add gpio-line-names
Date: Thu, 28 May 2020 15:16:20 +0200
Message-ID: <20200528131620.GA3126290@x1> (raw)
In-Reply-To: <20200521200926.GC429020@x1>

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@beagleboard.org>
> Reviewed-by: Robert Nelson <robertcnelson@gmail.com>
> Signed-off-by: Drew Fustini <drew@beagleboard.org>
> ---
> 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@mail.gmail.com/

  reply index

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-21 20:09 Drew Fustini
2020-05-28 13:16 ` Drew Fustini [this message]
2020-05-29 17:21   ` Tony Lindgren
2020-06-29 17:14     ` Tony Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200528131620.GA3126290@x1 \
    --to=drew@beagleboard.org \
    --cc=bcousson@baylibre.com \
    --cc=devicetree@vger.kernel.org \
    --cc=grygorii.strashko@ti.com \
    --cc=jkridner@beagleboard.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=robertcnelson@beagleboard.org \
    --cc=robh+dt@kernel.org \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-OMAP Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-omap/0 linux-omap/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-omap linux-omap/ https://lore.kernel.org/linux-omap \
		linux-omap@vger.kernel.org
	public-inbox-index linux-omap

Example config snippet for mirrors

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


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