9
0
Fork 0

A9M2440: Generic code should support generic hardware

The generic A9M2440 comes with a CS8900 network controller at chip select 5.
There are custom specific variants available without this device, but this
case will be handled in a separate baseboard file.

The current Linux-2.6.31 CS8900 network driver is a very poor piece of
code. It needs some patches to also work with this platform. So, I add
two kernel parameters to be able to use this network device also in the NFS
rootfs case (to setup media and MAC).

Signed-off-by: Juergen Beisert <juergen@kreuzholzen.de>
This commit is contained in:
Juergen Beisert 2009-10-27 19:57:36 +01:00 committed by Sascha Hauer
parent b1d8803e02
commit 07d6c14898
2 changed files with 13 additions and 11 deletions

View File

@ -57,14 +57,14 @@ static struct device_d nand_dev = {
};
/*
* SMSC 91C111 network controller on the baseboard
* connected to CS line 1 and interrupt line
* GPIO3, data width is 32 bit
* cs8900 network controller onboard
* Connected to CS line 5 + A24 and interrupt line EINT9,
* data width is 16 bit
*/
static struct device_d network_dev = {
.name = "smc91c111",
.map_base = CS1_BASE + 0x300,
.size = 16,
.name = "cs8900",
.map_base = CS5_BASE + (1 << 24) + 0x300,
.size = 16,
};
static int a9m2440_devices_init(void)
@ -140,10 +140,10 @@ static int a9m2440_devices_init(void)
/* ----------- configure the access to the outer space ---------- */
reg = readl(BWSCON);
/* CS#1 to access the network controller */
reg &= ~0xf0;
reg |= 0xe0;
writel(0x1350, BANKCON1);
/* CS#5 to access the network controller */
reg &= ~0x00f00000;
reg |= 0x00d00000; /* 16 bit */
writel(0x1f4c, BANKCON5);
/* CS#2 to the dual 16550 UART */
reg &= ~0xf00;

View File

@ -24,7 +24,9 @@ else
bootargs="$bootargs root=/dev/nfs nfsroot=$eth0.serverip:$nfsroot,v3,tcp"
fi
bootargs="$bootargs mtdparts=\"NAND 64MiB 3,3V 8-bit:$nand_parts\""
bootargs="$bootargs mtdparts=\"NAND 32MiB 3,3V 8-bit:$nand_parts\""
bootargs="$bootargs cs89x0_media=rj45 cs89x0_mac=$eth0.ethaddr"
if [ x$kernel = xnet ]; then
if [ x$ip = xdhcp ]; then