On Mon, 16 Nov 2020, at 16:43, Joel Stanley wrote: > On Fri, 13 Nov 2020 at 05:59, Vishwanatha Subbanna > <vishwa@xxxxxxxxxxxxxxxxxx> wrote: > > > > These are LEDs on the cable cards that plug into PCIE slots. > > The LEDs are controlled by PCA9552 I2C expander > > > > Signed-off-by: Vishwanatha Subbanna <vishwa@xxxxxxxxxxxxxxxxxx> > > --- > > arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts | 288 +++++++++++++++++++++++++++ > > 1 file changed, 288 insertions(+) > > > > diff --git a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts > > index 67c8c40..7de5f76 100644 > > --- a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts > > +++ b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts > > @@ -696,6 +696,70 @@ > > gpios = <&pca4 7 GPIO_ACTIVE_LOW>; > > }; > > }; > > + > > + leds-optional-cablecard0 { > > Is it necessary to have separate nodes for each of the different GPIO devices? Good question. Vishwa, what's the advantage either way here? > > Would it make sense to combine them, or is it better to be separate? > > Andrew, Eddie, Brad: please review this one before I merge it. > > > + compatible = "gpio-leds"; > > + > > + cablecard0-cxp-top { > > + retain-state-shutdown; > > + default-state = "keep"; > > + gpios = <&pca5 0 GPIO_ACTIVE_LOW>; > > + }; > > + > > + cablecard0-cxp-bot { > > + retain-state-shutdown; > > + default-state = "keep"; > > + gpios = <&pca5 1 GPIO_ACTIVE_LOW>; > > + }; > > + }; > > + > > + leds-optional-cablecard3 { > > + compatible = "gpio-leds"; > > + > > + cablecard3-cxp-top { > > + retain-state-shutdown; > > + default-state = "keep"; > > + gpios = <&pca6 0 GPIO_ACTIVE_LOW>; > > + }; > > + > > + cablecard3-cxp-bot { > > + retain-state-shutdown; > > + default-state = "keep"; > > + gpios = <&pca6 1 GPIO_ACTIVE_LOW>; > > + }; > > + }; > > + > > + leds-optional-cablecard4 { > > + compatible = "gpio-leds"; > > + > > + cablecard4-cxp-top { > > + retain-state-shutdown; > > + default-state = "keep"; > > + gpios = <&pca7 0 GPIO_ACTIVE_LOW>; > > + }; > > + > > + cablecard4-cxp-bot { > > + retain-state-shutdown; > > + default-state = "keep"; > > + gpios = <&pca7 1 GPIO_ACTIVE_LOW>; > > + }; > > + }; > > + > > + leds-optional-cablecard10 { > > + compatible = "gpio-leds"; > > + > > + cablecard10-cxp-top { > > + retain-state-shutdown; > > + default-state = "keep"; > > + gpios = <&pca8 0 GPIO_ACTIVE_LOW>; > > + }; > > + > > + cablecard10-cxp-bot { > > + retain-state-shutdown; > > + default-state = "keep"; > > + gpios = <&pca8 1 GPIO_ACTIVE_LOW>; > > + }; > > + }; > > }; > > > > &ehci1 { > > @@ -1212,6 +1276,180 @@ > > compatible = "atmel,24c64"; > > reg = <0x52>; > > }; > > + > > + pca5: pca9551@60 { > > + compatible = "nxp,pca9551"; > > + reg = <0x60>; > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + gpio-controller; > > + #gpio-cells = <2>; > > + > > + gpio@0 { > > + reg = <0>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@1 { > > + reg = <1>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@2 { > > + reg = <2>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@3 { > > + reg = <3>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@4 { > > + reg = <4>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@5 { > > + reg = <5>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@6 { > > + reg = <6>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@7 { > > + reg = <7>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + }; > > +}; > > + > > +&i2c5 { > > + status = "okay"; > > + > > + tmp275@48 { > > + compatible = "ti,tmp275"; > > + reg = <0x48>; > > + }; > > + > > + tmp275@49 { > > + compatible = "ti,tmp275"; > > + reg = <0x49>; > > + }; These aren't LED devices. > > + > > + eeprom@50 { > > + compatible = "atmel,24c64"; > > + reg = <0x50>; > > + }; > > + > > + eeprom@51 { > > + compatible = "atmel,24c64"; > > + reg = <0x51>; > > + }; Neither are these. > > + > > + pca6: pca9551@60 { > > + compatible = "nxp,pca9551"; > > + reg = <0x60>; > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + gpio-controller; > > + #gpio-cells = <2>; > > + > > + gpio@0 { > > + reg = <0>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@1 { > > + reg = <1>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@2 { > > + reg = <2>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@3 { > > + reg = <3>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@4 { > > + reg = <4>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@5 { > > + reg = <5>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@6 { > > + reg = <6>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@7 { > > + reg = <7>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + }; > > + > > + pca7: pca9551@61 { > > + compatible = "nxp,pca9551"; > > + reg = <0x61>; > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + gpio-controller; > > + #gpio-cells = <2>; > > + > > + gpio@0 { > > + reg = <0>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@1 { > > + reg = <1>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@2 { > > + reg = <2>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@3 { > > + reg = <3>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@4 { > > + reg = <4>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@5 { > > + reg = <5>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@6 { > > + reg = <6>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@7 { > > + reg = <7>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + }; > > }; > > > > &i2c5 { > > @@ -2028,6 +2266,56 @@ > > compatible = "atmel,24c64"; > > reg = <0x51>; > > }; > > + > > + pca8: pca9551@60 { > > + compatible = "nxp,pca9551"; > > + reg = <0x60>; > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + gpio-controller; > > + #gpio-cells = <2>; > > + > > + gpio@0 { > > + reg = <0>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@1 { > > + reg = <1>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@2 { > > + reg = <2>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@3 { > > + reg = <3>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@4 { > > + reg = <4>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@5 { > > + reg = <5>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@6 { > > + reg = <6>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + > > + gpio@7 { > > + reg = <7>; > > + type = <PCA955X_TYPE_GPIO>; > > + }; > > + }; > > }; If we're adding LEDs, why aren't we using PCA955X_TYPE_LED? Why the indirection through the leds-gpio driver? Andrew