mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
linux: add RPi upstream patch
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
b7e12fdef8
commit
a4d2c9931f
65
packages/linux/patches/linux-3.6.3-604-RPi_rebootfix.patch
Normal file
65
packages/linux/patches/linux-3.6.3-604-RPi_rebootfix.patch
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
diff -Naur linux-3.6.2.buildfix_patch/arch/arm/mach-bcm2708/bcm2708.c linux-3.6.2.reboot_patch/arch/arm/mach-bcm2708/bcm2708.c
|
||||||
|
--- linux-3.6.2.buildfix_patch/arch/arm/mach-bcm2708/bcm2708.c 2012-10-21 15:18:50.011567812 +0200
|
||||||
|
+++ linux-3.6.2.reboot_patch/arch/arm/mach-bcm2708/bcm2708.c 2012-10-25 21:25:36.797861085 +0200
|
||||||
|
@@ -658,6 +658,21 @@
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void bcm2708_restart(char mode, const char *cmd)
|
||||||
|
+{
|
||||||
|
+ uint32_t pm_rstc, pm_wdog;
|
||||||
|
+ uint32_t timeout = 10;
|
||||||
|
+
|
||||||
|
+ /* Setup watchdog for reset */
|
||||||
|
+ pm_rstc = readl(IO_ADDRESS(PM_RSTC));
|
||||||
|
+
|
||||||
|
+ pm_wdog = PM_PASSWORD | (timeout & PM_WDOG_TIME_SET); // watchdog timer = timer clock / 16; need password (31:16) + value (11:0)
|
||||||
|
+ pm_rstc = PM_PASSWORD | (pm_rstc & PM_RSTC_WRCFG_CLR) | PM_RSTC_WRCFG_FULL_RESET;
|
||||||
|
+
|
||||||
|
+ writel(pm_wdog, IO_ADDRESS(PM_WDOG));
|
||||||
|
+ writel(pm_rstc, IO_ADDRESS(PM_RSTC));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* We can't really power off, but if we do the normal reset scheme, and indicate to bootcode.bin not to reboot, then most of the chip will be powered off */
|
||||||
|
static void bcm2708_power_off(void)
|
||||||
|
{
|
||||||
|
@@ -666,7 +681,7 @@
|
||||||
|
pm_rsts = PM_PASSWORD | (pm_rsts & PM_RSTC_WRCFG_CLR) | PM_RSTS_HADWRH_SET;
|
||||||
|
writel(pm_rsts, IO_ADDRESS(PM_RSTS));
|
||||||
|
/* continue with normal reset mechanism */
|
||||||
|
- arch_reset(0, "");
|
||||||
|
+ bcm2708_restart(0, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init bcm2708_init(void)
|
||||||
|
@@ -910,6 +925,7 @@
|
||||||
|
.timer =&bcm2708_timer,
|
||||||
|
.init_machine = bcm2708_init,
|
||||||
|
.init_early = bcm2708_init_early,
|
||||||
|
+ .restart = bcm2708_restart,
|
||||||
|
MACHINE_END
|
||||||
|
|
||||||
|
module_param(boardrev, uint, 0644);
|
||||||
|
diff -Naur linux-3.6.2.buildfix_patch/arch/arm/mach-bcm2708/include/mach/system.h linux-3.6.2.reboot_patch/arch/arm/mach-bcm2708/include/mach/system.h
|
||||||
|
--- linux-3.6.2.buildfix_patch/arch/arm/mach-bcm2708/include/mach/system.h 2012-10-21 15:18:50.011567812 +0200
|
||||||
|
+++ linux-3.6.2.reboot_patch/arch/arm/mach-bcm2708/include/mach/system.h 2012-10-25 21:24:43.121770267 +0200
|
||||||
|
@@ -35,19 +35,4 @@
|
||||||
|
cpu_do_idle();
|
||||||
|
}
|
||||||
|
|
||||||
|
-static inline void arch_reset(char mode, const char *cmd)
|
||||||
|
-{
|
||||||
|
- uint32_t pm_rstc, pm_wdog;
|
||||||
|
- uint32_t timeout = 10;
|
||||||
|
-
|
||||||
|
- /* Setup watchdog for reset */
|
||||||
|
- pm_rstc = readl(IO_ADDRESS(PM_RSTC));
|
||||||
|
-
|
||||||
|
- pm_wdog = PM_PASSWORD | (timeout & PM_WDOG_TIME_SET); // watchdog timer = timer clock / 16; need password (31:16) + value (11:0)
|
||||||
|
- pm_rstc = PM_PASSWORD | (pm_rstc & PM_RSTC_WRCFG_CLR) | PM_RSTC_WRCFG_FULL_RESET;
|
||||||
|
-
|
||||||
|
- writel(pm_wdog, IO_ADDRESS(PM_WDOG));
|
||||||
|
- writel(pm_rstc, IO_ADDRESS(PM_RSTC));
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user