diff mbox series

[v1,5/5] realtek: remove hardcoded sys-led configurations

Message ID 8d64bf7b674045fe225e7770a7c6260aa44a590d.1654587762.git.sander@svanheule.net
State Changes Requested
Delegated to: Sander Vanheule
Headers show
Series realtek: remove sys-led from setup.c | expand

Commit Message

Sander Vanheule June 7, 2022, 7:50 a.m. UTC
Disabling the sys-led peripheral should be done via a pin controller,
for which pinctrl-single nodes are present in the platform DTSI files.
Drop the hardcoded per-platform sys-led configurations, and require
things to be set up in the devicetree.

Co-developed-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Signed-off-by: Sander Vanheule <sander@svanheule.net>
Tested-by: Bjørn Mork <bjorn@mork.no>
---
 .../files-5.10/arch/mips/rtl838x/setup.c      | 40 -------------------
 1 file changed, 40 deletions(-)

Comments

Birger Koblitz June 7, 2022, 8:24 a.m. UTC | #1
Hi,

at least for the RTL931x, removing the rtl931x_setup() is not a good idea as the WDT reset does not work for that architecture.
The only way to get a working reset is via registering a reset handler:

static void __init rtl931x_setup(void)
{
	pr_info("Registering _machine_restart\n");
	_machine_restart = rtl931x_restart;
	_machine_halt = rtl931x_halt;

	// Enable system LED, no flashing
	sw_w32_mask(0, 3 << 12, RTL931X_LED_GLB_CTRL);
}

Cheers,
  Birger



On 07.06.22 09:50, Sander Vanheule wrote:
> Disabling the sys-led peripheral should be done via a pin controller,
> for which pinctrl-single nodes are present in the platform DTSI files.
> Drop the hardcoded per-platform sys-led configurations, and require
> things to be set up in the devicetree.
> 
> Co-developed-by: INAGAKI Hiroshi <musashino.open@gmail.com>
> Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
> Signed-off-by: Sander Vanheule <sander@svanheule.net>
> Tested-by: Bjørn Mork <bjorn@mork.no>
> ---
>  .../files-5.10/arch/mips/rtl838x/setup.c      | 40 -------------------
>  1 file changed, 40 deletions(-)
> 
> diff --git a/target/linux/realtek/files-5.10/arch/mips/rtl838x/setup.c b/target/linux/realtek/files-5.10/arch/mips/rtl838x/setup.c
> index 55419c7b0b7a..df29b76bbf0f 100644
> --- a/target/linux/realtek/files-5.10/arch/mips/rtl838x/setup.c
> +++ b/target/linux/realtek/files-5.10/arch/mips/rtl838x/setup.c
> @@ -28,31 +28,6 @@
>  
>  extern struct rtl83xx_soc_info soc_info;
>  
> -static void __init rtl838x_setup(void)
> -{
> -	/* Setup System LED. Bit 15 then allows to toggle it */
> -	sw_w32_mask(0, 3 << 16, RTL838X_LED_GLB_CTRL);
> -}
> -
> -static void __init rtl839x_setup(void)
> -{
> -	/* Setup System LED. Bit 14 of RTL839X_LED_GLB_CTRL then allows to toggle it */
> -	sw_w32_mask(0, 3 << 15, RTL839X_LED_GLB_CTRL);
> -}
> -
> -static void __init rtl930x_setup(void)
> -{
> -	if (soc_info.id == 0x9302)
> -		sw_w32_mask(0, 3 << 13, RTL9302_LED_GLB_CTRL);
> -	else
> -		sw_w32_mask(0, 3 << 13, RTL930X_LED_GLB_CTRL);
> -}
> -
> -static void __init rtl931x_setup(void)
> -{
> -	sw_w32_mask(0, 3 << 12, RTL931X_LED_GLB_CTRL);
> -}
> -
>  void __init plat_mem_setup(void)
>  {
>  	void *dtb;
> @@ -71,21 +46,6 @@ void __init plat_mem_setup(void)
>  	 * parsed resulting in our memory appearing
>  	 */
>  	__dt_setup_arch(dtb);
> -
> -	switch (soc_info.family) {
> -	case RTL8380_FAMILY_ID:
> -		rtl838x_setup();
> -		break;
> -	case RTL8390_FAMILY_ID:
> -		rtl839x_setup();
> -		break;
> -	case RTL9300_FAMILY_ID:
> -		rtl930x_setup();
> -		break;
> -	case RTL9310_FAMILY_ID:
> -		rtl931x_setup();
> -		break;
> -	}
>  }
>  
>  void __init plat_time_init(void)
Sander Vanheule June 7, 2022, 9:10 a.m. UTC | #2
On Tue, 2022-06-07 at 10:24 +0200, Birger Koblitz wrote:
> Hi,
> 
> at least for the RTL931x, removing the rtl931x_setup() is not a good idea as the WDT reset does
> not work for that architecture.
> The only way to get a working reset is via registering a reset handler:
> 
> static void __init rtl931x_setup(void)
> {
>         pr_info("Registering _machine_restart\n");
>         _machine_restart = rtl931x_restart;
>         _machine_halt = rtl931x_halt;

We've gotten rid of _machine_restart and _machine_halt already, let's not reintroduce them.

If you don't feel like writing a driver for the reset controller, perhaps syscon-reboot [1] can be
useful?

Best,
Sander

[1] https://mjmwired.net/kernel/Documentation/devicetree/bindings/power/reset/syscon-reboot.yaml
Birger Koblitz June 7, 2022, 9:29 a.m. UTC | #3
Hi,

On 07.06.22 11:10, Sander Vanheule wrote:
> On Tue, 2022-06-07 at 10:24 +0200, Birger Koblitz wrote:
>> Hi,
>>
>> at least for the RTL931x, removing the rtl931x_setup() is not a good idea as the WDT reset does
>> not work for that architecture.
>> The only way to get a working reset is via registering a reset handler:
>>
>> static void __init rtl931x_setup(void)
>> {
>>         pr_info("Registering _machine_restart\n");
>>         _machine_restart = rtl931x_restart;
>>         _machine_halt = rtl931x_halt;
> 
> We've gotten rid of _machine_restart and _machine_halt already, let's not reintroduce them.
> 
> If you don't feel like writing a driver for the reset controller, perhaps syscon-reboot [1] can be
> useful?
That sounds interesting, I'll try.

Cheers,
  Birger
diff mbox series

Patch

diff --git a/target/linux/realtek/files-5.10/arch/mips/rtl838x/setup.c b/target/linux/realtek/files-5.10/arch/mips/rtl838x/setup.c
index 55419c7b0b7a..df29b76bbf0f 100644
--- a/target/linux/realtek/files-5.10/arch/mips/rtl838x/setup.c
+++ b/target/linux/realtek/files-5.10/arch/mips/rtl838x/setup.c
@@ -28,31 +28,6 @@ 
 
 extern struct rtl83xx_soc_info soc_info;
 
-static void __init rtl838x_setup(void)
-{
-	/* Setup System LED. Bit 15 then allows to toggle it */
-	sw_w32_mask(0, 3 << 16, RTL838X_LED_GLB_CTRL);
-}
-
-static void __init rtl839x_setup(void)
-{
-	/* Setup System LED. Bit 14 of RTL839X_LED_GLB_CTRL then allows to toggle it */
-	sw_w32_mask(0, 3 << 15, RTL839X_LED_GLB_CTRL);
-}
-
-static void __init rtl930x_setup(void)
-{
-	if (soc_info.id == 0x9302)
-		sw_w32_mask(0, 3 << 13, RTL9302_LED_GLB_CTRL);
-	else
-		sw_w32_mask(0, 3 << 13, RTL930X_LED_GLB_CTRL);
-}
-
-static void __init rtl931x_setup(void)
-{
-	sw_w32_mask(0, 3 << 12, RTL931X_LED_GLB_CTRL);
-}
-
 void __init plat_mem_setup(void)
 {
 	void *dtb;
@@ -71,21 +46,6 @@  void __init plat_mem_setup(void)
 	 * parsed resulting in our memory appearing
 	 */
 	__dt_setup_arch(dtb);
-
-	switch (soc_info.family) {
-	case RTL8380_FAMILY_ID:
-		rtl838x_setup();
-		break;
-	case RTL8390_FAMILY_ID:
-		rtl839x_setup();
-		break;
-	case RTL9300_FAMILY_ID:
-		rtl930x_setup();
-		break;
-	case RTL9310_FAMILY_ID:
-		rtl931x_setup();
-		break;
-	}
 }
 
 void __init plat_time_init(void)