diff --git a/arch/arm/boards/scb9328/scb9328.c b/arch/arm/boards/scb9328/scb9328.c index e781393ea..3c0499625 100644 --- a/arch/arm/boards/scb9328/scb9328.c +++ b/arch/arm/boards/scb9328/scb9328.c @@ -55,6 +55,7 @@ static struct dm9000_platform_data dm9000_data = { .iobase = 0x16000000, .iodata = 0x16000004, .buswidth = DM9000_WIDTH_16, + .srom = 1; }; static struct device_d dm9000_dev = { diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c index 2062c6669..ab0673569 100644 --- a/drivers/net/dm9000.c +++ b/drivers/net/dm9000.c @@ -498,8 +498,9 @@ static int dm9000_probe(struct device_d *dev) edev->send = dm9000_eth_send; edev->recv = dm9000_eth_rx; edev->halt = dm9000_eth_halt; - edev->get_ethaddr = dm9000_get_ethaddr; edev->set_ethaddr = dm9000_set_ethaddr; + if (pdata->srom) + edev->get_ethaddr = dm9000_get_ethaddr; /* RESET device */ dm9000_reset(priv); diff --git a/include/dm9000.h b/include/dm9000.h index 3cc52356b..b4a04b1e6 100644 --- a/include/dm9000.h +++ b/include/dm9000.h @@ -10,6 +10,7 @@ struct dm9000_platform_data { unsigned long iobase; unsigned long iodata; int buswidth; + int srom; }; #endif /* __DM9000_H__ */