diff mbox series

[1/6] ARM: kirkwood: SBx81LIFKW: remove direct access of GPIO registers

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

Commit Message

Chris Packham Aug. 4, 2022, 9:06 a.m. UTC
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(-)

Comments

Stefan Roese Aug. 5, 2022, 10:47 a.m. UTC | #1
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 mbox series

Patch

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