* [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. [not found] <1456266111-2508-1-git-send-email-eric@anholt.net> @ 2016-02-23 22:21 ` Eric Anholt 0 siblings, 0 replies; 18+ messages in thread From: Eric Anholt @ 2016-02-23 22:21 UTC (permalink / raw) To: linux-rpi-kernel Cc: linux-arm-kernel, linux-kernel, Stephen Warren, Lee Jones, Florian Fainelli, Eric Anholt Since all of these pins were documented, we can use their names to explain what's going on. Signed-off-by: Eric Anholt <eric@anholt.net> --- arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-a.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-b.dts | 10 +++++++++- arch/arm/boot/dts/bcm2835-rpi.dtsi | 5 ----- arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 17 ++++++++++------- 7 files changed, 59 insertions(+), 41 deletions(-) diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts index 228614f..0a8b92e 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts @@ -21,11 +21,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; - - /* I2S interface */ - i2s_alt0: i2s_alt0 { - brcm,pins = <18 19 20 21>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio18 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts index ddbbbbd..d093407 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-a.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts @@ -14,11 +14,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>; - - /* I2S interface */ - i2s_alt2: i2s_alt2 { - brcm,pins = <28 29 30 31>; - brcm,function = <BCM2835_FSEL_ALT2>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio28 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts index ef54050..c26b81d 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts @@ -21,11 +21,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; - - /* I2S interface */ - i2s_alt0: i2s_alt0 { - brcm,pins = <18 19 20 21>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio18 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts index 86f1f2f..a5b606e 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts @@ -14,11 +14,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>; - - /* I2S interface */ - i2s_alt2: i2s_alt2 { - brcm,pins = <28 29 30 31>; - brcm,function = <BCM2835_FSEL_ALT2>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio28 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts index 4859e9d..97e3c2f 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts @@ -14,5 +14,13 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &alt3>; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi index 76bdbca..141b18c 100644 --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi @@ -37,11 +37,6 @@ brcm,function = <BCM2835_FSEL_GPIO_OUT>; }; - alt0: alt0 { - brcm,pins = <0 1 2 3 4 5 7 8 9 10 11 14 15 40 45>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; - alt3: alt3 { brcm,pins = <48 49 50 51 52 53>; brcm,function = <BCM2835_FSEL_ALT3>; diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts index ff94666..52798ca 100644 --- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts +++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts @@ -25,11 +25,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; - - /* I2S interface */ - i2s_alt0: i2s_alt0 { - brcm,pins = <18 19 20 21>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio18 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; -- 2.7.0 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. @ 2016-02-23 22:21 ` Eric Anholt 0 siblings, 0 replies; 18+ messages in thread From: Eric Anholt @ 2016-02-23 22:21 UTC (permalink / raw) To: linux-arm-kernel Since all of these pins were documented, we can use their names to explain what's going on. Signed-off-by: Eric Anholt <eric@anholt.net> --- arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-a.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-b.dts | 10 +++++++++- arch/arm/boot/dts/bcm2835-rpi.dtsi | 5 ----- arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 17 ++++++++++------- 7 files changed, 59 insertions(+), 41 deletions(-) diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts index 228614f..0a8b92e 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts @@ -21,11 +21,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; - - /* I2S interface */ - i2s_alt0: i2s_alt0 { - brcm,pins = <18 19 20 21>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio18 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts index ddbbbbd..d093407 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-a.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts @@ -14,11 +14,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>; - - /* I2S interface */ - i2s_alt2: i2s_alt2 { - brcm,pins = <28 29 30 31>; - brcm,function = <BCM2835_FSEL_ALT2>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio28 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts index ef54050..c26b81d 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts @@ -21,11 +21,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; - - /* I2S interface */ - i2s_alt0: i2s_alt0 { - brcm,pins = <18 19 20 21>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio18 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts index 86f1f2f..a5b606e 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts @@ -14,11 +14,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>; - - /* I2S interface */ - i2s_alt2: i2s_alt2 { - brcm,pins = <28 29 30 31>; - brcm,function = <BCM2835_FSEL_ALT2>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio28 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts index 4859e9d..97e3c2f 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts @@ -14,5 +14,13 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &alt3>; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi index 76bdbca..141b18c 100644 --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi @@ -37,11 +37,6 @@ brcm,function = <BCM2835_FSEL_GPIO_OUT>; }; - alt0: alt0 { - brcm,pins = <0 1 2 3 4 5 7 8 9 10 11 14 15 40 45>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; - alt3: alt3 { brcm,pins = <48 49 50 51 52 53>; brcm,function = <BCM2835_FSEL_ALT3>; diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts index ff94666..52798ca 100644 --- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts +++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts @@ -25,11 +25,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; - - /* I2S interface */ - i2s_alt0: i2s_alt0 { - brcm,pins = <18 19 20 21>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio18 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; -- 2.7.0 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. 2016-02-23 22:21 ` Eric Anholt @ 2016-02-24 17:11 ` Stephen Warren -1 siblings, 0 replies; 18+ messages in thread From: Stephen Warren @ 2016-02-24 17:11 UTC (permalink / raw) To: Eric Anholt Cc: linux-rpi-kernel, linux-arm-kernel, linux-kernel, Lee Jones, Florian Fainelli On 02/23/2016 03:21 PM, Eric Anholt wrote: > Since all of these pins were documented, we can use their names to > explain what's going on. I only received patch 2/5, and e.g. the spinics.net email archive seems to be in the same boat. ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. @ 2016-02-24 17:11 ` Stephen Warren 0 siblings, 0 replies; 18+ messages in thread From: Stephen Warren @ 2016-02-24 17:11 UTC (permalink / raw) To: linux-arm-kernel On 02/23/2016 03:21 PM, Eric Anholt wrote: > Since all of these pins were documented, we can use their names to > explain what's going on. I only received patch 2/5, and e.g. the spinics.net email archive seems to be in the same boat. ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 0/5] BCM2835 pinctrl DT rework (resend) @ 2016-02-26 18:19 Eric Anholt 2016-02-26 18:19 ` [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups Eric Anholt 0 siblings, 1 reply; 18+ messages in thread From: Eric Anholt @ 2016-02-26 18:19 UTC (permalink / raw) To: linux-rpi-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Stephen Warren, Lee Jones, Florian Fainelli, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree-u79uwXL29TY76Z2rM5mHXA, Linus Walleij, linux-gpio-u79uwXL29TY76Z2rM5mHXA, Stefan Wahren, Eric Anholt Here's a series for cleaning up the pinctrl groups on BCM2835 (Raspberry Pi). This was partially inspired by Stefan Wahren's patches for the EMMC SDHCI controller, but really triggered by needing to switch pinmuxes to enable the SDHOST SD controller (which gives me a 60% read speed improvement). Patches for adding that driver will follow. I think this is more or less how pinctrl is expected to be used for a platform like this. It certainly cleans up the board files. This is a resend because only 3 came through last time. My former SMTP relay decided to start rejecting half my mails this week. I've now swapped systems. Eric Anholt (5): ARM: bcm2835: Define standard pinctrl groups in the gpio node. ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. ARM: bcm2835: Move the emmc pin group to bcm283x.dtsi. ARM: bcm2835: Add a group for mapping pins 48-53 to sdhost. ARM: bcm2835: Move most RPi default pin groups to their devices. arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 11 +- arch/arm/boot/dts/bcm2835-rpi-a.dts | 11 +- arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 11 +- arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 11 +- arch/arm/boot/dts/bcm2835-rpi-b.dts | 4 - arch/arm/boot/dts/bcm2835-rpi.dtsi | 30 ++++-- arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 11 +- arch/arm/boot/dts/bcm283x.dtsi | 178 +++++++++++++++++++++++++++++++ 8 files changed, 213 insertions(+), 54 deletions(-) -- 2.7.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. 2016-02-26 18:19 [PATCH 0/5] BCM2835 pinctrl DT rework (resend) Eric Anholt @ 2016-02-26 18:19 ` Eric Anholt 2016-03-03 21:26 ` Stephen Warren 2016-03-08 8:24 ` Linus Walleij 0 siblings, 2 replies; 18+ messages in thread From: Eric Anholt @ 2016-02-26 18:19 UTC (permalink / raw) To: linux-rpi-kernel Cc: linux-arm-kernel, linux-kernel, Stephen Warren, Lee Jones, Florian Fainelli, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree, Linus Walleij, linux-gpio, Stefan Wahren, Eric Anholt Since all of these pins were documented, we can use their names to explain what's going on. Signed-off-by: Eric Anholt <eric@anholt.net> --- arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-a.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 17 ++++++++++------- arch/arm/boot/dts/bcm2835-rpi-b.dts | 10 +++++++++- arch/arm/boot/dts/bcm2835-rpi.dtsi | 5 ----- arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 17 ++++++++++------- 7 files changed, 59 insertions(+), 41 deletions(-) diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts index 228614f..0a8b92e 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts @@ -21,11 +21,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; - - /* I2S interface */ - i2s_alt0: i2s_alt0 { - brcm,pins = <18 19 20 21>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio18 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts index ddbbbbd..d093407 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-a.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts @@ -14,11 +14,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>; - - /* I2S interface */ - i2s_alt2: i2s_alt2 { - brcm,pins = <28 29 30 31>; - brcm,function = <BCM2835_FSEL_ALT2>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio28 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts index ef54050..c26b81d 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts @@ -21,11 +21,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; - - /* I2S interface */ - i2s_alt0: i2s_alt0 { - brcm,pins = <18 19 20 21>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio18 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts index 86f1f2f..a5b606e 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts @@ -14,11 +14,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>; - - /* I2S interface */ - i2s_alt2: i2s_alt2 { - brcm,pins = <28 29 30 31>; - brcm,function = <BCM2835_FSEL_ALT2>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio28 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts index 4859e9d..97e3c2f 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts @@ -14,5 +14,13 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &alt3>; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi index 76bdbca..141b18c 100644 --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi @@ -37,11 +37,6 @@ brcm,function = <BCM2835_FSEL_GPIO_OUT>; }; - alt0: alt0 { - brcm,pins = <0 1 2 3 4 5 7 8 9 10 11 14 15 40 45>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; - alt3: alt3 { brcm,pins = <48 49 50 51 52 53>; brcm,function = <BCM2835_FSEL_ALT3>; diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts index ff94666..52798ca 100644 --- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts +++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts @@ -25,11 +25,14 @@ }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; - - /* I2S interface */ - i2s_alt0: i2s_alt0 { - brcm,pins = <18 19 20 21>; - brcm,function = <BCM2835_FSEL_ALT0>; - }; + pinctrl-0 = <&i2c0_gpio0 + &i2c1_gpio2 + &gpclk0_gpio4 + &gpclk1_gpio5 + &spi0_gpio7 + &pcm_gpio18 + &pwm0_gpio40 + &pwm1_gpio45 + &gpioout + &alt3>; }; -- 2.7.0 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. 2016-02-26 18:19 ` [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups Eric Anholt @ 2016-03-03 21:26 ` Stephen Warren 2016-03-08 8:24 ` Linus Walleij 1 sibling, 0 replies; 18+ messages in thread From: Stephen Warren @ 2016-03-03 21:26 UTC (permalink / raw) To: Eric Anholt Cc: linux-rpi-kernel, linux-arm-kernel, linux-kernel, Lee Jones, Florian Fainelli, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree, Linus Walleij, linux-gpio, Stefan Wahren On 02/26/2016 11:19 AM, Eric Anholt wrote: > Since all of these pins were documented, we can use their names to > explain what's going on. > diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts > &gpio { > + pinctrl-0 = <&i2c0_gpio0 > + &i2c1_gpio2 > + &gpclk0_gpio4 > + &gpclk1_gpio5 > + &spi0_gpio7 > + &pcm_gpio18 > + &pwm0_gpio40 > + &pwm1_gpio45 > + &gpioout > + &alt3>; > }; Why not convert alt3 to the new scheme too? I think this configures too many pins, which in turn makes assumptions about what those pins are used for that may not be valid. Recent RPi firmware configures almost all expansion connector GPIOs as GPIO-in. This ensures that no matter what is connected to the expansion connector, there can be no signal conflicts due to both the bcm283x and some external device both attempting to drive the same pin. I believe the default Linux pinmux should adopt the same approach, by simply not configuring any expansion connector pins except those known to have a 100% hard-coded usage. For example, the HAT I2C pins must only be used for that purpose on the RPi, so even if the HW supported using them as arbitrary GPIO or PWM or ..., we know they're actually I2C. So, I think this list should only include configuration for pins connected to on-board devices, or expansion pins that have a 100% known purpose. (I can't quite remember how many pins are being configured in the upstream kernel's DT files at present; it's possible the complying with this rule may involve removing some pinctrl settings that are currently present to avoid conflicts. User-specific additions should come from DT overlays or manual DT edits.) ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. @ 2016-03-03 21:26 ` Stephen Warren 0 siblings, 0 replies; 18+ messages in thread From: Stephen Warren @ 2016-03-03 21:26 UTC (permalink / raw) To: linux-arm-kernel On 02/26/2016 11:19 AM, Eric Anholt wrote: > Since all of these pins were documented, we can use their names to > explain what's going on. > diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts > &gpio { > + pinctrl-0 = <&i2c0_gpio0 > + &i2c1_gpio2 > + &gpclk0_gpio4 > + &gpclk1_gpio5 > + &spi0_gpio7 > + &pcm_gpio18 > + &pwm0_gpio40 > + &pwm1_gpio45 > + &gpioout > + &alt3>; > }; Why not convert alt3 to the new scheme too? I think this configures too many pins, which in turn makes assumptions about what those pins are used for that may not be valid. Recent RPi firmware configures almost all expansion connector GPIOs as GPIO-in. This ensures that no matter what is connected to the expansion connector, there can be no signal conflicts due to both the bcm283x and some external device both attempting to drive the same pin. I believe the default Linux pinmux should adopt the same approach, by simply not configuring any expansion connector pins except those known to have a 100% hard-coded usage. For example, the HAT I2C pins must only be used for that purpose on the RPi, so even if the HW supported using them as arbitrary GPIO or PWM or ..., we know they're actually I2C. So, I think this list should only include configuration for pins connected to on-board devices, or expansion pins that have a 100% known purpose. (I can't quite remember how many pins are being configured in the upstream kernel's DT files at present; it's possible the complying with this rule may involve removing some pinctrl settings that are currently present to avoid conflicts. User-specific additions should come from DT overlays or manual DT edits.) ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. 2016-03-03 21:26 ` Stephen Warren (?) @ 2016-03-03 22:28 ` Eric Anholt -1 siblings, 0 replies; 18+ messages in thread From: Eric Anholt @ 2016-03-03 22:28 UTC (permalink / raw) To: Stephen Warren Cc: Mark Rutland, devicetree, Florian Fainelli, Pawel Moll, Ian Campbell, Stefan Wahren, Linus Walleij, Lee Jones, linux-kernel, linux-gpio, Rob Herring, linux-rpi-kernel, Kumar Gala, linux-arm-kernel [-- Attachment #1.1: Type: text/plain, Size: 2299 bytes --] Stephen Warren <swarren@wwwdotorg.org> writes: > On 02/26/2016 11:19 AM, Eric Anholt wrote: >> Since all of these pins were documented, we can use their names to >> explain what's going on. > >> diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts > >> &gpio { >> + pinctrl-0 = <&i2c0_gpio0 >> + &i2c1_gpio2 >> + &gpclk0_gpio4 >> + &gpclk1_gpio5 >> + &spi0_gpio7 >> + &pcm_gpio18 >> + &pwm0_gpio40 >> + &pwm1_gpio45 >> + &gpioout >> + &alt3>; >> }; > > Why not convert alt3 to the new scheme too? (covered in the next patch) > I think this configures too many pins, which in turn makes assumptions > about what those pins are used for that may not be valid. > > Recent RPi firmware configures almost all expansion connector GPIOs as > GPIO-in. This ensures that no matter what is connected to the expansion > connector, there can be no signal conflicts due to both the bcm283x and > some external device both attempting to drive the same pin. I believe > the default Linux pinmux should adopt the same approach, by simply not > configuring any expansion connector pins except those known to have a > 100% hard-coded usage. For example, the HAT I2C pins must only be used > for that purpose on the RPi, so even if the HW supported using them as > arbitrary GPIO or PWM or ..., we know they're actually I2C. > > So, I think this list should only include configuration for pins > connected to on-board devices, or expansion pins that have a 100% known > purpose. > > (I can't quite remember how many pins are being configured in the > upstream kernel's DT files at present; it's possible the complying with > this rule may involve removing some pinctrl settings that are currently > present to avoid conflicts. User-specific additions should come from DT > overlays or manual DT edits.) If we want to improve on our default pin configurations, I'm into that, but I think the first step is to get groups split up so it's clear what we're doing with pins in the first place. This patch is just a no-op change to get the board files to use smaller groups for enabling/disabling, and we should stack functional changes after that. [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 818 bytes --] [-- Attachment #2: Type: text/plain, Size: 176 bytes --] _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. @ 2016-03-03 22:28 ` Eric Anholt 0 siblings, 0 replies; 18+ messages in thread From: Eric Anholt @ 2016-03-03 22:28 UTC (permalink / raw) To: linux-arm-kernel Stephen Warren <swarren@wwwdotorg.org> writes: > On 02/26/2016 11:19 AM, Eric Anholt wrote: >> Since all of these pins were documented, we can use their names to >> explain what's going on. > >> diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts > >> &gpio { >> + pinctrl-0 = <&i2c0_gpio0 >> + &i2c1_gpio2 >> + &gpclk0_gpio4 >> + &gpclk1_gpio5 >> + &spi0_gpio7 >> + &pcm_gpio18 >> + &pwm0_gpio40 >> + &pwm1_gpio45 >> + &gpioout >> + &alt3>; >> }; > > Why not convert alt3 to the new scheme too? (covered in the next patch) > I think this configures too many pins, which in turn makes assumptions > about what those pins are used for that may not be valid. > > Recent RPi firmware configures almost all expansion connector GPIOs as > GPIO-in. This ensures that no matter what is connected to the expansion > connector, there can be no signal conflicts due to both the bcm283x and > some external device both attempting to drive the same pin. I believe > the default Linux pinmux should adopt the same approach, by simply not > configuring any expansion connector pins except those known to have a > 100% hard-coded usage. For example, the HAT I2C pins must only be used > for that purpose on the RPi, so even if the HW supported using them as > arbitrary GPIO or PWM or ..., we know they're actually I2C. > > So, I think this list should only include configuration for pins > connected to on-board devices, or expansion pins that have a 100% known > purpose. > > (I can't quite remember how many pins are being configured in the > upstream kernel's DT files at present; it's possible the complying with > this rule may involve removing some pinctrl settings that are currently > present to avoid conflicts. User-specific additions should come from DT > overlays or manual DT edits.) If we want to improve on our default pin configurations, I'm into that, but I think the first step is to get groups split up so it's clear what we're doing with pins in the first place. This patch is just a no-op change to get the board files to use smaller groups for enabling/disabling, and we should stack functional changes after that. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 818 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160303/b44fa64d/attachment.sig> ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. @ 2016-03-03 22:28 ` Eric Anholt 0 siblings, 0 replies; 18+ messages in thread From: Eric Anholt @ 2016-03-03 22:28 UTC (permalink / raw) To: Stephen Warren Cc: linux-rpi-kernel, linux-arm-kernel, linux-kernel, Lee Jones, Florian Fainelli, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree, Linus Walleij, linux-gpio, Stefan Wahren [-- Attachment #1: Type: text/plain, Size: 2299 bytes --] Stephen Warren <swarren@wwwdotorg.org> writes: > On 02/26/2016 11:19 AM, Eric Anholt wrote: >> Since all of these pins were documented, we can use their names to >> explain what's going on. > >> diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts > >> &gpio { >> + pinctrl-0 = <&i2c0_gpio0 >> + &i2c1_gpio2 >> + &gpclk0_gpio4 >> + &gpclk1_gpio5 >> + &spi0_gpio7 >> + &pcm_gpio18 >> + &pwm0_gpio40 >> + &pwm1_gpio45 >> + &gpioout >> + &alt3>; >> }; > > Why not convert alt3 to the new scheme too? (covered in the next patch) > I think this configures too many pins, which in turn makes assumptions > about what those pins are used for that may not be valid. > > Recent RPi firmware configures almost all expansion connector GPIOs as > GPIO-in. This ensures that no matter what is connected to the expansion > connector, there can be no signal conflicts due to both the bcm283x and > some external device both attempting to drive the same pin. I believe > the default Linux pinmux should adopt the same approach, by simply not > configuring any expansion connector pins except those known to have a > 100% hard-coded usage. For example, the HAT I2C pins must only be used > for that purpose on the RPi, so even if the HW supported using them as > arbitrary GPIO or PWM or ..., we know they're actually I2C. > > So, I think this list should only include configuration for pins > connected to on-board devices, or expansion pins that have a 100% known > purpose. > > (I can't quite remember how many pins are being configured in the > upstream kernel's DT files at present; it's possible the complying with > this rule may involve removing some pinctrl settings that are currently > present to avoid conflicts. User-specific additions should come from DT > overlays or manual DT edits.) If we want to improve on our default pin configurations, I'm into that, but I think the first step is to get groups split up so it's clear what we're doing with pins in the first place. This patch is just a no-op change to get the board files to use smaller groups for enabling/disabling, and we should stack functional changes after that. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 818 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. 2016-03-03 22:28 ` Eric Anholt @ 2016-03-03 22:34 ` Stephen Warren -1 siblings, 0 replies; 18+ messages in thread From: Stephen Warren @ 2016-03-03 22:34 UTC (permalink / raw) To: Eric Anholt Cc: linux-rpi-kernel, linux-arm-kernel, linux-kernel, Lee Jones, Florian Fainelli, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree, Linus Walleij, linux-gpio, Stefan Wahren On 03/03/2016 03:28 PM, Eric Anholt wrote: > Stephen Warren <swarren@wwwdotorg.org> writes: > >> On 02/26/2016 11:19 AM, Eric Anholt wrote: >>> Since all of these pins were documented, we can use their names to >>> explain what's going on. >> >>> diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts >> >>> &gpio { >>> + pinctrl-0 = <&i2c0_gpio0 >>> + &i2c1_gpio2 >>> + &gpclk0_gpio4 >>> + &gpclk1_gpio5 >>> + &spi0_gpio7 >>> + &pcm_gpio18 >>> + &pwm0_gpio40 >>> + &pwm1_gpio45 >>> + &gpioout >>> + &alt3>; >>> }; >> >> Why not convert alt3 to the new scheme too? > > (covered in the next patch) > >> I think this configures too many pins, which in turn makes assumptions >> about what those pins are used for that may not be valid. >> >> Recent RPi firmware configures almost all expansion connector GPIOs as >> GPIO-in. This ensures that no matter what is connected to the expansion >> connector, there can be no signal conflicts due to both the bcm283x and >> some external device both attempting to drive the same pin. I believe >> the default Linux pinmux should adopt the same approach, by simply not >> configuring any expansion connector pins except those known to have a >> 100% hard-coded usage. For example, the HAT I2C pins must only be used >> for that purpose on the RPi, so even if the HW supported using them as >> arbitrary GPIO or PWM or ..., we know they're actually I2C. >> >> So, I think this list should only include configuration for pins >> connected to on-board devices, or expansion pins that have a 100% known >> purpose. >> >> (I can't quite remember how many pins are being configured in the >> upstream kernel's DT files at present; it's possible the complying with >> this rule may involve removing some pinctrl settings that are currently >> present to avoid conflicts. User-specific additions should come from DT >> overlays or manual DT edits.) > > If we want to improve on our default pin configurations, I'm into that, > but I think the first step is to get groups split up so it's clear what > we're doing with pins in the first place. This patch is just a no-op > change to get the board files to use smaller groups for > enabling/disabling, and we should stack functional changes after that. I don't think it's worth making patches that change things around when they're immediately going to be thrown away. It is needless churn. If you take the approach of removing settings that shouldn't be applied, you'll vastly reduce (and possibly even completely eliminate) the work to more optimally represent what's left. ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. @ 2016-03-03 22:34 ` Stephen Warren 0 siblings, 0 replies; 18+ messages in thread From: Stephen Warren @ 2016-03-03 22:34 UTC (permalink / raw) To: linux-arm-kernel On 03/03/2016 03:28 PM, Eric Anholt wrote: > Stephen Warren <swarren@wwwdotorg.org> writes: > >> On 02/26/2016 11:19 AM, Eric Anholt wrote: >>> Since all of these pins were documented, we can use their names to >>> explain what's going on. >> >>> diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts >> >>> &gpio { >>> + pinctrl-0 = <&i2c0_gpio0 >>> + &i2c1_gpio2 >>> + &gpclk0_gpio4 >>> + &gpclk1_gpio5 >>> + &spi0_gpio7 >>> + &pcm_gpio18 >>> + &pwm0_gpio40 >>> + &pwm1_gpio45 >>> + &gpioout >>> + &alt3>; >>> }; >> >> Why not convert alt3 to the new scheme too? > > (covered in the next patch) > >> I think this configures too many pins, which in turn makes assumptions >> about what those pins are used for that may not be valid. >> >> Recent RPi firmware configures almost all expansion connector GPIOs as >> GPIO-in. This ensures that no matter what is connected to the expansion >> connector, there can be no signal conflicts due to both the bcm283x and >> some external device both attempting to drive the same pin. I believe >> the default Linux pinmux should adopt the same approach, by simply not >> configuring any expansion connector pins except those known to have a >> 100% hard-coded usage. For example, the HAT I2C pins must only be used >> for that purpose on the RPi, so even if the HW supported using them as >> arbitrary GPIO or PWM or ..., we know they're actually I2C. >> >> So, I think this list should only include configuration for pins >> connected to on-board devices, or expansion pins that have a 100% known >> purpose. >> >> (I can't quite remember how many pins are being configured in the >> upstream kernel's DT files at present; it's possible the complying with >> this rule may involve removing some pinctrl settings that are currently >> present to avoid conflicts. User-specific additions should come from DT >> overlays or manual DT edits.) > > If we want to improve on our default pin configurations, I'm into that, > but I think the first step is to get groups split up so it's clear what > we're doing with pins in the first place. This patch is just a no-op > change to get the board files to use smaller groups for > enabling/disabling, and we should stack functional changes after that. I don't think it's worth making patches that change things around when they're immediately going to be thrown away. It is needless churn. If you take the approach of removing settings that shouldn't be applied, you'll vastly reduce (and possibly even completely eliminate) the work to more optimally represent what's left. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. 2016-02-26 18:19 ` [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups Eric Anholt 2016-03-03 21:26 ` Stephen Warren @ 2016-03-08 8:24 ` Linus Walleij 1 sibling, 0 replies; 18+ messages in thread From: Linus Walleij @ 2016-03-08 8:24 UTC (permalink / raw) To: Eric Anholt Cc: linux-rpi-kernel, linux-arm-kernel, linux-kernel, Stephen Warren, Lee Jones, Florian Fainelli, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree, linux-gpio, Stefan Wahren On Sat, Feb 27, 2016 at 1:19 AM, Eric Anholt <eric@anholt.net> wrote: > Since all of these pins were documented, we can use their names to > explain what's going on. > > Signed-off-by: Eric Anholt <eric@anholt.net> > + pinctrl-0 = <&i2c0_gpio0 > + &i2c1_gpio2 > + &gpclk0_gpio4 > + &gpclk1_gpio5 > + &spi0_gpio7 > + &pcm_gpio18 > + &pwm0_gpio40 > + &pwm1_gpio45 > + &gpioout > + &alt3>; Why are all of these done as hogs instead of being in pinctrl-0 "default" for the device that is using them? i2c1, gpclk0, etc? The only reason I see would be if they are unused or something. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. @ 2016-03-08 8:24 ` Linus Walleij 0 siblings, 0 replies; 18+ messages in thread From: Linus Walleij @ 2016-03-08 8:24 UTC (permalink / raw) To: linux-arm-kernel On Sat, Feb 27, 2016 at 1:19 AM, Eric Anholt <eric@anholt.net> wrote: > Since all of these pins were documented, we can use their names to > explain what's going on. > > Signed-off-by: Eric Anholt <eric@anholt.net> > + pinctrl-0 = <&i2c0_gpio0 > + &i2c1_gpio2 > + &gpclk0_gpio4 > + &gpclk1_gpio5 > + &spi0_gpio7 > + &pcm_gpio18 > + &pwm0_gpio40 > + &pwm1_gpio45 > + &gpioout > + &alt3>; Why are all of these done as hogs instead of being in pinctrl-0 "default" for the device that is using them? i2c1, gpclk0, etc? The only reason I see would be if they are unused or something. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. @ 2016-03-08 8:24 ` Linus Walleij 0 siblings, 0 replies; 18+ messages in thread From: Linus Walleij @ 2016-03-08 8:24 UTC (permalink / raw) To: Eric Anholt Cc: linux-rpi-kernel, linux-arm-kernel, linux-kernel, Stephen Warren, Lee Jones, Florian Fainelli, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree, linux-gpio, Stefan Wahren On Sat, Feb 27, 2016 at 1:19 AM, Eric Anholt <eric@anholt.net> wrote: > Since all of these pins were documented, we can use their names to > explain what's going on. > > Signed-off-by: Eric Anholt <eric@anholt.net> > + pinctrl-0 = <&i2c0_gpio0 > + &i2c1_gpio2 > + &gpclk0_gpio4 > + &gpclk1_gpio5 > + &spi0_gpio7 > + &pcm_gpio18 > + &pwm0_gpio40 > + &pwm1_gpio45 > + &gpioout > + &alt3>; Why are all of these done as hogs instead of being in pinctrl-0 "default" for the device that is using them? i2c1, gpclk0, etc? The only reason I see would be if they are unused or something. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. 2016-03-08 8:24 ` Linus Walleij (?) @ 2016-03-08 16:42 ` Stephen Warren -1 siblings, 0 replies; 18+ messages in thread From: Stephen Warren @ 2016-03-08 16:42 UTC (permalink / raw) To: Linus Walleij, Eric Anholt Cc: linux-rpi-kernel, linux-arm-kernel, linux-kernel, Lee Jones, Florian Fainelli, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree, linux-gpio, Stefan Wahren On 03/08/2016 01:24 AM, Linus Walleij wrote: > On Sat, Feb 27, 2016 at 1:19 AM, Eric Anholt <eric@anholt.net> wrote: > >> Since all of these pins were documented, we can use their names to >> explain what's going on. >> >> Signed-off-by: Eric Anholt <eric@anholt.net> > >> + pinctrl-0 = <&i2c0_gpio0 >> + &i2c1_gpio2 >> + &gpclk0_gpio4 >> + &gpclk1_gpio5 >> + &spi0_gpio7 >> + &pcm_gpio18 >> + &pwm0_gpio40 >> + &pwm1_gpio45 >> + &gpioout >> + &alt3>; > > Why are all of these done as hogs instead of being in pinctrl-0 > "default" for the device that is using them? i2c1, gpclk0, > etc? > > The only reason I see would be if they are unused or something. I think it makes sense to have the pinctrl driver (or even FW before the kernel boots) set up everything at once where possible. That's the easiest way to ensure there are never any conflicts in the pinmux table (i.e. that two different pins don't end up being both muxed to SPI1's MISO signal at the same time for a while before all the drivers probe). Putting pinctrl entries into individual devices only makes sense to me when one of: a) That device needs to dynamically change the pinmux at run-time, e.g. to switch between different states, so needs definitions of those different states. or: b) The initial pinmux is guaranteed set up to a safe non-conflicting state that enables very little, and we need to defer enabling various peripherals until a later time when we know the peripheral is in use, e.g. when loading a DT overlay from user-space. On the RPi there are certain peripherals that fall into each category, e.g. SD card is always used, I2S only optionally used. ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. @ 2016-03-08 16:42 ` Stephen Warren 0 siblings, 0 replies; 18+ messages in thread From: Stephen Warren @ 2016-03-08 16:42 UTC (permalink / raw) To: linux-arm-kernel On 03/08/2016 01:24 AM, Linus Walleij wrote: > On Sat, Feb 27, 2016 at 1:19 AM, Eric Anholt <eric@anholt.net> wrote: > >> Since all of these pins were documented, we can use their names to >> explain what's going on. >> >> Signed-off-by: Eric Anholt <eric@anholt.net> > >> + pinctrl-0 = <&i2c0_gpio0 >> + &i2c1_gpio2 >> + &gpclk0_gpio4 >> + &gpclk1_gpio5 >> + &spi0_gpio7 >> + &pcm_gpio18 >> + &pwm0_gpio40 >> + &pwm1_gpio45 >> + &gpioout >> + &alt3>; > > Why are all of these done as hogs instead of being in pinctrl-0 > "default" for the device that is using them? i2c1, gpclk0, > etc? > > The only reason I see would be if they are unused or something. I think it makes sense to have the pinctrl driver (or even FW before the kernel boots) set up everything at once where possible. That's the easiest way to ensure there are never any conflicts in the pinmux table (i.e. that two different pins don't end up being both muxed to SPI1's MISO signal at the same time for a while before all the drivers probe). Putting pinctrl entries into individual devices only makes sense to me when one of: a) That device needs to dynamically change the pinmux at run-time, e.g. to switch between different states, so needs definitions of those different states. or: b) The initial pinmux is guaranteed set up to a safe non-conflicting state that enables very little, and we need to defer enabling various peripherals until a later time when we know the peripheral is in use, e.g. when loading a DT overlay from user-space. On the RPi there are certain peripherals that fall into each category, e.g. SD card is always used, I2S only optionally used. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups. @ 2016-03-08 16:42 ` Stephen Warren 0 siblings, 0 replies; 18+ messages in thread From: Stephen Warren @ 2016-03-08 16:42 UTC (permalink / raw) To: Linus Walleij, Eric Anholt Cc: linux-rpi-kernel, linux-arm-kernel, linux-kernel, Lee Jones, Florian Fainelli, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, devicetree, linux-gpio, Stefan Wahren On 03/08/2016 01:24 AM, Linus Walleij wrote: > On Sat, Feb 27, 2016 at 1:19 AM, Eric Anholt <eric@anholt.net> wrote: > >> Since all of these pins were documented, we can use their names to >> explain what's going on. >> >> Signed-off-by: Eric Anholt <eric@anholt.net> > >> + pinctrl-0 = <&i2c0_gpio0 >> + &i2c1_gpio2 >> + &gpclk0_gpio4 >> + &gpclk1_gpio5 >> + &spi0_gpio7 >> + &pcm_gpio18 >> + &pwm0_gpio40 >> + &pwm1_gpio45 >> + &gpioout >> + &alt3>; > > Why are all of these done as hogs instead of being in pinctrl-0 > "default" for the device that is using them? i2c1, gpclk0, > etc? > > The only reason I see would be if they are unused or something. I think it makes sense to have the pinctrl driver (or even FW before the kernel boots) set up everything at once where possible. That's the easiest way to ensure there are never any conflicts in the pinmux table (i.e. that two different pins don't end up being both muxed to SPI1's MISO signal at the same time for a while before all the drivers probe). Putting pinctrl entries into individual devices only makes sense to me when one of: a) That device needs to dynamically change the pinmux at run-time, e.g. to switch between different states, so needs definitions of those different states. or: b) The initial pinmux is guaranteed set up to a safe non-conflicting state that enables very little, and we need to defer enabling various peripherals until a later time when we know the peripheral is in use, e.g. when loading a DT overlay from user-space. On the RPi there are certain peripherals that fall into each category, e.g. SD card is always used, I2S only optionally used. ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2016-03-08 16:42 UTC | newest] Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <1456266111-2508-1-git-send-email-eric@anholt.net> 2016-02-23 22:21 ` [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups Eric Anholt 2016-02-23 22:21 ` Eric Anholt 2016-02-24 17:11 ` Stephen Warren 2016-02-24 17:11 ` Stephen Warren 2016-02-26 18:19 [PATCH 0/5] BCM2835 pinctrl DT rework (resend) Eric Anholt 2016-02-26 18:19 ` [PATCH 2/5] ARM: bcm2835: Replace alt0/i2s_alt[02] with standard groups Eric Anholt 2016-03-03 21:26 ` Stephen Warren 2016-03-03 21:26 ` Stephen Warren 2016-03-03 22:28 ` Eric Anholt 2016-03-03 22:28 ` Eric Anholt 2016-03-03 22:28 ` Eric Anholt 2016-03-03 22:34 ` Stephen Warren 2016-03-03 22:34 ` Stephen Warren 2016-03-08 8:24 ` Linus Walleij 2016-03-08 8:24 ` Linus Walleij 2016-03-08 8:24 ` Linus Walleij 2016-03-08 16:42 ` Stephen Warren 2016-03-08 16:42 ` Stephen Warren 2016-03-08 16:42 ` Stephen Warren
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.