Commit a6f1063b authored by Lennert Buytenhek's avatar Lennert Buytenhek Committed by Russell King

[ARM] 3062/1: map in various enp2611 peripherals for the ixp2000 netdev driver

Patch from Lennert Buytenhek

The enp2611 version of the ixp2000 netdev driver needs to be able to
access a number of on-board peripherals.  ioremap() is not suitable
for this, as that will cause XCB=000 mappings to be done, which will
make the cpu susceptible to crashing on ixp2400 erratum #66.  Properly
aligned iotable mappings with MT_IXP2000_DEVICE will cause section
mappings with XCB=101 to be done, which is safe.
Signed-off-by: default avatarLennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: default avatarDeepak Saxena <dsaxena@plexity.net>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 37bb30e8
...@@ -63,6 +63,35 @@ static struct sys_timer enp2611_timer = { ...@@ -63,6 +63,35 @@ static struct sys_timer enp2611_timer = {
}; };
/*************************************************************************
* ENP-2611 I/O
*************************************************************************/
static struct map_desc enp2611_io_desc[] __initdata = {
{
.virtual = ENP2611_CALEB_VIRT_BASE,
.physical = ENP2611_CALEB_PHYS_BASE,
.length = ENP2611_CALEB_SIZE,
.type = MT_IXP2000_DEVICE
}, {
.virtual = ENP2611_PM3386_0_VIRT_BASE,
.physical = ENP2611_PM3386_0_PHYS_BASE,
.length = ENP2611_PM3386_0_SIZE,
.type = MT_IXP2000_DEVICE
}, {
.virtual = ENP2611_PM3386_1_VIRT_BASE,
.physical = ENP2611_PM3386_1_PHYS_BASE,
.length = ENP2611_PM3386_1_SIZE,
.type = MT_IXP2000_DEVICE
}
};
void __init enp2611_map_io(void)
{
ixp2000_map_io();
iotable_init(enp2611_io_desc, ARRAY_SIZE(enp2611_io_desc));
}
/************************************************************************* /*************************************************************************
* ENP-2611 PCI * ENP-2611 PCI
*************************************************************************/ *************************************************************************/
...@@ -229,7 +258,7 @@ MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board") ...@@ -229,7 +258,7 @@ MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board")
.phys_io = IXP2000_UART_PHYS_BASE, .phys_io = IXP2000_UART_PHYS_BASE,
.io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc,
.boot_params = 0x00000100, .boot_params = 0x00000100,
.map_io = ixp2000_map_io, .map_io = enp2611_map_io,
.init_irq = ixp2000_init_irq, .init_irq = ixp2000_init_irq,
.timer = &enp2611_timer, .timer = &enp2611_timer,
.init_machine = enp2611_init_machine, .init_machine = enp2611_init_machine,
......
...@@ -21,8 +21,20 @@ ...@@ -21,8 +21,20 @@
#ifndef __ENP2611_H #ifndef __ENP2611_H
#define __ENP2611_H #define __ENP2611_H
#define ENP2611_GPIO_SCL 0x07 #define ENP2611_CALEB_PHYS_BASE 0xc5000000
#define ENP2611_GPIO_SDA 0x06 #define ENP2611_CALEB_VIRT_BASE 0xfe000000
#define ENP2611_CALEB_SIZE 0x00100000
#define ENP2611_PM3386_0_PHYS_BASE 0xc6000000
#define ENP2611_PM3386_0_VIRT_BASE 0xfe100000
#define ENP2611_PM3386_0_SIZE 0x00100000
#define ENP2611_PM3386_1_PHYS_BASE 0xc6400000
#define ENP2611_PM3386_1_VIRT_BASE 0xfe200000
#define ENP2611_PM3386_1_SIZE 0x00100000
#define ENP2611_GPIO_SCL 7
#define ENP2611_GPIO_SDA 6
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment