Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b437c52c authored by Linus Walleij's avatar Linus Walleij
Browse files

ARM: integrator: move restart to the device tree



Using the augmented reset driver for the Versatile family,
we can move the reset handling for the Integrator out of the
machine. We add a "syscon" attribute to the core module, and
access the syscon registers using this handle. We need to
select SYSCON, POWER, POWER_RESET and POWER_RESET_VERSATILE
in order for the restart functionality to always be
available on all systems (it should not be optional).

Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent beb5818b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@

/ {
	core-module@10000000 {
		compatible = "arm,core-module-integrator";
		compatible = "arm,core-module-integrator", "syscon";
		reg = <0x10000000 0x200>;
	};

+4 −0
Original line number Diff line number Diff line
@@ -8,8 +8,12 @@ config ARCH_INTEGRATOR
	select GENERIC_CLOCKEVENTS
	select HAVE_TCM
	select ICST
	select MFD_SYSCON
	select MULTI_IRQ_HANDLER
	select PLAT_VERSATILE
	select POWER_RESET
	select POWER_RESET_VERSATILE
	select POWER_SUPPLY
	select SPARSE_IRQ
	select USE_OF
	select VERSATILE_FPGA_IRQ
+0 −1
Original line number Diff line number Diff line
@@ -11,7 +11,6 @@ void cm_clear_irqs(void);
#define CM_CTRL_LED			(1 << 0)
#define CM_CTRL_nMBDET			(1 << 1)
#define CM_CTRL_REMAP			(1 << 2)
#define CM_CTRL_RESET			(1 << 3)

/*
 * Integrator/AP,PP2 specific
+0 −1
Original line number Diff line number Diff line
@@ -4,5 +4,4 @@ extern struct amba_pl010_data ap_uart_data;
void integrator_init_early(void);
int integrator_init(bool is_cp);
void integrator_reserve(void);
void integrator_restart(enum reboot_mode, const char *);
void integrator_init_sysfs(struct device *parent, u32 id);
+0 −8
Original line number Diff line number Diff line
@@ -140,14 +140,6 @@ void __init integrator_reserve(void)
	memblock_reserve(PHYS_OFFSET, __pa(swapper_pg_dir) - PHYS_OFFSET);
}

/*
 * To reset, we hit the on-board reset register in the system FPGA
 */
void integrator_restart(enum reboot_mode mode, const char *cmd)
{
	cm_control(CM_CTRL_RESET, CM_CTRL_RESET);
}

static u32 integrator_id;

static ssize_t intcp_get_manf(struct device *dev,
Loading