ARM: kirkwood: SBx81LIFKW: remove direct access of GPIO registers
authorChris Packham <judge.packham@gmail.com>
Thu, 4 Aug 2022 09:06:23 +0000 (21:06 +1200)
committerStefan Roese <sr@denx.de>
Tue, 9 Aug 2022 06:58:27 +0000 (08:58 +0200)
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>
arch/arm/dts/kirkwood-atl-sbx81lifkw.dts
board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c
configs/SBx81LIFKW_defconfig

index 4ae74f4316e58b52019cb00a2d395863658962c9..3837c8f77fe2ae515c53321263b99956543ca9f4 100644 (file)
                        };
                };
        };
+
+       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 {
index d8b9fdfe356ff0acd27e171d224b8ec2bf13ebb8..feb8b6b83f00d024b3ffb89e496ac97cb9fa4598 100644 (file)
@@ -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>
 
 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;
 }
index f186f247eb63ff08f03ca415e7f38af1fd66027a..90800e2dd3ee0586828e27bae3420d4eca3d97d1 100644 (file)
@@ -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