Subject: [PATCH 1/8] net: smc91x: Fix device tree based configuration so it's usable

From: [email-masked] (Tony Lindgren)
Date: Thu, 14 Nov 2013 08:08:13 -0800

* Mark Rutland <[email-masked]> [131114 03:04]:
> On Thu, Nov 14, 2013 at 02:35:30AM +0000, Tony Lindgren wrote:
> > Commit 89ce376c6bdc (drivers/net: Use of_match_ptr() macro in smc91x.c)
> > added minimal device tree support to smc91x, but it's not working on
> > many platforms because of the lack of some key configuration bits.
> > 
> > Fix the issue by parsing the necessary configuration like the
> > smc911x driver is doing.
> > 
> > Cc: Nicolas Pitre <[email-masked]>
> > Cc: "David S. Miller" <[email-masked]>
> > Cc: netdev at vger.kernel.org
> > Cc: devicetree at vger.kernel.org
> > Signed-off-by: Tony Lindgren <[email-masked]>
> > ---
> > 
> > If this looks OK, I'd like to merge this as a fix via arm-soc tree
> > along with the other patches in this series as my later patches
> > depend on patches in this series.
> > 
> > ---
> >  .../devicetree/bindings/net/smsc-lan91c111.txt     |  4 ++
> >  drivers/net/ethernet/smsc/smc91x.c                 | 52 +++++++++++++++++-----
> >  2 files changed, 46 insertions(+), 10 deletions(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/net/smsc-lan91c111.txt b/Documentation/devicetree/bindings/net/smsc-lan91c111.txt
> > index 953049b..53d69e3 100644
> > --- a/Documentation/devicetree/bindings/net/smsc-lan91c111.txt
> > +++ b/Documentation/devicetree/bindings/net/smsc-lan91c111.txt
> > @@ -8,3 +8,7 @@ Required properties:
> >  Optional properties:
> >  - phy-device : phandle to Ethernet phy
> >  - local-mac-address : Ethernet mac address to use
> > +- reg-io-width : Specify the size (in bytes) of the IO accesses that
> > +  should be performed on the device.  Valid value for SMSC LAN is
> > +  1, 2 or 4.  If it's omitted or invalid, the size would be 2.
> 
> In the driver the supported access sizes are not mutually exclusive.  It
> would be nice for the binding to have the same property.

Hmm indeed. How about we add reg-io-width-mask:

	1 = 8-bit access
	2 = 16-bit access
	4 = 32-bit access
	...

So for a driver to support 8, 16 and 32-bit access the mask would
be:
	reg-io-width-mask = <7>;

Although the values for reg-io-width would support masks too, it
might be better to have reg-io-width-mask to avoid confusion.

Or do you have any better ideas?
 
> > +- smsc,nowait : Setup for fast register access with no waits
> 
> I'm confused by what this means. When would this be selected, and when
> wouldn't it be?

The driver has a module parameter for it and the comments say:

"nowait  = 0 for normal wait states, 1 eliminates additional wait states"

Most platforms seem to set it, but the default is to not set it.
I guess we could that be a module parameter for now as that's a
timing optimization.

Regards,

Tony