net: w5100: support W5500
authorAkinobu Mita <akinobu.mita@gmail.com>
Tue, 26 Apr 2016 20:43:48 +0000 (05:43 +0900)
committerDavid S. Miller <davem@davemloft.net>
Thu, 28 Apr 2016 01:55:45 +0000 (21:55 -0400)
commit35ef7d689d7d54ab345b179e50c749fe3a2529eb
tree8afb2e404a80c1ed12a6a2314d2cff35daec69a3
parentc0cc53162a0644dd57dce5e2fbb9bbafdc57d183
net: w5100: support W5500

This adds support for W5500 chip.

W5500 has similar register and memory organization with W5100 and W5200.
There are a few important differences listed below but it is still
possible to share common code with W5100 and W5200.

* W5500 register and memory are organized by multiple blocks.  Each one
is selected by 16bits offset address and 5bits block select bits.

But the existing register access operations take u16 address.  This change
extends the addess by u32 address and put offset address to lower 16bits
and block select bits to upper 16bits.

This change also adds the offset addresses for socket register and TX/RX
memory blocks to the driver private data structure in order to reduce
conditional switches for each chip.

* W5500 has the different register offset for socket interrupt mask
register.  Newly added internal functions w5100_enable_intr() and
w5100_disable_intr() take care of the diffrence.

* W5500 has the different register offset for retry time-value register.
But this register is only used to verify that the reset value is correctly
read at initialization.  So move the verification to w5100_hw_reset()
which already does different things for different chips.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Mike Sinkovsky <msink@permonline.ru>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/wiznet/Kconfig
drivers/net/ethernet/wiznet/w5100-spi.c
drivers/net/ethernet/wiznet/w5100.c
drivers/net/ethernet/wiznet/w5100.h