Commit b8311f46 authored by Vladimir Oltean's avatar Vladimir Oltean Committed by Paolo Abeni

net: dsa: microchip: add an enum for regmap widths

It is not immediately obvious that this driver allocates, via the
KSZ_REGMAP_TABLE() macro, 3 regmaps for register access: dev->regmap[0]
for 8-bit access, dev->regmap[1] for 16-bit and dev->regmap[2] for
32-bit access.

In future changes that add support for reg_fields, each field will have
to specify through which of the 3 regmaps it's going to go. Add an enum
now, to denote one of the 3 register access widths, and make the code go
through some wrapper functions for easier review and further
modification.
Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 2f0d5799
...@@ -28,13 +28,13 @@ ...@@ -28,13 +28,13 @@
static void ksz_cfg(struct ksz_device *dev, u32 addr, u8 bits, bool set) static void ksz_cfg(struct ksz_device *dev, u32 addr, u8 bits, bool set)
{ {
regmap_update_bits(dev->regmap[0], addr, bits, set ? bits : 0); regmap_update_bits(ksz_regmap_8(dev), addr, bits, set ? bits : 0);
} }
static void ksz_port_cfg(struct ksz_device *dev, int port, int offset, u8 bits, static void ksz_port_cfg(struct ksz_device *dev, int port, int offset, u8 bits,
bool set) bool set)
{ {
regmap_update_bits(dev->regmap[0], PORT_CTRL_ADDR(port, offset), regmap_update_bits(ksz_regmap_8(dev), PORT_CTRL_ADDR(port, offset),
bits, set ? bits : 0); bits, set ? bits : 0);
} }
...@@ -1425,14 +1425,14 @@ int ksz8_setup(struct dsa_switch *ds) ...@@ -1425,14 +1425,14 @@ int ksz8_setup(struct dsa_switch *ds)
ksz_cfg(dev, S_LINK_AGING_CTRL, SW_LINK_AUTO_AGING, true); ksz_cfg(dev, S_LINK_AGING_CTRL, SW_LINK_AUTO_AGING, true);
/* Enable aggressive back off algorithm in half duplex mode. */ /* Enable aggressive back off algorithm in half duplex mode. */
regmap_update_bits(dev->regmap[0], REG_SW_CTRL_1, regmap_update_bits(ksz_regmap_8(dev), REG_SW_CTRL_1,
SW_AGGR_BACKOFF, SW_AGGR_BACKOFF); SW_AGGR_BACKOFF, SW_AGGR_BACKOFF);
/* /*
* Make sure unicast VLAN boundary is set as default and * Make sure unicast VLAN boundary is set as default and
* enable no excessive collision drop. * enable no excessive collision drop.
*/ */
regmap_update_bits(dev->regmap[0], REG_SW_CTRL_2, regmap_update_bits(ksz_regmap_8(dev), REG_SW_CTRL_2,
UNICAST_VLAN_BOUNDARY | NO_EXC_COLLISION_DROP, UNICAST_VLAN_BOUNDARY | NO_EXC_COLLISION_DROP,
UNICAST_VLAN_BOUNDARY | NO_EXC_COLLISION_DROP); UNICAST_VLAN_BOUNDARY | NO_EXC_COLLISION_DROP);
......
...@@ -136,7 +136,7 @@ static int ksz8863_smi_probe(struct mdio_device *mdiodev) ...@@ -136,7 +136,7 @@ static int ksz8863_smi_probe(struct mdio_device *mdiodev)
if (!dev) if (!dev)
return -ENOMEM; return -ENOMEM;
for (i = 0; i < ARRAY_SIZE(ksz8863_regmap_config); i++) { for (i = 0; i < __KSZ_NUM_REGMAPS; i++) {
rc = ksz8863_regmap_config[i]; rc = ksz8863_regmap_config[i];
rc.lock_arg = &dev->regmap_mutex; rc.lock_arg = &dev->regmap_mutex;
dev->regmap[i] = devm_regmap_init(&mdiodev->dev, dev->regmap[i] = devm_regmap_init(&mdiodev->dev,
......
...@@ -21,25 +21,25 @@ ...@@ -21,25 +21,25 @@
static void ksz_cfg(struct ksz_device *dev, u32 addr, u8 bits, bool set) static void ksz_cfg(struct ksz_device *dev, u32 addr, u8 bits, bool set)
{ {
regmap_update_bits(dev->regmap[0], addr, bits, set ? bits : 0); regmap_update_bits(ksz_regmap_8(dev), addr, bits, set ? bits : 0);
} }
static void ksz_port_cfg(struct ksz_device *dev, int port, int offset, u8 bits, static void ksz_port_cfg(struct ksz_device *dev, int port, int offset, u8 bits,
bool set) bool set)
{ {
regmap_update_bits(dev->regmap[0], PORT_CTRL_ADDR(port, offset), regmap_update_bits(ksz_regmap_8(dev), PORT_CTRL_ADDR(port, offset),
bits, set ? bits : 0); bits, set ? bits : 0);
} }
static void ksz9477_cfg32(struct ksz_device *dev, u32 addr, u32 bits, bool set) static void ksz9477_cfg32(struct ksz_device *dev, u32 addr, u32 bits, bool set)
{ {
regmap_update_bits(dev->regmap[2], addr, bits, set ? bits : 0); regmap_update_bits(ksz_regmap_32(dev), addr, bits, set ? bits : 0);
} }
static void ksz9477_port_cfg32(struct ksz_device *dev, int port, int offset, static void ksz9477_port_cfg32(struct ksz_device *dev, int port, int offset,
u32 bits, bool set) u32 bits, bool set)
{ {
regmap_update_bits(dev->regmap[2], PORT_CTRL_ADDR(port, offset), regmap_update_bits(ksz_regmap_32(dev), PORT_CTRL_ADDR(port, offset),
bits, set ? bits : 0); bits, set ? bits : 0);
} }
...@@ -52,7 +52,7 @@ int ksz9477_change_mtu(struct ksz_device *dev, int port, int mtu) ...@@ -52,7 +52,7 @@ int ksz9477_change_mtu(struct ksz_device *dev, int port, int mtu)
frame_size = mtu + VLAN_ETH_HLEN + ETH_FCS_LEN; frame_size = mtu + VLAN_ETH_HLEN + ETH_FCS_LEN;
return regmap_update_bits(dev->regmap[1], REG_SW_MTU__2, return regmap_update_bits(ksz_regmap_16(dev), REG_SW_MTU__2,
REG_SW_MTU_MASK, frame_size); REG_SW_MTU_MASK, frame_size);
} }
...@@ -60,7 +60,7 @@ static int ksz9477_wait_vlan_ctrl_ready(struct ksz_device *dev) ...@@ -60,7 +60,7 @@ static int ksz9477_wait_vlan_ctrl_ready(struct ksz_device *dev)
{ {
unsigned int val; unsigned int val;
return regmap_read_poll_timeout(dev->regmap[0], REG_SW_VLAN_CTRL, return regmap_read_poll_timeout(ksz_regmap_8(dev), REG_SW_VLAN_CTRL,
val, !(val & VLAN_START), 10, 1000); val, !(val & VLAN_START), 10, 1000);
} }
...@@ -147,7 +147,7 @@ static int ksz9477_wait_alu_ready(struct ksz_device *dev) ...@@ -147,7 +147,7 @@ static int ksz9477_wait_alu_ready(struct ksz_device *dev)
{ {
unsigned int val; unsigned int val;
return regmap_read_poll_timeout(dev->regmap[2], REG_SW_ALU_CTRL__4, return regmap_read_poll_timeout(ksz_regmap_32(dev), REG_SW_ALU_CTRL__4,
val, !(val & ALU_START), 10, 1000); val, !(val & ALU_START), 10, 1000);
} }
...@@ -155,7 +155,7 @@ static int ksz9477_wait_alu_sta_ready(struct ksz_device *dev) ...@@ -155,7 +155,7 @@ static int ksz9477_wait_alu_sta_ready(struct ksz_device *dev)
{ {
unsigned int val; unsigned int val;
return regmap_read_poll_timeout(dev->regmap[2], return regmap_read_poll_timeout(ksz_regmap_32(dev),
REG_SW_ALU_STAT_CTRL__4, REG_SW_ALU_STAT_CTRL__4,
val, !(val & ALU_STAT_START), val, !(val & ALU_STAT_START),
10, 1000); 10, 1000);
...@@ -170,7 +170,7 @@ int ksz9477_reset_switch(struct ksz_device *dev) ...@@ -170,7 +170,7 @@ int ksz9477_reset_switch(struct ksz_device *dev)
ksz_cfg(dev, REG_SW_OPERATION, SW_RESET, true); ksz_cfg(dev, REG_SW_OPERATION, SW_RESET, true);
/* turn off SPI DO Edge select */ /* turn off SPI DO Edge select */
regmap_update_bits(dev->regmap[0], REG_SW_GLOBAL_SERIAL_CTRL_0, regmap_update_bits(ksz_regmap_8(dev), REG_SW_GLOBAL_SERIAL_CTRL_0,
SPI_AUTO_EDGE_DETECTION, 0); SPI_AUTO_EDGE_DETECTION, 0);
/* default configuration */ /* default configuration */
...@@ -213,7 +213,7 @@ void ksz9477_r_mib_cnt(struct ksz_device *dev, int port, u16 addr, u64 *cnt) ...@@ -213,7 +213,7 @@ void ksz9477_r_mib_cnt(struct ksz_device *dev, int port, u16 addr, u64 *cnt)
data |= (addr << MIB_COUNTER_INDEX_S); data |= (addr << MIB_COUNTER_INDEX_S);
ksz_pwrite32(dev, port, REG_PORT_MIB_CTRL_STAT__4, data); ksz_pwrite32(dev, port, REG_PORT_MIB_CTRL_STAT__4, data);
ret = regmap_read_poll_timeout(dev->regmap[2], ret = regmap_read_poll_timeout(ksz_regmap_32(dev),
PORT_CTRL_ADDR(port, REG_PORT_MIB_CTRL_STAT__4), PORT_CTRL_ADDR(port, REG_PORT_MIB_CTRL_STAT__4),
val, !(val & MIB_COUNTER_READ), 10, 1000); val, !(val & MIB_COUNTER_READ), 10, 1000);
/* failed to read MIB. get out of loop */ /* failed to read MIB. get out of loop */
...@@ -346,7 +346,7 @@ void ksz9477_flush_dyn_mac_table(struct ksz_device *dev, int port) ...@@ -346,7 +346,7 @@ void ksz9477_flush_dyn_mac_table(struct ksz_device *dev, int port)
const u16 *regs = dev->info->regs; const u16 *regs = dev->info->regs;
u8 data; u8 data;
regmap_update_bits(dev->regmap[0], REG_SW_LUE_CTRL_2, regmap_update_bits(ksz_regmap_8(dev), REG_SW_LUE_CTRL_2,
SW_FLUSH_OPTION_M << SW_FLUSH_OPTION_S, SW_FLUSH_OPTION_M << SW_FLUSH_OPTION_S,
SW_FLUSH_OPTION_DYN_MAC << SW_FLUSH_OPTION_S); SW_FLUSH_OPTION_DYN_MAC << SW_FLUSH_OPTION_S);
...@@ -1165,7 +1165,7 @@ int ksz9477_setup(struct dsa_switch *ds) ...@@ -1165,7 +1165,7 @@ int ksz9477_setup(struct dsa_switch *ds)
ksz_cfg(dev, REG_SW_MAC_CTRL_1, SW_JUMBO_PACKET, true); ksz_cfg(dev, REG_SW_MAC_CTRL_1, SW_JUMBO_PACKET, true);
/* Now we can configure default MTU value */ /* Now we can configure default MTU value */
ret = regmap_update_bits(dev->regmap[1], REG_SW_MTU__2, REG_SW_MTU_MASK, ret = regmap_update_bits(ksz_regmap_16(dev), REG_SW_MTU__2, REG_SW_MTU_MASK,
VLAN_ETH_FRAME_LEN + ETH_FCS_LEN); VLAN_ETH_FRAME_LEN + ETH_FCS_LEN);
if (ret) if (ret)
return ret; return ret;
......
...@@ -24,7 +24,7 @@ static int ksz9477_i2c_probe(struct i2c_client *i2c) ...@@ -24,7 +24,7 @@ static int ksz9477_i2c_probe(struct i2c_client *i2c)
if (!dev) if (!dev)
return -ENOMEM; return -ENOMEM;
for (i = 0; i < ARRAY_SIZE(ksz9477_regmap_config); i++) { for (i = 0; i < __KSZ_NUM_REGMAPS; i++) {
rc = ksz9477_regmap_config[i]; rc = ksz9477_regmap_config[i];
rc.lock_arg = &dev->regmap_mutex; rc.lock_arg = &dev->regmap_mutex;
dev->regmap[i] = devm_regmap_init_i2c(i2c, &rc); dev->regmap[i] = devm_regmap_init_i2c(i2c, &rc);
......
...@@ -2095,7 +2095,7 @@ static int ksz_setup(struct dsa_switch *ds) ...@@ -2095,7 +2095,7 @@ static int ksz_setup(struct dsa_switch *ds)
} }
/* set broadcast storm protection 10% rate */ /* set broadcast storm protection 10% rate */
regmap_update_bits(dev->regmap[1], regs[S_BROADCAST_CTRL], regmap_update_bits(ksz_regmap_16(dev), regs[S_BROADCAST_CTRL],
BROADCAST_STORM_RATE, BROADCAST_STORM_RATE,
(BROADCAST_STORM_VALUE * (BROADCAST_STORM_VALUE *
BROADCAST_STORM_PROT_RATE) / 100); BROADCAST_STORM_PROT_RATE) / 100);
...@@ -2106,7 +2106,7 @@ static int ksz_setup(struct dsa_switch *ds) ...@@ -2106,7 +2106,7 @@ static int ksz_setup(struct dsa_switch *ds)
ds->num_tx_queues = dev->info->num_tx_queues; ds->num_tx_queues = dev->info->num_tx_queues;
regmap_update_bits(dev->regmap[0], regs[S_MULTICAST_CTRL], regmap_update_bits(ksz_regmap_8(dev), regs[S_MULTICAST_CTRL],
MULTICAST_STORM_DISABLE, MULTICAST_STORM_DISABLE); MULTICAST_STORM_DISABLE, MULTICAST_STORM_DISABLE);
ksz_init_mib_timer(dev); ksz_init_mib_timer(dev);
...@@ -2156,7 +2156,7 @@ static int ksz_setup(struct dsa_switch *ds) ...@@ -2156,7 +2156,7 @@ static int ksz_setup(struct dsa_switch *ds)
} }
/* start switch */ /* start switch */
regmap_update_bits(dev->regmap[0], regs[S_START_CTRL], regmap_update_bits(ksz_regmap_8(dev), regs[S_START_CTRL],
SW_START, SW_START); SW_START, SW_START);
return 0; return 0;
......
...@@ -22,6 +22,13 @@ ...@@ -22,6 +22,13 @@
struct ksz_device; struct ksz_device;
struct ksz_port; struct ksz_port;
enum ksz_regmap_width {
KSZ_REGMAP_8,
KSZ_REGMAP_16,
KSZ_REGMAP_32,
__KSZ_NUM_REGMAPS,
};
struct vlan_table { struct vlan_table {
u32 table[3]; u32 table[3];
}; };
...@@ -137,7 +144,7 @@ struct ksz_device { ...@@ -137,7 +144,7 @@ struct ksz_device {
const struct ksz_dev_ops *dev_ops; const struct ksz_dev_ops *dev_ops;
struct device *dev; struct device *dev;
struct regmap *regmap[3]; struct regmap *regmap[__KSZ_NUM_REGMAPS];
void *priv; void *priv;
int irq; int irq;
...@@ -377,11 +384,25 @@ phy_interface_t ksz_get_xmii(struct ksz_device *dev, int port, bool gbit); ...@@ -377,11 +384,25 @@ phy_interface_t ksz_get_xmii(struct ksz_device *dev, int port, bool gbit);
extern const struct ksz_chip_data ksz_switch_chips[]; extern const struct ksz_chip_data ksz_switch_chips[];
/* Common register access functions */ /* Common register access functions */
static inline struct regmap *ksz_regmap_8(struct ksz_device *dev)
{
return dev->regmap[KSZ_REGMAP_8];
}
static inline struct regmap *ksz_regmap_16(struct ksz_device *dev)
{
return dev->regmap[KSZ_REGMAP_16];
}
static inline struct regmap *ksz_regmap_32(struct ksz_device *dev)
{
return dev->regmap[KSZ_REGMAP_32];
}
static inline int ksz_read8(struct ksz_device *dev, u32 reg, u8 *val) static inline int ksz_read8(struct ksz_device *dev, u32 reg, u8 *val)
{ {
unsigned int value; unsigned int value;
int ret = regmap_read(dev->regmap[0], reg, &value); int ret = regmap_read(ksz_regmap_8(dev), reg, &value);
if (ret) if (ret)
dev_err(dev->dev, "can't read 8bit reg: 0x%x %pe\n", reg, dev_err(dev->dev, "can't read 8bit reg: 0x%x %pe\n", reg,
...@@ -394,7 +415,7 @@ static inline int ksz_read8(struct ksz_device *dev, u32 reg, u8 *val) ...@@ -394,7 +415,7 @@ static inline int ksz_read8(struct ksz_device *dev, u32 reg, u8 *val)
static inline int ksz_read16(struct ksz_device *dev, u32 reg, u16 *val) static inline int ksz_read16(struct ksz_device *dev, u32 reg, u16 *val)
{ {
unsigned int value; unsigned int value;
int ret = regmap_read(dev->regmap[1], reg, &value); int ret = regmap_read(ksz_regmap_16(dev), reg, &value);
if (ret) if (ret)
dev_err(dev->dev, "can't read 16bit reg: 0x%x %pe\n", reg, dev_err(dev->dev, "can't read 16bit reg: 0x%x %pe\n", reg,
...@@ -407,7 +428,7 @@ static inline int ksz_read16(struct ksz_device *dev, u32 reg, u16 *val) ...@@ -407,7 +428,7 @@ static inline int ksz_read16(struct ksz_device *dev, u32 reg, u16 *val)
static inline int ksz_read32(struct ksz_device *dev, u32 reg, u32 *val) static inline int ksz_read32(struct ksz_device *dev, u32 reg, u32 *val)
{ {
unsigned int value; unsigned int value;
int ret = regmap_read(dev->regmap[2], reg, &value); int ret = regmap_read(ksz_regmap_32(dev), reg, &value);
if (ret) if (ret)
dev_err(dev->dev, "can't read 32bit reg: 0x%x %pe\n", reg, dev_err(dev->dev, "can't read 32bit reg: 0x%x %pe\n", reg,
...@@ -422,7 +443,7 @@ static inline int ksz_read64(struct ksz_device *dev, u32 reg, u64 *val) ...@@ -422,7 +443,7 @@ static inline int ksz_read64(struct ksz_device *dev, u32 reg, u64 *val)
u32 value[2]; u32 value[2];
int ret; int ret;
ret = regmap_bulk_read(dev->regmap[2], reg, value, 2); ret = regmap_bulk_read(ksz_regmap_32(dev), reg, value, 2);
if (ret) if (ret)
dev_err(dev->dev, "can't read 64bit reg: 0x%x %pe\n", reg, dev_err(dev->dev, "can't read 64bit reg: 0x%x %pe\n", reg,
ERR_PTR(ret)); ERR_PTR(ret));
...@@ -436,7 +457,7 @@ static inline int ksz_write8(struct ksz_device *dev, u32 reg, u8 value) ...@@ -436,7 +457,7 @@ static inline int ksz_write8(struct ksz_device *dev, u32 reg, u8 value)
{ {
int ret; int ret;
ret = regmap_write(dev->regmap[0], reg, value); ret = regmap_write(ksz_regmap_8(dev), reg, value);
if (ret) if (ret)
dev_err(dev->dev, "can't write 8bit reg: 0x%x %pe\n", reg, dev_err(dev->dev, "can't write 8bit reg: 0x%x %pe\n", reg,
ERR_PTR(ret)); ERR_PTR(ret));
...@@ -448,7 +469,7 @@ static inline int ksz_write16(struct ksz_device *dev, u32 reg, u16 value) ...@@ -448,7 +469,7 @@ static inline int ksz_write16(struct ksz_device *dev, u32 reg, u16 value)
{ {
int ret; int ret;
ret = regmap_write(dev->regmap[1], reg, value); ret = regmap_write(ksz_regmap_16(dev), reg, value);
if (ret) if (ret)
dev_err(dev->dev, "can't write 16bit reg: 0x%x %pe\n", reg, dev_err(dev->dev, "can't write 16bit reg: 0x%x %pe\n", reg,
ERR_PTR(ret)); ERR_PTR(ret));
...@@ -460,7 +481,7 @@ static inline int ksz_write32(struct ksz_device *dev, u32 reg, u32 value) ...@@ -460,7 +481,7 @@ static inline int ksz_write32(struct ksz_device *dev, u32 reg, u32 value)
{ {
int ret; int ret;
ret = regmap_write(dev->regmap[2], reg, value); ret = regmap_write(ksz_regmap_32(dev), reg, value);
if (ret) if (ret)
dev_err(dev->dev, "can't write 32bit reg: 0x%x %pe\n", reg, dev_err(dev->dev, "can't write 32bit reg: 0x%x %pe\n", reg,
ERR_PTR(ret)); ERR_PTR(ret));
...@@ -473,7 +494,7 @@ static inline int ksz_rmw16(struct ksz_device *dev, u32 reg, u16 mask, ...@@ -473,7 +494,7 @@ static inline int ksz_rmw16(struct ksz_device *dev, u32 reg, u16 mask,
{ {
int ret; int ret;
ret = regmap_update_bits(dev->regmap[1], reg, mask, value); ret = regmap_update_bits(ksz_regmap_16(dev), reg, mask, value);
if (ret) if (ret)
dev_err(dev->dev, "can't rmw 16bit reg 0x%x: %pe\n", reg, dev_err(dev->dev, "can't rmw 16bit reg 0x%x: %pe\n", reg,
ERR_PTR(ret)); ERR_PTR(ret));
...@@ -486,7 +507,7 @@ static inline int ksz_rmw32(struct ksz_device *dev, u32 reg, u32 mask, ...@@ -486,7 +507,7 @@ static inline int ksz_rmw32(struct ksz_device *dev, u32 reg, u32 mask,
{ {
int ret; int ret;
ret = regmap_update_bits(dev->regmap[2], reg, mask, value); ret = regmap_update_bits(ksz_regmap_32(dev), reg, mask, value);
if (ret) if (ret)
dev_err(dev->dev, "can't rmw 32bit reg 0x%x: %pe\n", reg, dev_err(dev->dev, "can't rmw 32bit reg 0x%x: %pe\n", reg,
ERR_PTR(ret)); ERR_PTR(ret));
...@@ -503,14 +524,14 @@ static inline int ksz_write64(struct ksz_device *dev, u32 reg, u64 value) ...@@ -503,14 +524,14 @@ static inline int ksz_write64(struct ksz_device *dev, u32 reg, u64 value)
val[0] = swab32(value & 0xffffffffULL); val[0] = swab32(value & 0xffffffffULL);
val[1] = swab32(value >> 32ULL); val[1] = swab32(value >> 32ULL);
return regmap_bulk_write(dev->regmap[2], reg, val, 2); return regmap_bulk_write(ksz_regmap_32(dev), reg, val, 2);
} }
static inline int ksz_rmw8(struct ksz_device *dev, int offset, u8 mask, u8 val) static inline int ksz_rmw8(struct ksz_device *dev, int offset, u8 mask, u8 val)
{ {
int ret; int ret;
ret = regmap_update_bits(dev->regmap[0], offset, mask, val); ret = regmap_update_bits(ksz_regmap_8(dev), offset, mask, val);
if (ret) if (ret)
dev_err(dev->dev, "can't rmw 8bit reg 0x%x: %pe\n", offset, dev_err(dev->dev, "can't rmw 8bit reg 0x%x: %pe\n", offset,
ERR_PTR(ret)); ERR_PTR(ret));
...@@ -561,7 +582,7 @@ static inline int ksz_prmw8(struct ksz_device *dev, int port, int offset, ...@@ -561,7 +582,7 @@ static inline int ksz_prmw8(struct ksz_device *dev, int port, int offset,
{ {
int ret; int ret;
ret = regmap_update_bits(dev->regmap[0], ret = regmap_update_bits(ksz_regmap_8(dev),
dev->dev_ops->get_port_addr(port, offset), dev->dev_ops->get_port_addr(port, offset),
mask, val); mask, val);
if (ret) if (ret)
...@@ -570,7 +591,6 @@ static inline int ksz_prmw8(struct ksz_device *dev, int port, int offset, ...@@ -570,7 +591,6 @@ static inline int ksz_prmw8(struct ksz_device *dev, int port, int offset,
ERR_PTR(ret)); ERR_PTR(ret));
return ret; return ret;
} }
static inline void ksz_regmap_lock(void *__mtx) static inline void ksz_regmap_lock(void *__mtx)
...@@ -725,9 +745,9 @@ static inline int is_lan937x(struct ksz_device *dev) ...@@ -725,9 +745,9 @@ static inline int is_lan937x(struct ksz_device *dev)
#define KSZ_REGMAP_TABLE(ksz, swp, regbits, regpad, regalign) \ #define KSZ_REGMAP_TABLE(ksz, swp, regbits, regpad, regalign) \
static const struct regmap_config ksz##_regmap_config[] = { \ static const struct regmap_config ksz##_regmap_config[] = { \
KSZ_REGMAP_ENTRY(8, swp, (regbits), (regpad), (regalign)), \ [KSZ_REGMAP_8] = KSZ_REGMAP_ENTRY(8, swp, (regbits), (regpad), (regalign)), \
KSZ_REGMAP_ENTRY(16, swp, (regbits), (regpad), (regalign)), \ [KSZ_REGMAP_16] = KSZ_REGMAP_ENTRY(16, swp, (regbits), (regpad), (regalign)), \
KSZ_REGMAP_ENTRY(32, swp, (regbits), (regpad), (regalign)), \ [KSZ_REGMAP_32] = KSZ_REGMAP_ENTRY(32, swp, (regbits), (regpad), (regalign)), \
} }
#endif #endif
...@@ -63,7 +63,7 @@ static int ksz_spi_probe(struct spi_device *spi) ...@@ -63,7 +63,7 @@ static int ksz_spi_probe(struct spi_device *spi)
else else
regmap_config = ksz9477_regmap_config; regmap_config = ksz9477_regmap_config;
for (i = 0; i < ARRAY_SIZE(ksz8795_regmap_config); i++) { for (i = 0; i < __KSZ_NUM_REGMAPS; i++) {
rc = regmap_config[i]; rc = regmap_config[i];
rc.lock_arg = &dev->regmap_mutex; rc.lock_arg = &dev->regmap_mutex;
rc.wr_table = chip->wr_table; rc.wr_table = chip->wr_table;
......
...@@ -20,13 +20,13 @@ ...@@ -20,13 +20,13 @@
static int lan937x_cfg(struct ksz_device *dev, u32 addr, u8 bits, bool set) static int lan937x_cfg(struct ksz_device *dev, u32 addr, u8 bits, bool set)
{ {
return regmap_update_bits(dev->regmap[0], addr, bits, set ? bits : 0); return regmap_update_bits(ksz_regmap_8(dev), addr, bits, set ? bits : 0);
} }
static int lan937x_port_cfg(struct ksz_device *dev, int port, int offset, static int lan937x_port_cfg(struct ksz_device *dev, int port, int offset,
u8 bits, bool set) u8 bits, bool set)
{ {
return regmap_update_bits(dev->regmap[0], PORT_CTRL_ADDR(port, offset), return regmap_update_bits(ksz_regmap_8(dev), PORT_CTRL_ADDR(port, offset),
bits, set ? bits : 0); bits, set ? bits : 0);
} }
...@@ -86,7 +86,7 @@ static int lan937x_internal_phy_write(struct ksz_device *dev, int addr, int reg, ...@@ -86,7 +86,7 @@ static int lan937x_internal_phy_write(struct ksz_device *dev, int addr, int reg,
if (ret < 0) if (ret < 0)
return ret; return ret;
ret = regmap_read_poll_timeout(dev->regmap[1], REG_VPHY_IND_CTRL__2, ret = regmap_read_poll_timeout(ksz_regmap_16(dev), REG_VPHY_IND_CTRL__2,
value, !(value & VPHY_IND_BUSY), 10, value, !(value & VPHY_IND_BUSY), 10,
1000); 1000);
if (ret < 0) { if (ret < 0) {
...@@ -116,7 +116,7 @@ static int lan937x_internal_phy_read(struct ksz_device *dev, int addr, int reg, ...@@ -116,7 +116,7 @@ static int lan937x_internal_phy_read(struct ksz_device *dev, int addr, int reg,
if (ret < 0) if (ret < 0)
return ret; return ret;
ret = regmap_read_poll_timeout(dev->regmap[1], REG_VPHY_IND_CTRL__2, ret = regmap_read_poll_timeout(ksz_regmap_16(dev), REG_VPHY_IND_CTRL__2,
value, !(value & VPHY_IND_BUSY), 10, value, !(value & VPHY_IND_BUSY), 10,
1000); 1000);
if (ret < 0) { if (ret < 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment