MIPS: Malta: Use syscon-reboot driver to reboot
Make use of the generic syscon-reboot driver to reboot the Malta board, reducing the amount of platform code it requires. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: Stephan Linz <linz@li-pro.net> Cc: Jacek Anaszewski <j.anaszewski@samsung.com> Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Cc: Rob Herring <robh+dt@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: linux-mips@linux-mips.org Cc: devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/14279/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
97af8e1cb3
commit
10b6ea0959
|
@ -81,6 +81,18 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fpga_regs: system-controller@1f000000 {
|
||||||
|
compatible = "mti,malta-fpga", "syscon", "simple-mfd";
|
||||||
|
reg = <0x1f000000 0x1000>;
|
||||||
|
|
||||||
|
reboot {
|
||||||
|
compatible = "syscon-reboot";
|
||||||
|
regmap = <&fpga_regs>;
|
||||||
|
offset = <0x500>;
|
||||||
|
mask = <0x4d>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
isa {
|
isa {
|
||||||
compatible = "isa";
|
compatible = "isa";
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
|
|
|
@ -318,6 +318,8 @@ CONFIG_LIBERTAS=m
|
||||||
# CONFIG_SERIO_I8042 is not set
|
# CONFIG_SERIO_I8042 is not set
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_POWER_RESET_SYSCON=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_CIRRUS=y
|
CONFIG_FB_CIRRUS=y
|
||||||
|
|
|
@ -331,6 +331,8 @@ CONFIG_LIBERTAS=m
|
||||||
# CONFIG_SERIO_I8042 is not set
|
# CONFIG_SERIO_I8042 is not set
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_POWER_RESET_SYSCON=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_CIRRUS=y
|
CONFIG_FB_CIRRUS=y
|
||||||
|
|
|
@ -331,6 +331,8 @@ CONFIG_LIBERTAS=m
|
||||||
# CONFIG_SERIO_I8042 is not set
|
# CONFIG_SERIO_I8042 is not set
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_POWER_RESET_SYSCON=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_CIRRUS=y
|
CONFIG_FB_CIRRUS=y
|
||||||
|
|
|
@ -132,6 +132,8 @@ CONFIG_LEGACY_PTY_COUNT=4
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_POWER_RESET_SYSCON=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FIRMWARE_EDID=y
|
CONFIG_FIRMWARE_EDID=y
|
||||||
|
|
|
@ -132,6 +132,8 @@ CONFIG_LEGACY_PTY_COUNT=16
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_POWER_RESET_SYSCON=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
|
|
|
@ -134,6 +134,8 @@ CONFIG_LEGACY_PTY_COUNT=4
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_POWER_RESET_SYSCON=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FIRMWARE_EDID=y
|
CONFIG_FIRMWARE_EDID=y
|
||||||
|
|
|
@ -137,6 +137,8 @@ CONFIG_LEGACY_PTY_COUNT=4
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_POWER_RESET_SYSCON=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
|
|
|
@ -131,6 +131,8 @@ CONFIG_LEGACY_PTY_COUNT=16
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_POWER_RESET_SYSCON=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
|
|
|
@ -326,6 +326,8 @@ CONFIG_LIBERTAS=m
|
||||||
# CONFIG_SERIO_I8042 is not set
|
# CONFIG_SERIO_I8042 is not set
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
|
CONFIG_POWER_RESET=y
|
||||||
|
CONFIG_POWER_RESET_SYSCON=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_CIRRUS=y
|
CONFIG_FB_CIRRUS=y
|
||||||
|
|
|
@ -8,21 +8,11 @@
|
||||||
*/
|
*/
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/pm.h>
|
#include <linux/pm.h>
|
||||||
|
#include <linux/reboot.h>
|
||||||
|
|
||||||
#include <asm/reboot.h>
|
#include <asm/reboot.h>
|
||||||
#include <asm/mach-malta/malta-pm.h>
|
#include <asm/mach-malta/malta-pm.h>
|
||||||
|
|
||||||
#define SOFTRES_REG 0x1f000500
|
|
||||||
#define GORESET 0x42
|
|
||||||
|
|
||||||
static void mips_machine_restart(char *command)
|
|
||||||
{
|
|
||||||
unsigned int __iomem *softres_reg =
|
|
||||||
ioremap(SOFTRES_REG, sizeof(unsigned int));
|
|
||||||
|
|
||||||
__raw_writel(GORESET, softres_reg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void mips_machine_halt(void)
|
static void mips_machine_halt(void)
|
||||||
{
|
{
|
||||||
while (true);
|
while (true);
|
||||||
|
@ -33,12 +23,11 @@ static void mips_machine_power_off(void)
|
||||||
mips_pm_suspend(PIIX4_FUNC3IO_PMCNTRL_SUS_TYP_SOFF);
|
mips_pm_suspend(PIIX4_FUNC3IO_PMCNTRL_SUS_TYP_SOFF);
|
||||||
|
|
||||||
pr_info("Failed to power down, resetting\n");
|
pr_info("Failed to power down, resetting\n");
|
||||||
mips_machine_restart(NULL);
|
machine_restart(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init mips_reboot_setup(void)
|
static int __init mips_reboot_setup(void)
|
||||||
{
|
{
|
||||||
_machine_restart = mips_machine_restart;
|
|
||||||
_machine_halt = mips_machine_halt;
|
_machine_halt = mips_machine_halt;
|
||||||
pm_power_off = mips_machine_power_off;
|
pm_power_off = mips_machine_power_off;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue