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 |
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)
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
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 --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)