AT91: reset: extend alternate reset procedure to several chips
Several at91sam9 chips need the alternate reset procedure to be sure to halt SDRAM smoothly before resetting the chip. This is an extension of previous patch "Fix AT91SAM9G20 reset" to all chips affected. Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
This commit is contained in:
parent
1345562b44
commit
bb413db591
|
@ -11,11 +11,11 @@ obj-$(CONFIG_AT91_PMC_UNIT) += clock.o
|
|||
|
||||
# CPU-specific support
|
||||
obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o at91rm9200_devices.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o at91sam9_alt_reset.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o at91sam9_alt_reset.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o at91sam9_alt_reset.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o at91sam9_alt_reset.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o at91sam9_alt_reset.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o at91sam9_alt_reset.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o
|
||||
obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o
|
||||
|
|
|
@ -25,8 +25,6 @@
|
|||
#include "generic.h"
|
||||
#include "clock.h"
|
||||
|
||||
extern void at91sam9_alt_reset(void);
|
||||
|
||||
static struct map_desc at91sam9260_io_desc[] __initdata = {
|
||||
{
|
||||
.virtual = AT91_VA_BASE_SYS,
|
||||
|
@ -281,11 +279,6 @@ static struct at91_gpio_bank at91sam9260_gpio[] = {
|
|||
}
|
||||
};
|
||||
|
||||
static void at91sam9260_reset(void)
|
||||
{
|
||||
at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
|
||||
}
|
||||
|
||||
static void at91sam9260_poweroff(void)
|
||||
{
|
||||
at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW);
|
||||
|
@ -329,11 +322,7 @@ void __init at91sam9260_initialize(unsigned long main_clock)
|
|||
else
|
||||
iotable_init(at91sam9260_sram_desc, ARRAY_SIZE(at91sam9260_sram_desc));
|
||||
|
||||
if (cpu_is_at91sam9g20())
|
||||
at91_arch_reset = at91sam9_alt_reset;
|
||||
else
|
||||
at91_arch_reset = at91sam9260_reset;
|
||||
|
||||
at91_arch_reset = at91sam9_alt_reset;
|
||||
pm_power_off = at91sam9260_poweroff;
|
||||
at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1)
|
||||
| (1 << AT91SAM9260_ID_IRQ2);
|
||||
|
|
|
@ -257,11 +257,6 @@ static struct at91_gpio_bank at91sam9261_gpio[] = {
|
|||
}
|
||||
};
|
||||
|
||||
static void at91sam9261_reset(void)
|
||||
{
|
||||
at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
|
||||
}
|
||||
|
||||
static void at91sam9261_poweroff(void)
|
||||
{
|
||||
at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW);
|
||||
|
@ -283,7 +278,7 @@ void __init at91sam9261_initialize(unsigned long main_clock)
|
|||
iotable_init(at91sam9261_sram_desc, ARRAY_SIZE(at91sam9261_sram_desc));
|
||||
|
||||
|
||||
at91_arch_reset = at91sam9261_reset;
|
||||
at91_arch_reset = at91sam9_alt_reset;
|
||||
pm_power_off = at91sam9261_poweroff;
|
||||
at91_extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1)
|
||||
| (1 << AT91SAM9261_ID_IRQ2);
|
||||
|
|
|
@ -269,11 +269,6 @@ static struct at91_gpio_bank at91sam9263_gpio[] = {
|
|||
}
|
||||
};
|
||||
|
||||
static void at91sam9263_reset(void)
|
||||
{
|
||||
at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
|
||||
}
|
||||
|
||||
static void at91sam9263_poweroff(void)
|
||||
{
|
||||
at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW);
|
||||
|
@ -289,7 +284,7 @@ void __init at91sam9263_initialize(unsigned long main_clock)
|
|||
/* Map peripherals */
|
||||
iotable_init(at91sam9263_io_desc, ARRAY_SIZE(at91sam9263_io_desc));
|
||||
|
||||
at91_arch_reset = at91sam9263_reset;
|
||||
at91_arch_reset = at91sam9_alt_reset;
|
||||
pm_power_off = at91sam9263_poweroff;
|
||||
at91_extern_irq = (1 << AT91SAM9263_ID_IRQ0) | (1 << AT91SAM9263_ID_IRQ1);
|
||||
|
||||
|
|
|
@ -242,11 +242,6 @@ static struct at91_gpio_bank at91sam9rl_gpio[] = {
|
|||
}
|
||||
};
|
||||
|
||||
static void at91sam9rl_reset(void)
|
||||
{
|
||||
at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
|
||||
}
|
||||
|
||||
static void at91sam9rl_poweroff(void)
|
||||
{
|
||||
at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW);
|
||||
|
@ -281,7 +276,7 @@ void __init at91sam9rl_initialize(unsigned long main_clock)
|
|||
/* Map SRAM */
|
||||
iotable_init(at91sam9rl_sram_desc, ARRAY_SIZE(at91sam9rl_sram_desc));
|
||||
|
||||
at91_arch_reset = at91sam9rl_reset;
|
||||
at91_arch_reset = at91sam9_alt_reset;
|
||||
pm_power_off = at91sam9rl_poweroff;
|
||||
at91_extern_irq = (1 << AT91SAM9RL_ID_IRQ0);
|
||||
|
||||
|
|
|
@ -46,6 +46,9 @@ extern void __init at91_clock_associate(const char *id, struct device *dev, cons
|
|||
extern void at91_irq_suspend(void);
|
||||
extern void at91_irq_resume(void);
|
||||
|
||||
/* reset */
|
||||
extern void at91sam9_alt_reset(void);
|
||||
|
||||
/* GPIO */
|
||||
#define AT91RM9200_PQFP 3 /* AT91RM9200 PQFP package has 3 banks */
|
||||
#define AT91RM9200_BGA 4 /* AT91RM9200 BGA package has 4 banks */
|
||||
|
|
Loading…
Reference in New Issue