net: dsa: lan9303: Multiply by 4 to get MDIO register
lan9303_mdio_write()/_read() must multiply register number by 4 to get offset. Added some commments to the register definitions. Signed-off-by: Egil Hjelmeland <privat@egil-hjelmeland.no> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d329ac88eb
commit
ab78acb152
|
@ -20,6 +20,9 @@
|
||||||
|
|
||||||
#include "lan9303.h"
|
#include "lan9303.h"
|
||||||
|
|
||||||
|
/* 13.2 System Control and Status Registers
|
||||||
|
* Multiply register number by 4 to get address offset.
|
||||||
|
*/
|
||||||
#define LAN9303_CHIP_REV 0x14
|
#define LAN9303_CHIP_REV 0x14
|
||||||
# define LAN9303_CHIP_ID 0x9303
|
# define LAN9303_CHIP_ID 0x9303
|
||||||
#define LAN9303_IRQ_CFG 0x15
|
#define LAN9303_IRQ_CFG 0x15
|
||||||
|
@ -53,6 +56,9 @@
|
||||||
#define LAN9303_VIRT_PHY_BASE 0x70
|
#define LAN9303_VIRT_PHY_BASE 0x70
|
||||||
#define LAN9303_VIRT_SPECIAL_CTRL 0x77
|
#define LAN9303_VIRT_SPECIAL_CTRL 0x77
|
||||||
|
|
||||||
|
/*13.4 Switch Fabric Control and Status Registers
|
||||||
|
* Accessed indirectly via SWITCH_CSR_CMD, SWITCH_CSR_DATA.
|
||||||
|
*/
|
||||||
#define LAN9303_SW_DEV_ID 0x0000
|
#define LAN9303_SW_DEV_ID 0x0000
|
||||||
#define LAN9303_SW_RESET 0x0001
|
#define LAN9303_SW_RESET 0x0001
|
||||||
#define LAN9303_SW_RESET_RESET BIT(0)
|
#define LAN9303_SW_RESET_RESET BIT(0)
|
||||||
|
|
|
@ -40,6 +40,7 @@ static int lan9303_mdio_write(void *ctx, uint32_t reg, uint32_t val)
|
||||||
{
|
{
|
||||||
struct lan9303_mdio *sw_dev = (struct lan9303_mdio *)ctx;
|
struct lan9303_mdio *sw_dev = (struct lan9303_mdio *)ctx;
|
||||||
|
|
||||||
|
reg <<= 2; /* reg num to offset */
|
||||||
mutex_lock(&sw_dev->device->bus->mdio_lock);
|
mutex_lock(&sw_dev->device->bus->mdio_lock);
|
||||||
lan9303_mdio_real_write(sw_dev->device, reg, val & 0xffff);
|
lan9303_mdio_real_write(sw_dev->device, reg, val & 0xffff);
|
||||||
lan9303_mdio_real_write(sw_dev->device, reg + 2, (val >> 16) & 0xffff);
|
lan9303_mdio_real_write(sw_dev->device, reg + 2, (val >> 16) & 0xffff);
|
||||||
|
@ -57,6 +58,7 @@ static int lan9303_mdio_read(void *ctx, uint32_t reg, uint32_t *val)
|
||||||
{
|
{
|
||||||
struct lan9303_mdio *sw_dev = (struct lan9303_mdio *)ctx;
|
struct lan9303_mdio *sw_dev = (struct lan9303_mdio *)ctx;
|
||||||
|
|
||||||
|
reg <<= 2; /* reg num to offset */
|
||||||
mutex_lock(&sw_dev->device->bus->mdio_lock);
|
mutex_lock(&sw_dev->device->bus->mdio_lock);
|
||||||
*val = lan9303_mdio_real_read(sw_dev->device, reg);
|
*val = lan9303_mdio_real_read(sw_dev->device, reg);
|
||||||
*val |= (lan9303_mdio_real_read(sw_dev->device, reg + 2) << 16);
|
*val |= (lan9303_mdio_real_read(sw_dev->device, reg + 2) << 16);
|
||||||
|
|
Loading…
Reference in New Issue