
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message 1250023747-20224-3-git-send-email-plagnioj@jcrosoft.com you wrote:
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com
...
#ifdef CONFIG_SMC_USE_32_BIT -#define USE_32_BIT 1 +#define is_use_32bit(x) (x->use_32bit)
Does switching from a compile time check to a run time check not cause an avoidable growth of the memory footprint?
How much bigger is the new code?
-#undef USE_32_BIT +#define is_use_32bit(x) (0) #endif
...
-static inline word SMC_inw(dword offset) +static inline word SMC_io_inw(struct smc91111_device *smc, dword offset) { word v;
- v = *((volatile word*)(SMC_BASE_ADDRESS+offset));
- v = *((volatile word*)(smc->regs+offset)); barrier(); *(volatile u32*)(0xc0000000); return v;
}
-static inline void SMC_outw(word value, dword offset) +static inline void SMC_io_outw(struct smc91111_device *smc, word value,
dword offset)
{
- *((volatile word*)(SMC_BASE_ADDRESS+offset)) = value;
- *((volatile word*)(smc->regs+offset)) = value; barrier(); *(volatile u32*)(0xc0000000);
}
Please use proper I/O accessor functions here.
-static inline byte SMC_inb(dword offset) +static inline byte SMC_io_inb(struct smc91111_device *smc, dword offset) { word _w;
...and here.
@@ -264,18 +234,22 @@ static inline byte SMC_inb(dword offset) return (offset & 1) ? (byte)(_w >> 8) : (byte)(_w); }
-static inline void SMC_outb(byte value, dword offset) +static inline void SMC_io_outb(struct smc91111_device *smc, byte value,
dword offset)
{ word _w;
_w = SMC_inw(offset & ~((dword)1)); if (offset & 1)
*((volatile word*)(SMC_BASE_ADDRESS+(offset & ~((dword)1)))) = (value<<8) | (_w & 0x00ff);
*((volatile word*)(smc->regs+(offset & ~((dword)1)))) =
else(value<<8) | (_w & 0x00ff);
*((volatile word*)(SMC_BASE_ADDRESS+offset)) = value | (_w & 0xff00);
*((volatile word*)(smc->regs+offset)) =
value | (_w & 0xff00);
}
...and here.
-static inline void SMC_insw(dword offset, volatile uchar* buf, dword len) +static inline void SMC_io_insw(struct smc91111_device *smc, dword offset,
volatile uchar* buf, dword len)
{ volatile word *p = (volatile word *)buf;
...and here.
@@ -286,7 +260,8 @@ static inline void SMC_insw(dword offset, volatile uchar* buf, dword len) } }
-static inline void SMC_outsw(dword offset, uchar* buf, dword len) +static inline void SMC_io_outsw(struct smc91111_device *smc, dword offset,
uchar* buf, dword len)
{ volatile word *p = (volatile word *)buf;
...and here.
-static int smc_close() +static void smc_halt(struct eth_device *netdev) {
- struct smc91111_device *smc = to_smc91111(netdev); PRINTK2("%s: smc_close\n", SMC_DEV_NAME);
You should also adapt the debug messages to the changed function names.
+#ifdef CONFIG_SMC_USE_32_BIT +#define USE_32BIT 1 +#else +#define USE_32BIT 0 +#endif
Above you get rid of the USE_32BIT stuff; here you re-introduce it. Why?
diff --git a/drivers/net/smc91111.h b/drivers/net/smc91111.h index 967addd..b2ed6a5 100644 --- a/drivers/net/smc91111.h +++ b/drivers/net/smc91111.h @@ -72,6 +72,10 @@ typedef unsigned long int dword;
/* Because of bank switching, the LAN91xxx uses only 16 I/O ports */
+#ifndef SMC_BASE_ADDRESS +#define SMC_BASE_ADDRESS smc->regs +#endif
#define SMC_IO_EXTENT 16
#ifdef CONFIG_PXA250 @@ -301,8 +305,6 @@ typedef unsigned long int dword;
#endif /* CONFIG_SMC_USE_IOFUNCS */
-#if defined(CONFIG_SMC_USE_32_BIT)
#ifdef CONFIG_XSENGINE #define SMC_inl(r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r<<1))))
This should be fixed to use I/O accessors, too.
include/configs/ADNPESC1.h | 1 + include/configs/DK1C20.h | 1 + include/configs/DK1S10.h | 1 + include/configs/EP1C20.h | 1 + include/configs/EP1S10.h | 1 + include/configs/EP1S40.h | 1 + include/configs/MigoR.h | 1 + include/configs/PK1C20.h | 1 + include/configs/bf533-ezkit.h | 1 + include/configs/bf533-stamp.h | 1 + include/configs/bf538f-ezkit.h | 1 + include/configs/bf561-ezkit.h | 1 + include/configs/blackstamp.h | 1 + include/configs/cerf250.h | 1 + include/configs/cm-bf533.h | 1 + include/configs/cm-bf561.h | 1 + include/configs/cradle.h | 1 + include/configs/delta.h | 1 + include/configs/dnp1110.h | 1 + include/configs/gr_cpci_ax2000.h | 1 + include/configs/gr_ep2s60.h | 1 + include/configs/innokom.h | 1 + include/configs/integratorcp.h | 1 + include/configs/logodl.h | 1 + include/configs/lpd7a400-10.h | 1 + include/configs/lpd7a404-10.h | 1 + include/configs/ms7722se.h | 1 + include/configs/netstar.h | 1 + include/configs/nhk8815.h | 1 + include/configs/pxa255_idp.h | 1 + include/configs/versatile.h | 1 + include/configs/voiceblue.h | 1 + include/configs/xaeniax.h | 1 + include/configs/xm250.h | 1 + include/configs/xsengine.h | 1 + include/configs/zylonite.h | 1 +
This is a pretty long list of boards which is affected. How many of these have actuaaly been tested with this patch, and which ones, and to what extent?
Best regards,
Wolfgang Denk