at91: factorize sram init
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Cc: Nicolas Ferre <nicolas.ferre@atmel.com> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
This commit is contained in:
parent
51ddec7617
commit
f0051d82a6
|
@ -29,15 +29,6 @@
|
||||||
#include "generic.h"
|
#include "generic.h"
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
|
|
||||||
static struct map_desc at91cap9_sram_desc[] __initdata = {
|
|
||||||
{
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91CAP9_SRAM_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91CAP9_SRAM_BASE),
|
|
||||||
.length = AT91CAP9_SRAM_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* Clocks
|
* Clocks
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@ -337,7 +328,7 @@ static void at91cap9_poweroff(void)
|
||||||
|
|
||||||
static void __init at91cap9_map_io(void)
|
static void __init at91cap9_map_io(void)
|
||||||
{
|
{
|
||||||
iotable_init(at91cap9_sram_desc, ARRAY_SIZE(at91cap9_sram_desc));
|
at91_init_sram(0, AT91CAP9_SRAM_BASE, AT91CAP9_SRAM_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init at91cap9_initialize(void)
|
static void __init at91cap9_initialize(void)
|
||||||
|
|
|
@ -30,11 +30,6 @@ static struct map_desc at91rm9200_io_desc[] __initdata = {
|
||||||
.pfn = __phys_to_pfn(AT91RM9200_BASE_EMAC),
|
.pfn = __phys_to_pfn(AT91RM9200_BASE_EMAC),
|
||||||
.length = SZ_16K,
|
.length = SZ_16K,
|
||||||
.type = MT_DEVICE,
|
.type = MT_DEVICE,
|
||||||
}, {
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91RM9200_SRAM_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91RM9200_SRAM_BASE),
|
|
||||||
.length = AT91RM9200_SRAM_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -306,6 +301,7 @@ static void at91rm9200_reset(void)
|
||||||
static void __init at91rm9200_map_io(void)
|
static void __init at91rm9200_map_io(void)
|
||||||
{
|
{
|
||||||
/* Map peripherals */
|
/* Map peripherals */
|
||||||
|
at91_init_sram(0, AT91RM9200_SRAM_BASE, AT91RM9200_SRAM_SIZE);
|
||||||
iotable_init(at91rm9200_io_desc, ARRAY_SIZE(at91rm9200_io_desc));
|
iotable_init(at91rm9200_io_desc, ARRAY_SIZE(at91rm9200_io_desc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,41 +27,6 @@
|
||||||
#include "generic.h"
|
#include "generic.h"
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
|
|
||||||
static struct map_desc at91sam9260_sram_desc[] __initdata = {
|
|
||||||
{
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9260_SRAM0_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9260_SRAM0_BASE),
|
|
||||||
.length = AT91SAM9260_SRAM0_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
}, {
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9260_SRAM0_SIZE - AT91SAM9260_SRAM1_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9260_SRAM1_BASE),
|
|
||||||
.length = AT91SAM9260_SRAM1_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct map_desc at91sam9g20_sram_desc[] __initdata = {
|
|
||||||
{
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9G20_SRAM0_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9G20_SRAM0_BASE),
|
|
||||||
.length = AT91SAM9G20_SRAM0_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
}, {
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9G20_SRAM0_SIZE - AT91SAM9G20_SRAM1_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9G20_SRAM1_BASE),
|
|
||||||
.length = AT91SAM9G20_SRAM1_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct map_desc at91sam9xe_sram_desc[] __initdata = {
|
|
||||||
{
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9XE_SRAM_BASE),
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* Clocks
|
* Clocks
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@ -334,20 +299,20 @@ static void __init at91sam9xe_map_io(void)
|
||||||
sram_size = SZ_16K;
|
sram_size = SZ_16K;
|
||||||
}
|
}
|
||||||
|
|
||||||
at91sam9xe_sram_desc->virtual = AT91_IO_VIRT_BASE - sram_size;
|
at91_init_sram(0, AT91SAM9XE_SRAM_BASE, sram_size);
|
||||||
at91sam9xe_sram_desc->length = sram_size;
|
|
||||||
|
|
||||||
iotable_init(at91sam9xe_sram_desc, ARRAY_SIZE(at91sam9xe_sram_desc));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init at91sam9260_map_io(void)
|
static void __init at91sam9260_map_io(void)
|
||||||
{
|
{
|
||||||
if (cpu_is_at91sam9xe())
|
if (cpu_is_at91sam9xe()) {
|
||||||
at91sam9xe_map_io();
|
at91sam9xe_map_io();
|
||||||
else if (cpu_is_at91sam9g20())
|
} else if (cpu_is_at91sam9g20()) {
|
||||||
iotable_init(at91sam9g20_sram_desc, ARRAY_SIZE(at91sam9g20_sram_desc));
|
at91_init_sram(0, AT91SAM9G20_SRAM0_BASE, AT91SAM9G20_SRAM0_SIZE);
|
||||||
else
|
at91_init_sram(1, AT91SAM9G20_SRAM1_BASE, AT91SAM9G20_SRAM1_SIZE);
|
||||||
iotable_init(at91sam9260_sram_desc, ARRAY_SIZE(at91sam9260_sram_desc));
|
} else {
|
||||||
|
at91_init_sram(0, AT91SAM9260_SRAM0_BASE, AT91SAM9260_SRAM0_SIZE);
|
||||||
|
at91_init_sram(1, AT91SAM9260_SRAM1_BASE, AT91SAM9260_SRAM1_SIZE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init at91sam9260_initialize(void)
|
static void __init at91sam9260_initialize(void)
|
||||||
|
|
|
@ -26,24 +26,6 @@
|
||||||
#include "generic.h"
|
#include "generic.h"
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
|
|
||||||
static struct map_desc at91sam9261_sram_desc[] __initdata = {
|
|
||||||
{
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9261_SRAM_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9261_SRAM_BASE),
|
|
||||||
.length = AT91SAM9261_SRAM_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct map_desc at91sam9g10_sram_desc[] __initdata = {
|
|
||||||
{
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9G10_SRAM_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9G10_SRAM_BASE),
|
|
||||||
.length = AT91SAM9G10_SRAM_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* Clocks
|
* Clocks
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@ -297,9 +279,9 @@ static void at91sam9261_poweroff(void)
|
||||||
static void __init at91sam9261_map_io(void)
|
static void __init at91sam9261_map_io(void)
|
||||||
{
|
{
|
||||||
if (cpu_is_at91sam9g10())
|
if (cpu_is_at91sam9g10())
|
||||||
iotable_init(at91sam9g10_sram_desc, ARRAY_SIZE(at91sam9g10_sram_desc));
|
at91_init_sram(0, AT91SAM9G10_SRAM_BASE, AT91SAM9G10_SRAM_SIZE);
|
||||||
else
|
else
|
||||||
iotable_init(at91sam9261_sram_desc, ARRAY_SIZE(at91sam9261_sram_desc));
|
at91_init_sram(0, AT91SAM9261_SRAM_BASE, AT91SAM9261_SRAM_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init at91sam9261_initialize(void)
|
static void __init at91sam9261_initialize(void)
|
||||||
|
|
|
@ -25,20 +25,6 @@
|
||||||
#include "generic.h"
|
#include "generic.h"
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
|
|
||||||
static struct map_desc at91sam9263_sram_desc[] __initdata = {
|
|
||||||
{
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9263_SRAM0_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9263_SRAM0_BASE),
|
|
||||||
.length = AT91SAM9263_SRAM0_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
}, {
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9263_SRAM0_SIZE - AT91SAM9263_SRAM1_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9263_SRAM1_BASE),
|
|
||||||
.length = AT91SAM9263_SRAM1_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* Clocks
|
* Clocks
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@ -311,7 +297,8 @@ static void at91sam9263_poweroff(void)
|
||||||
|
|
||||||
static void __init at91sam9263_map_io(void)
|
static void __init at91sam9263_map_io(void)
|
||||||
{
|
{
|
||||||
iotable_init(at91sam9263_sram_desc, ARRAY_SIZE(at91sam9263_sram_desc));
|
at91_init_sram(0, AT91SAM9263_SRAM0_BASE, AT91SAM9263_SRAM0_SIZE);
|
||||||
|
at91_init_sram(1, AT91SAM9263_SRAM1_BASE, AT91SAM9263_SRAM1_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init at91sam9263_initialize(void)
|
static void __init at91sam9263_initialize(void)
|
||||||
|
|
|
@ -26,15 +26,6 @@
|
||||||
#include "generic.h"
|
#include "generic.h"
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
|
|
||||||
static struct map_desc at91sam9g45_sram_desc[] __initdata = {
|
|
||||||
{
|
|
||||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9G45_SRAM_SIZE,
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9G45_SRAM_BASE),
|
|
||||||
.length = AT91SAM9G45_SRAM_SIZE,
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* Clocks
|
* Clocks
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@ -327,7 +318,7 @@ static void at91sam9g45_poweroff(void)
|
||||||
|
|
||||||
static void __init at91sam9g45_map_io(void)
|
static void __init at91sam9g45_map_io(void)
|
||||||
{
|
{
|
||||||
iotable_init(at91sam9g45_sram_desc, ARRAY_SIZE(at91sam9g45_sram_desc));
|
at91_init_sram(0, AT91SAM9G45_SRAM_BASE, AT91SAM9G45_SRAM_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init at91sam9g45_initialize(void)
|
static void __init at91sam9g45_initialize(void)
|
||||||
|
|
|
@ -26,13 +26,6 @@
|
||||||
#include "generic.h"
|
#include "generic.h"
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
|
|
||||||
static struct map_desc at91sam9rl_sram_desc[] __initdata = {
|
|
||||||
{
|
|
||||||
.pfn = __phys_to_pfn(AT91SAM9RL_SRAM_BASE),
|
|
||||||
.type = MT_DEVICE,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* Clocks
|
* Clocks
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@ -293,11 +286,8 @@ static void __init at91sam9rl_map_io(void)
|
||||||
sram_size = SZ_16K;
|
sram_size = SZ_16K;
|
||||||
}
|
}
|
||||||
|
|
||||||
at91sam9rl_sram_desc->virtual = AT91_IO_VIRT_BASE - sram_size;
|
|
||||||
at91sam9rl_sram_desc->length = sram_size;
|
|
||||||
|
|
||||||
/* Map SRAM */
|
/* Map SRAM */
|
||||||
iotable_init(at91sam9rl_sram_desc, ARRAY_SIZE(at91sam9rl_sram_desc));
|
at91_init_sram(0, AT91SAM9RL_SRAM_BASE, sram_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init at91sam9rl_initialize(void)
|
static void __init at91sam9rl_initialize(void)
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
|
|
||||||
/* Map io */
|
/* Map io */
|
||||||
extern void __init at91_map_io(void);
|
extern void __init at91_map_io(void);
|
||||||
|
extern void __init at91_init_sram(int bank, unsigned long base,
|
||||||
|
unsigned int length);
|
||||||
|
|
||||||
/* Processors */
|
/* Processors */
|
||||||
extern void __init at91rm9200_set_type(int type);
|
extern void __init at91rm9200_set_type(int type);
|
||||||
|
|
|
@ -45,6 +45,26 @@ void __init at91_init_interrupts(unsigned int *priority)
|
||||||
at91_gpio_irq_setup();
|
at91_gpio_irq_setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct map_desc sram_desc[2] __initdata;
|
||||||
|
|
||||||
|
void __init at91_init_sram(int bank, unsigned long base, unsigned int length)
|
||||||
|
{
|
||||||
|
struct map_desc *desc = &sram_desc[bank];
|
||||||
|
|
||||||
|
desc->virtual = AT91_IO_VIRT_BASE - length;
|
||||||
|
if (bank > 0)
|
||||||
|
desc->virtual -= sram_desc[bank - 1].length;
|
||||||
|
|
||||||
|
desc->pfn = __phys_to_pfn(base);
|
||||||
|
desc->length = length;
|
||||||
|
desc->type = MT_DEVICE;
|
||||||
|
|
||||||
|
pr_info("AT91: sram at 0x%lx of 0x%x mapped at 0x%lx\n",
|
||||||
|
base, length, desc->virtual);
|
||||||
|
|
||||||
|
iotable_init(desc, 1);
|
||||||
|
}
|
||||||
|
|
||||||
static struct map_desc at91_io_desc __initdata = {
|
static struct map_desc at91_io_desc __initdata = {
|
||||||
.virtual = AT91_VA_BASE_SYS,
|
.virtual = AT91_VA_BASE_SYS,
|
||||||
.pfn = __phys_to_pfn(AT91_BASE_SYS),
|
.pfn = __phys_to_pfn(AT91_BASE_SYS),
|
||||||
|
|
Loading…
Reference in New Issue