From 08313f77295518d0c3cc39b08b10ce8c1d813d9b Mon Sep 17 00:00:00 2001 From: Alessandro Rubini Date: Tue, 15 Feb 2011 09:39:35 -0700 Subject: HACK: smc911x.h register access change for minikit Signed-off-by: Alessandro Rubini --- drivers/net/smc911x.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/net/smc911x.h b/drivers/net/smc911x.h index 05e007c6d..3e0701031 100644 --- a/drivers/net/smc911x.h +++ b/drivers/net/smc911x.h @@ -53,14 +53,24 @@ void smc911x_reg_write(struct eth_device *dev, u32 offset, u32 val) #elif defined (CONFIG_SMC911X_16_BIT) static inline u32 smc911x_reg_read(struct eth_device *dev, u32 offset) { +#ifdef CONFIG_SNOWBALL + volatile u16 *addr_16 = (u16 *)(dev->iobase + 2 * offset); + return ((*addr_16 & 0x0000ffff) | (*(addr_16 + 2) << 16)); +#else volatile u16 *addr_16 = (u16 *)(dev->iobase + offset); return ((*addr_16 & 0x0000ffff) | (*(addr_16 + 1) << 16)); +#endif } static inline void smc911x_reg_write(struct eth_device *dev, u32 offset, u32 val) { +#ifdef CONFIG_SNOWBALL + *(volatile u16 *)(dev->iobase + 2 * offset) = (u16)val; + *(volatile u16 *)(dev->iobase + 2 * offset + 4) = (u16)(val >> 16); +#else *(volatile u16 *)(dev->iobase + offset) = (u16)val; *(volatile u16 *)(dev->iobase + offset + 2) = (u16)(val >> 16); +#endif } #else #error "SMC911X: undefined bus width" -- cgit v1.2.3