Message ID | 20220804090629.75183-2-judge.packham@gmail.com |
---|---|
State | Accepted |
Commit | d1471948f336be8cd754cdc2d826e47e8d3e6c2c |
Delegated to: | Stefan Roese |
Headers | show |
Series | SBx81LIFKW/SBx81LIFXCAT disable KIRKWOOD_GPIO | expand |
On 04.08.22 11:06, Chris Packham wrote: > Replace code that accessed the GPIO registers directly with code that > makes use of the LED_GPIO driver. > > Signed-off-by: Chris Packham <judge.packham@gmail.com> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > --- > > arch/arm/dts/kirkwood-atl-sbx81lifkw.dts | 14 ++++++ > board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c | 50 +++++---------------- > configs/SBx81LIFKW_defconfig | 2 + > 3 files changed, 27 insertions(+), 39 deletions(-) > > diff --git a/arch/arm/dts/kirkwood-atl-sbx81lifkw.dts b/arch/arm/dts/kirkwood-atl-sbx81lifkw.dts > index 4ae74f4316e5..3837c8f77fe2 100644 > --- a/arch/arm/dts/kirkwood-atl-sbx81lifkw.dts > +++ b/arch/arm/dts/kirkwood-atl-sbx81lifkw.dts > @@ -70,6 +70,20 @@ > }; > }; > }; > + > + gpio-leds { > + compatible = "gpio-leds"; > + > + ledn { > + label = "status:ledn"; > + gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>; > + }; > + > + ledp { > + label = "status:ledp"; > + gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>; > + }; > + }; > }; > > &spi0 { > diff --git a/board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c b/board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c > index d8b9fdfe356f..feb8b6b83f00 100644 > --- a/board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c > +++ b/board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c > @@ -13,7 +13,7 @@ > #include <linux/io.h> > #include <miiphy.h> > #include <netdev.h> > -#include <status_led.h> > +#include <led.h> > #include <asm/arch/cpu.h> > #include <asm/arch/soc.h> > #include <asm/arch/mpp.h> > @@ -41,41 +41,6 @@ > > DECLARE_GLOBAL_DATA_PTR; > > -struct led { > - u32 reg; > - u32 value; > - u32 mask; > -}; > - > -struct led amber_solid = { > - MVEBU_GPIO0_BASE, > - BIT(10), > - BIT(18) | BIT(10) > -}; > - > -struct led green_solid = { > - MVEBU_GPIO0_BASE, > - BIT(18) | BIT(10), > - BIT(18) | BIT(10) > -}; > - > -struct led amber_flash = { > - MVEBU_GPIO0_BASE, > - 0, > - BIT(18) | BIT(10) > -}; > - > -struct led green_flash = { > - MVEBU_GPIO0_BASE, > - BIT(18), > - BIT(18) | BIT(10) > -}; > - > -static void status_led_set(struct led *led) > -{ > - clrsetbits_le32(led->reg, led->mask, led->value); > -} > - > int board_early_init_f(void) > { > /* > @@ -165,8 +130,6 @@ int board_init(void) > /* address of boot parameters */ > gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100; > > - status_led_set(&amber_solid); > - > return 0; > } > > @@ -196,7 +159,16 @@ int mv88e61xx_hw_reset(struct phy_device *phydev) > #ifdef CONFIG_MISC_INIT_R > int misc_init_r(void) > { > - status_led_set(&green_flash); > + struct udevice *dev; > + int ret; > + > + ret = led_get_by_label("status:ledp", &dev); > + if (!ret) > + led_set_state(dev, LEDST_ON); > + > + ret = led_get_by_label("status:ledn", &dev); > + if (!ret) > + led_set_state(dev, LEDST_OFF); > > return 0; > } > diff --git a/configs/SBx81LIFKW_defconfig b/configs/SBx81LIFKW_defconfig > index f186f247eb63..90800e2dd3ee 100644 > --- a/configs/SBx81LIFKW_defconfig > +++ b/configs/SBx81LIFKW_defconfig > @@ -46,6 +46,8 @@ CONFIG_DM_I2C=y > CONFIG_SYS_I2C_MVTWSI=y > CONFIG_I2C_MUX=y > CONFIG_I2C_MUX_PCA954x=y > +CONFIG_LED=y > +CONFIG_LED_GPIO=y > # CONFIG_MMC is not set > CONFIG_MTD=y > CONFIG_DM_SPI_FLASH=y Viele Grüße, Stefan Roese
diff --git a/arch/arm/dts/kirkwood-atl-sbx81lifkw.dts b/arch/arm/dts/kirkwood-atl-sbx81lifkw.dts index 4ae74f4316e5..3837c8f77fe2 100644 --- a/arch/arm/dts/kirkwood-atl-sbx81lifkw.dts +++ b/arch/arm/dts/kirkwood-atl-sbx81lifkw.dts @@ -70,6 +70,20 @@ }; }; }; + + gpio-leds { + compatible = "gpio-leds"; + + ledn { + label = "status:ledn"; + gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>; + }; + + ledp { + label = "status:ledp"; + gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>; + }; + }; }; &spi0 { diff --git a/board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c b/board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c index d8b9fdfe356f..feb8b6b83f00 100644 --- a/board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c +++ b/board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c @@ -13,7 +13,7 @@ #include <linux/io.h> #include <miiphy.h> #include <netdev.h> -#include <status_led.h> +#include <led.h> #include <asm/arch/cpu.h> #include <asm/arch/soc.h> #include <asm/arch/mpp.h> @@ -41,41 +41,6 @@ DECLARE_GLOBAL_DATA_PTR; -struct led { - u32 reg; - u32 value; - u32 mask; -}; - -struct led amber_solid = { - MVEBU_GPIO0_BASE, - BIT(10), - BIT(18) | BIT(10) -}; - -struct led green_solid = { - MVEBU_GPIO0_BASE, - BIT(18) | BIT(10), - BIT(18) | BIT(10) -}; - -struct led amber_flash = { - MVEBU_GPIO0_BASE, - 0, - BIT(18) | BIT(10) -}; - -struct led green_flash = { - MVEBU_GPIO0_BASE, - BIT(18), - BIT(18) | BIT(10) -}; - -static void status_led_set(struct led *led) -{ - clrsetbits_le32(led->reg, led->mask, led->value); -} - int board_early_init_f(void) { /* @@ -165,8 +130,6 @@ int board_init(void) /* address of boot parameters */ gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100; - status_led_set(&amber_solid); - return 0; } @@ -196,7 +159,16 @@ int mv88e61xx_hw_reset(struct phy_device *phydev) #ifdef CONFIG_MISC_INIT_R int misc_init_r(void) { - status_led_set(&green_flash); + struct udevice *dev; + int ret; + + ret = led_get_by_label("status:ledp", &dev); + if (!ret) + led_set_state(dev, LEDST_ON); + + ret = led_get_by_label("status:ledn", &dev); + if (!ret) + led_set_state(dev, LEDST_OFF); return 0; } diff --git a/configs/SBx81LIFKW_defconfig b/configs/SBx81LIFKW_defconfig index f186f247eb63..90800e2dd3ee 100644 --- a/configs/SBx81LIFKW_defconfig +++ b/configs/SBx81LIFKW_defconfig @@ -46,6 +46,8 @@ CONFIG_DM_I2C=y CONFIG_SYS_I2C_MVTWSI=y CONFIG_I2C_MUX=y CONFIG_I2C_MUX_PCA954x=y +CONFIG_LED=y +CONFIG_LED_GPIO=y # CONFIG_MMC is not set CONFIG_MTD=y CONFIG_DM_SPI_FLASH=y
Replace code that accessed the GPIO registers directly with code that makes use of the LED_GPIO driver. Signed-off-by: Chris Packham <judge.packham@gmail.com> --- arch/arm/dts/kirkwood-atl-sbx81lifkw.dts | 14 ++++++ board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c | 50 +++++---------------- configs/SBx81LIFKW_defconfig | 2 + 3 files changed, 27 insertions(+), 39 deletions(-)