[U-Boot-Users] [PATCH v2 4/7] add SMSC LAN9x1x Network driver

Ben Warren biggerbadderben at gmail.com
Thu Mar 27 18:39:14 CET 2008


Thanks Sascha,

Sascha Hauer wrote:
> On Thu, Mar 27, 2008 at 10:39:38AM -0000, Peter Pearse wrote:
>   
>>> -----Original Message-----
>>> From: Ben Warren [mailto:biggerbadderben at gmail.com] 
>>> Sent: 26 March 2008 20:08
>>> To: Guennadi Liakhovetski
>>> Cc: u-boot-users at lists.sourceforge.net; Wolfgang Denk; Peter Pearse
>>> Subject: Re: [U-Boot-Users] [PATCH v2 4/7] add SMSC LAN9x1x 
>>> Network driver
>>>
>>> Hi Guennadi,
>>>
>>> Guennadi Liakhovetski wrote:
>>>       
>>>> From: Sascha Hauer <s.hauer at pengutronix.de>
>>>>
>>>> This patch adds a driver for the following smsc network controllers:
>>>> LAN9115
>>>> LAN9116
>>>> LAN9117
>>>> LAN9215
>>>> LAN9216
>>>> LAN9217
>>>>
>>>>   
>>>>         
>>> How many of these have been tested, and on what platforms.  
>>> I'm asking because the code seems to assume a 32-bit 
>>> interface and these aren't all 32-bit chips.
>>>       
>> Comments please Sascha.
>>     
>
> It's tested on the LAN9217 but I remember using it on one of the 16bit
> controllers as well, maybe with some register access adjustments. Maybe
> it's best to abstract the register accesses because I already had a
> board which had the address lines shifted (somehow SMSC seems to provoke
> this)
>
> Sascha
>
>   
I have no issue with bringing this in as a 32-bit only driver, leaving 
16-bit implementation as a future exercise.  We really should do this 
right, and the amount of code in the driver is small, so hopefully it 
can be fixed up for this merge window.  If either you or Guennadi can do 
the following, I'll try my best to keep up:

1. Change all register definitions as following:
    #define RX_DATA_FIFO   __REG(CONFIG_DRIVER_SMC911X_BASE + 0x00)
       to
    #define RX_DATA_FIFO   CONFIG_DRIVER_SMC911X_BASE + 0x00

2.  Implement read/write methods
    #ifdef CONFIG_DRIVER_SMC911X_32_BIT
    static inline u32 reg_read(u32 addr) ...
    static inline void reg_write(u32 addr, u32 val) ...
    #else
    #error "SMC911X: Only 32-bit bus is supported"
    #endif

    or use macros if you insist.  I won't get religious on this, just 
make it readable and debuggable.


thanks,
Ben




More information about the U-Boot mailing list