smsc911x: add imx cpld spi register access

Add custom register read/write functions. Some i.MX 3-stack boards
have CPLD to do spi to parallel bus translation to talk to smsc911x.

Signed-off-by: Rob Herring <r.herring@freescale.com>
This commit is contained in:
Rob Herring
2009-10-07 17:00:20 -05:00
committed by Matt Sealey
parent d901b1687c
commit 321db35ca2

View File

@@ -128,6 +128,16 @@ static inline u32 smsc911x_reg_read(struct smsc911x_data *pdata, u32 reg)
if (pdata->config.flags & SMSC911X_USE_32BIT)
return readl(pdata->ioaddr + reg);
#ifdef CONFIG_ARCH_MXC
if (pdata->config.flags & 0x8000) {
u32 data;
unsigned long flags;
spin_lock_irqsave(&pdata->dev_lock, flags);
data = spi_cpld_read(reg);
spin_unlock_irqrestore(&pdata->dev_lock, flags);
return data;
} else
#endif
if (pdata->config.flags & SMSC911X_USE_16BIT) {
u32 data;
unsigned long flags;
@@ -155,6 +165,15 @@ static inline void smsc911x_reg_write(struct smsc911x_data *pdata, u32 reg,
return;
}
#ifdef CONFIG_ARCH_MXC
if (pdata->config.flags & 0x8000) {
unsigned long flags;
spin_lock_irqsave(&pdata->dev_lock, flags);
spi_cpld_write(reg, val);
spin_unlock_irqrestore(&pdata->dev_lock, flags);
return;
} else
#endif
if (pdata->config.flags & SMSC911X_USE_16BIT) {
unsigned long flags;