Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'microchip-dsa-driver-improvements'

Oleksij Rempel says:

====================
Microchip DSA Driver Improvements

changes v2:
- set .max_register = U8_MAX, it should be more readable
- clarify in the RMW error handling patch, logging behavior
expectation.

I'd like to share a set of patches for the Microchip DSA driver. These
patches were chosen from a bigger set because they are simpler and
should be easier to review. The goal is to make the code easier to read,
get rid of unused code, and handle errors better.
====================

Link: https://lore.kernel.org/r/20230526073445.668430-1-o.rempel@pengutronix.de
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

+135 -66
+5 -23
drivers/net/dsa/microchip/ksz8795.c
··· 28 28 29 29 static void ksz_cfg(struct ksz_device *dev, u32 addr, u8 bits, bool set) 30 30 { 31 - regmap_update_bits(dev->regmap[0], addr, bits, set ? bits : 0); 31 + regmap_update_bits(ksz_regmap_8(dev), addr, bits, set ? bits : 0); 32 32 } 33 33 34 34 static void ksz_port_cfg(struct ksz_device *dev, int port, int offset, u8 bits, 35 35 bool set) 36 36 { 37 - regmap_update_bits(dev->regmap[0], PORT_CTRL_ADDR(port, offset), 37 + regmap_update_bits(ksz_regmap_8(dev), PORT_CTRL_ADDR(port, offset), 38 38 bits, set ? bits : 0); 39 39 } 40 40 ··· 941 941 { 942 942 u8 learn[DSA_MAX_PORTS]; 943 943 int first, index, cnt; 944 - struct ksz_port *p; 945 944 const u16 *regs; 946 945 947 946 regs = dev->info->regs; ··· 954 955 cnt = dev->info->port_cnt; 955 956 } 956 957 for (index = first; index < cnt; index++) { 957 - p = &dev->ports[index]; 958 - if (!p->on) 959 - continue; 960 958 ksz_pread8(dev, index, regs[P_STP_CTRL], &learn[index]); 961 959 if (!(learn[index] & PORT_LEARN_DISABLE)) 962 960 ksz_pwrite8(dev, index, regs[P_STP_CTRL], ··· 961 965 } 962 966 ksz_cfg(dev, S_FLUSH_TABLE_CTRL, SW_FLUSH_DYN_MAC_TABLE, true); 963 967 for (index = first; index < cnt; index++) { 964 - p = &dev->ports[index]; 965 - if (!p->on) 966 - continue; 967 968 if (!(learn[index] & PORT_LEARN_DISABLE)) 968 969 ksz_pwrite8(dev, index, regs[P_STP_CTRL], learn[index]); 969 970 } ··· 1331 1338 1332 1339 ksz_cfg(dev, regs[S_TAIL_TAG_CTRL], masks[SW_TAIL_TAG_ENABLE], true); 1333 1340 1334 - p = &dev->ports[dev->cpu_port]; 1335 - p->on = 1; 1336 - 1337 1341 ksz8_port_setup(dev, dev->cpu_port, true); 1338 1342 1339 1343 for (i = 0; i < dev->phy_port_cnt; i++) { 1340 - p = &dev->ports[i]; 1341 - 1342 1344 ksz_port_stp_state_set(ds, i, BR_STATE_DISABLED); 1343 - 1344 - /* Last port may be disabled. */ 1345 - if (i == dev->phy_port_cnt) 1346 - break; 1347 - p->on = 1; 1348 1345 } 1349 1346 for (i = 0; i < dev->phy_port_cnt; i++) { 1350 1347 p = &dev->ports[i]; 1351 - if (!p->on) 1352 - continue; 1348 + 1353 1349 if (!ksz_is_ksz88x3(dev)) { 1354 1350 ksz_pread8(dev, i, regs[P_REMOTE_STATUS], &remote); 1355 1351 if (remote & KSZ8_PORT_FIBER_MODE) ··· 1407 1425 ksz_cfg(dev, S_LINK_AGING_CTRL, SW_LINK_AUTO_AGING, true); 1408 1426 1409 1427 /* Enable aggressive back off algorithm in half duplex mode. */ 1410 - regmap_update_bits(dev->regmap[0], REG_SW_CTRL_1, 1428 + regmap_update_bits(ksz_regmap_8(dev), REG_SW_CTRL_1, 1411 1429 SW_AGGR_BACKOFF, SW_AGGR_BACKOFF); 1412 1430 1413 1431 /* 1414 1432 * Make sure unicast VLAN boundary is set as default and 1415 1433 * enable no excessive collision drop. 1416 1434 */ 1417 - regmap_update_bits(dev->regmap[0], REG_SW_CTRL_2, 1435 + regmap_update_bits(ksz_regmap_8(dev), REG_SW_CTRL_2, 1418 1436 UNICAST_VLAN_BOUNDARY | NO_EXC_COLLISION_DROP, 1419 1437 UNICAST_VLAN_BOUNDARY | NO_EXC_COLLISION_DROP); 1420 1438
+12 -1
drivers/net/dsa/microchip/ksz8863_smi.c
··· 104 104 .cache_type = REGCACHE_NONE, 105 105 .lock = ksz_regmap_lock, 106 106 .unlock = ksz_regmap_unlock, 107 + .max_register = U8_MAX, 107 108 }, 108 109 { 109 110 .name = "#16", ··· 114 113 .cache_type = REGCACHE_NONE, 115 114 .lock = ksz_regmap_lock, 116 115 .unlock = ksz_regmap_unlock, 116 + .max_register = U8_MAX, 117 117 }, 118 118 { 119 119 .name = "#32", ··· 124 122 .cache_type = REGCACHE_NONE, 125 123 .lock = ksz_regmap_lock, 126 124 .unlock = ksz_regmap_unlock, 125 + .max_register = U8_MAX, 127 126 } 128 127 }; 129 128 130 129 static int ksz8863_smi_probe(struct mdio_device *mdiodev) 131 130 { 131 + struct device *ddev = &mdiodev->dev; 132 + const struct ksz_chip_data *chip; 132 133 struct regmap_config rc; 133 134 struct ksz_device *dev; 134 135 int ret; ··· 141 136 if (!dev) 142 137 return -ENOMEM; 143 138 144 - for (i = 0; i < ARRAY_SIZE(ksz8863_regmap_config); i++) { 139 + chip = device_get_match_data(ddev); 140 + if (!chip) 141 + return -EINVAL; 142 + 143 + for (i = 0; i < __KSZ_NUM_REGMAPS; i++) { 145 144 rc = ksz8863_regmap_config[i]; 146 145 rc.lock_arg = &dev->regmap_mutex; 146 + rc.wr_table = chip->wr_table; 147 + rc.rd_table = chip->rd_table; 147 148 dev->regmap[i] = devm_regmap_init(&mdiodev->dev, 148 149 &regmap_smi[i], dev, 149 150 &rc);
+12 -12
drivers/net/dsa/microchip/ksz9477.c
··· 21 21 22 22 static void ksz_cfg(struct ksz_device *dev, u32 addr, u8 bits, bool set) 23 23 { 24 - regmap_update_bits(dev->regmap[0], addr, bits, set ? bits : 0); 24 + regmap_update_bits(ksz_regmap_8(dev), addr, bits, set ? bits : 0); 25 25 } 26 26 27 27 static void ksz_port_cfg(struct ksz_device *dev, int port, int offset, u8 bits, 28 28 bool set) 29 29 { 30 - regmap_update_bits(dev->regmap[0], PORT_CTRL_ADDR(port, offset), 30 + regmap_update_bits(ksz_regmap_8(dev), PORT_CTRL_ADDR(port, offset), 31 31 bits, set ? bits : 0); 32 32 } 33 33 34 34 static void ksz9477_cfg32(struct ksz_device *dev, u32 addr, u32 bits, bool set) 35 35 { 36 - regmap_update_bits(dev->regmap[2], addr, bits, set ? bits : 0); 36 + regmap_update_bits(ksz_regmap_32(dev), addr, bits, set ? bits : 0); 37 37 } 38 38 39 39 static void ksz9477_port_cfg32(struct ksz_device *dev, int port, int offset, 40 40 u32 bits, bool set) 41 41 { 42 - regmap_update_bits(dev->regmap[2], PORT_CTRL_ADDR(port, offset), 42 + regmap_update_bits(ksz_regmap_32(dev), PORT_CTRL_ADDR(port, offset), 43 43 bits, set ? bits : 0); 44 44 } 45 45 ··· 52 52 53 53 frame_size = mtu + VLAN_ETH_HLEN + ETH_FCS_LEN; 54 54 55 - return regmap_update_bits(dev->regmap[1], REG_SW_MTU__2, 55 + return regmap_update_bits(ksz_regmap_16(dev), REG_SW_MTU__2, 56 56 REG_SW_MTU_MASK, frame_size); 57 57 } 58 58 ··· 60 60 { 61 61 unsigned int val; 62 62 63 - return regmap_read_poll_timeout(dev->regmap[0], REG_SW_VLAN_CTRL, 63 + return regmap_read_poll_timeout(ksz_regmap_8(dev), REG_SW_VLAN_CTRL, 64 64 val, !(val & VLAN_START), 10, 1000); 65 65 } 66 66 ··· 147 147 { 148 148 unsigned int val; 149 149 150 - return regmap_read_poll_timeout(dev->regmap[2], REG_SW_ALU_CTRL__4, 150 + return regmap_read_poll_timeout(ksz_regmap_32(dev), REG_SW_ALU_CTRL__4, 151 151 val, !(val & ALU_START), 10, 1000); 152 152 } 153 153 ··· 155 155 { 156 156 unsigned int val; 157 157 158 - return regmap_read_poll_timeout(dev->regmap[2], 158 + return regmap_read_poll_timeout(ksz_regmap_32(dev), 159 159 REG_SW_ALU_STAT_CTRL__4, 160 160 val, !(val & ALU_STAT_START), 161 161 10, 1000); ··· 170 170 ksz_cfg(dev, REG_SW_OPERATION, SW_RESET, true); 171 171 172 172 /* turn off SPI DO Edge select */ 173 - regmap_update_bits(dev->regmap[0], REG_SW_GLOBAL_SERIAL_CTRL_0, 173 + regmap_update_bits(ksz_regmap_8(dev), REG_SW_GLOBAL_SERIAL_CTRL_0, 174 174 SPI_AUTO_EDGE_DETECTION, 0); 175 175 176 176 /* default configuration */ ··· 213 213 data |= (addr << MIB_COUNTER_INDEX_S); 214 214 ksz_pwrite32(dev, port, REG_PORT_MIB_CTRL_STAT__4, data); 215 215 216 - ret = regmap_read_poll_timeout(dev->regmap[2], 216 + ret = regmap_read_poll_timeout(ksz_regmap_32(dev), 217 217 PORT_CTRL_ADDR(port, REG_PORT_MIB_CTRL_STAT__4), 218 218 val, !(val & MIB_COUNTER_READ), 10, 1000); 219 219 /* failed to read MIB. get out of loop */ ··· 346 346 const u16 *regs = dev->info->regs; 347 347 u8 data; 348 348 349 - regmap_update_bits(dev->regmap[0], REG_SW_LUE_CTRL_2, 349 + regmap_update_bits(ksz_regmap_8(dev), REG_SW_LUE_CTRL_2, 350 350 SW_FLUSH_OPTION_M << SW_FLUSH_OPTION_S, 351 351 SW_FLUSH_OPTION_DYN_MAC << SW_FLUSH_OPTION_S); 352 352 ··· 1165 1165 ksz_cfg(dev, REG_SW_MAC_CTRL_1, SW_JUMBO_PACKET, true); 1166 1166 1167 1167 /* Now we can configure default MTU value */ 1168 - ret = regmap_update_bits(dev->regmap[1], REG_SW_MTU__2, REG_SW_MTU_MASK, 1168 + ret = regmap_update_bits(ksz_regmap_16(dev), REG_SW_MTU__2, REG_SW_MTU_MASK, 1169 1169 VLAN_ETH_FRAME_LEN + ETH_FCS_LEN); 1170 1170 if (ret) 1171 1171 return ret;
+1 -1
drivers/net/dsa/microchip/ksz9477_i2c.c
··· 24 24 if (!dev) 25 25 return -ENOMEM; 26 26 27 - for (i = 0; i < ARRAY_SIZE(ksz9477_regmap_config); i++) { 27 + for (i = 0; i < __KSZ_NUM_REGMAPS; i++) { 28 28 rc = ksz9477_regmap_config[i]; 29 29 rc.lock_arg = &dev->regmap_mutex; 30 30 dev->regmap[i] = devm_regmap_init_i2c(i2c, &rc);
+44 -3
drivers/net/dsa/microchip/ksz_common.c
··· 1075 1075 .n_yes_ranges = ARRAY_SIZE(ksz9896_valid_regs), 1076 1076 }; 1077 1077 1078 + static const struct regmap_range ksz8873_valid_regs[] = { 1079 + regmap_reg_range(0x00, 0x01), 1080 + /* global control register */ 1081 + regmap_reg_range(0x02, 0x0f), 1082 + 1083 + /* port registers */ 1084 + regmap_reg_range(0x10, 0x1d), 1085 + regmap_reg_range(0x1e, 0x1f), 1086 + regmap_reg_range(0x20, 0x2d), 1087 + regmap_reg_range(0x2e, 0x2f), 1088 + regmap_reg_range(0x30, 0x39), 1089 + regmap_reg_range(0x3f, 0x3f), 1090 + 1091 + /* advanced control registers */ 1092 + regmap_reg_range(0x60, 0x6f), 1093 + regmap_reg_range(0x70, 0x75), 1094 + regmap_reg_range(0x76, 0x78), 1095 + regmap_reg_range(0x79, 0x7a), 1096 + regmap_reg_range(0x7b, 0x83), 1097 + regmap_reg_range(0x8e, 0x99), 1098 + regmap_reg_range(0x9a, 0xa5), 1099 + regmap_reg_range(0xa6, 0xa6), 1100 + regmap_reg_range(0xa7, 0xaa), 1101 + regmap_reg_range(0xab, 0xae), 1102 + regmap_reg_range(0xaf, 0xba), 1103 + regmap_reg_range(0xbb, 0xbc), 1104 + regmap_reg_range(0xbd, 0xbd), 1105 + regmap_reg_range(0xc0, 0xc0), 1106 + regmap_reg_range(0xc2, 0xc2), 1107 + regmap_reg_range(0xc3, 0xc3), 1108 + regmap_reg_range(0xc4, 0xc4), 1109 + regmap_reg_range(0xc6, 0xc6), 1110 + }; 1111 + 1112 + static const struct regmap_access_table ksz8873_register_set = { 1113 + .yes_ranges = ksz8873_valid_regs, 1114 + .n_yes_ranges = ARRAY_SIZE(ksz8873_valid_regs), 1115 + }; 1116 + 1078 1117 const struct ksz_chip_data ksz_switch_chips[] = { 1079 1118 [KSZ8563] = { 1080 1119 .chip_id = KSZ8563_CHIP_ID, ··· 1253 1214 .supports_mii = {false, false, true}, 1254 1215 .supports_rmii = {false, false, true}, 1255 1216 .internal_phy = {true, true, false}, 1217 + .wr_table = &ksz8873_register_set, 1218 + .rd_table = &ksz8873_register_set, 1256 1219 }, 1257 1220 1258 1221 [KSZ9477] = { ··· 2136 2095 } 2137 2096 2138 2097 /* set broadcast storm protection 10% rate */ 2139 - regmap_update_bits(dev->regmap[1], regs[S_BROADCAST_CTRL], 2098 + regmap_update_bits(ksz_regmap_16(dev), regs[S_BROADCAST_CTRL], 2140 2099 BROADCAST_STORM_RATE, 2141 2100 (BROADCAST_STORM_VALUE * 2142 2101 BROADCAST_STORM_PROT_RATE) / 100); ··· 2147 2106 2148 2107 ds->num_tx_queues = dev->info->num_tx_queues; 2149 2108 2150 - regmap_update_bits(dev->regmap[0], regs[S_MULTICAST_CTRL], 2109 + regmap_update_bits(ksz_regmap_8(dev), regs[S_MULTICAST_CTRL], 2151 2110 MULTICAST_STORM_DISABLE, MULTICAST_STORM_DISABLE); 2152 2111 2153 2112 ksz_init_mib_timer(dev); ··· 2197 2156 } 2198 2157 2199 2158 /* start switch */ 2200 - regmap_update_bits(dev->regmap[0], regs[S_START_CTRL], 2159 + regmap_update_bits(ksz_regmap_8(dev), regs[S_START_CTRL], 2201 2160 SW_START, SW_START); 2202 2161 2203 2162 return 0;
+56 -21
drivers/net/dsa/microchip/ksz_common.h
··· 22 22 struct ksz_device; 23 23 struct ksz_port; 24 24 25 + enum ksz_regmap_width { 26 + KSZ_REGMAP_8, 27 + KSZ_REGMAP_16, 28 + KSZ_REGMAP_32, 29 + __KSZ_NUM_REGMAPS, 30 + }; 31 + 25 32 struct vlan_table { 26 33 u32 table[3]; 27 34 }; ··· 108 101 int stp_state; 109 102 struct phy_device phydev; 110 103 111 - u32 on:1; /* port is not disabled by hardware */ 112 104 u32 fiber:1; /* port is fiber */ 113 105 u32 force:1; 114 106 u32 read:1; /* read MIB counters in background */ ··· 143 137 const struct ksz_dev_ops *dev_ops; 144 138 145 139 struct device *dev; 146 - struct regmap *regmap[3]; 140 + struct regmap *regmap[__KSZ_NUM_REGMAPS]; 147 141 148 142 void *priv; 149 143 int irq; ··· 383 377 extern const struct ksz_chip_data ksz_switch_chips[]; 384 378 385 379 /* Common register access functions */ 380 + static inline struct regmap *ksz_regmap_8(struct ksz_device *dev) 381 + { 382 + return dev->regmap[KSZ_REGMAP_8]; 383 + } 384 + 385 + static inline struct regmap *ksz_regmap_16(struct ksz_device *dev) 386 + { 387 + return dev->regmap[KSZ_REGMAP_16]; 388 + } 389 + 390 + static inline struct regmap *ksz_regmap_32(struct ksz_device *dev) 391 + { 392 + return dev->regmap[KSZ_REGMAP_32]; 393 + } 386 394 387 395 static inline int ksz_read8(struct ksz_device *dev, u32 reg, u8 *val) 388 396 { 389 397 unsigned int value; 390 - int ret = regmap_read(dev->regmap[0], reg, &value); 398 + int ret = regmap_read(ksz_regmap_8(dev), reg, &value); 391 399 392 400 if (ret) 393 401 dev_err(dev->dev, "can't read 8bit reg: 0x%x %pe\n", reg, ··· 414 394 static inline int ksz_read16(struct ksz_device *dev, u32 reg, u16 *val) 415 395 { 416 396 unsigned int value; 417 - int ret = regmap_read(dev->regmap[1], reg, &value); 397 + int ret = regmap_read(ksz_regmap_16(dev), reg, &value); 418 398 419 399 if (ret) 420 400 dev_err(dev->dev, "can't read 16bit reg: 0x%x %pe\n", reg, ··· 427 407 static inline int ksz_read32(struct ksz_device *dev, u32 reg, u32 *val) 428 408 { 429 409 unsigned int value; 430 - int ret = regmap_read(dev->regmap[2], reg, &value); 410 + int ret = regmap_read(ksz_regmap_32(dev), reg, &value); 431 411 432 412 if (ret) 433 413 dev_err(dev->dev, "can't read 32bit reg: 0x%x %pe\n", reg, ··· 442 422 u32 value[2]; 443 423 int ret; 444 424 445 - ret = regmap_bulk_read(dev->regmap[2], reg, value, 2); 425 + ret = regmap_bulk_read(ksz_regmap_32(dev), reg, value, 2); 446 426 if (ret) 447 427 dev_err(dev->dev, "can't read 64bit reg: 0x%x %pe\n", reg, 448 428 ERR_PTR(ret)); ··· 456 436 { 457 437 int ret; 458 438 459 - ret = regmap_write(dev->regmap[0], reg, value); 439 + ret = regmap_write(ksz_regmap_8(dev), reg, value); 460 440 if (ret) 461 441 dev_err(dev->dev, "can't write 8bit reg: 0x%x %pe\n", reg, 462 442 ERR_PTR(ret)); ··· 468 448 { 469 449 int ret; 470 450 471 - ret = regmap_write(dev->regmap[1], reg, value); 451 + ret = regmap_write(ksz_regmap_16(dev), reg, value); 472 452 if (ret) 473 453 dev_err(dev->dev, "can't write 16bit reg: 0x%x %pe\n", reg, 474 454 ERR_PTR(ret)); ··· 480 460 { 481 461 int ret; 482 462 483 - ret = regmap_write(dev->regmap[2], reg, value); 463 + ret = regmap_write(ksz_regmap_32(dev), reg, value); 484 464 if (ret) 485 465 dev_err(dev->dev, "can't write 32bit reg: 0x%x %pe\n", reg, 486 466 ERR_PTR(ret)); ··· 493 473 { 494 474 int ret; 495 475 496 - ret = regmap_update_bits(dev->regmap[1], reg, mask, value); 476 + ret = regmap_update_bits(ksz_regmap_16(dev), reg, mask, value); 497 477 if (ret) 498 478 dev_err(dev->dev, "can't rmw 16bit reg 0x%x: %pe\n", reg, 499 479 ERR_PTR(ret)); ··· 506 486 { 507 487 int ret; 508 488 509 - ret = regmap_update_bits(dev->regmap[2], reg, mask, value); 489 + ret = regmap_update_bits(ksz_regmap_32(dev), reg, mask, value); 510 490 if (ret) 511 491 dev_err(dev->dev, "can't rmw 32bit reg 0x%x: %pe\n", reg, 512 492 ERR_PTR(ret)); ··· 523 503 val[0] = swab32(value & 0xffffffffULL); 524 504 val[1] = swab32(value >> 32ULL); 525 505 526 - return regmap_bulk_write(dev->regmap[2], reg, val, 2); 506 + return regmap_bulk_write(ksz_regmap_32(dev), reg, val, 2); 527 507 } 528 508 529 509 static inline int ksz_rmw8(struct ksz_device *dev, int offset, u8 mask, u8 val) 530 510 { 531 - return regmap_update_bits(dev->regmap[0], offset, mask, val); 511 + int ret; 512 + 513 + ret = regmap_update_bits(ksz_regmap_8(dev), offset, mask, val); 514 + if (ret) 515 + dev_err(dev->dev, "can't rmw 8bit reg 0x%x: %pe\n", offset, 516 + ERR_PTR(ret)); 517 + 518 + return ret; 532 519 } 533 520 534 521 static inline int ksz_pread8(struct ksz_device *dev, int port, int offset, ··· 576 549 data); 577 550 } 578 551 579 - static inline void ksz_prmw8(struct ksz_device *dev, int port, int offset, 580 - u8 mask, u8 val) 552 + static inline int ksz_prmw8(struct ksz_device *dev, int port, int offset, 553 + u8 mask, u8 val) 581 554 { 582 - regmap_update_bits(dev->regmap[0], 583 - dev->dev_ops->get_port_addr(port, offset), 584 - mask, val); 555 + int ret; 556 + 557 + ret = regmap_update_bits(ksz_regmap_8(dev), 558 + dev->dev_ops->get_port_addr(port, offset), 559 + mask, val); 560 + if (ret) 561 + dev_err(dev->dev, "can't rmw 8bit reg 0x%x: %pe\n", 562 + dev->dev_ops->get_port_addr(port, offset), 563 + ERR_PTR(ret)); 564 + 565 + return ret; 585 566 } 586 567 587 568 static inline void ksz_regmap_lock(void *__mtx) ··· 744 709 745 710 #define KSZ_REGMAP_TABLE(ksz, swp, regbits, regpad, regalign) \ 746 711 static const struct regmap_config ksz##_regmap_config[] = { \ 747 - KSZ_REGMAP_ENTRY(8, swp, (regbits), (regpad), (regalign)), \ 748 - KSZ_REGMAP_ENTRY(16, swp, (regbits), (regpad), (regalign)), \ 749 - KSZ_REGMAP_ENTRY(32, swp, (regbits), (regpad), (regalign)), \ 712 + [KSZ_REGMAP_8] = KSZ_REGMAP_ENTRY(8, swp, (regbits), (regpad), (regalign)), \ 713 + [KSZ_REGMAP_16] = KSZ_REGMAP_ENTRY(16, swp, (regbits), (regpad), (regalign)), \ 714 + [KSZ_REGMAP_32] = KSZ_REGMAP_ENTRY(32, swp, (regbits), (regpad), (regalign)), \ 750 715 } 751 716 752 717 #endif
+1 -1
drivers/net/dsa/microchip/ksz_spi.c
··· 63 63 else 64 64 regmap_config = ksz9477_regmap_config; 65 65 66 - for (i = 0; i < ARRAY_SIZE(ksz8795_regmap_config); i++) { 66 + for (i = 0; i < __KSZ_NUM_REGMAPS; i++) { 67 67 rc = regmap_config[i]; 68 68 rc.lock_arg = &dev->regmap_mutex; 69 69 rc.wr_table = chip->wr_table;
+4 -4
drivers/net/dsa/microchip/lan937x_main.c
··· 20 20 21 21 static int lan937x_cfg(struct ksz_device *dev, u32 addr, u8 bits, bool set) 22 22 { 23 - return regmap_update_bits(dev->regmap[0], addr, bits, set ? bits : 0); 23 + return regmap_update_bits(ksz_regmap_8(dev), addr, bits, set ? bits : 0); 24 24 } 25 25 26 26 static int lan937x_port_cfg(struct ksz_device *dev, int port, int offset, 27 27 u8 bits, bool set) 28 28 { 29 - return regmap_update_bits(dev->regmap[0], PORT_CTRL_ADDR(port, offset), 29 + return regmap_update_bits(ksz_regmap_8(dev), PORT_CTRL_ADDR(port, offset), 30 30 bits, set ? bits : 0); 31 31 } 32 32 ··· 86 86 if (ret < 0) 87 87 return ret; 88 88 89 - ret = regmap_read_poll_timeout(dev->regmap[1], REG_VPHY_IND_CTRL__2, 89 + ret = regmap_read_poll_timeout(ksz_regmap_16(dev), REG_VPHY_IND_CTRL__2, 90 90 value, !(value & VPHY_IND_BUSY), 10, 91 91 1000); 92 92 if (ret < 0) { ··· 116 116 if (ret < 0) 117 117 return ret; 118 118 119 - ret = regmap_read_poll_timeout(dev->regmap[1], REG_VPHY_IND_CTRL__2, 119 + ret = regmap_read_poll_timeout(ksz_regmap_16(dev), REG_VPHY_IND_CTRL__2, 120 120 value, !(value & VPHY_IND_BUSY), 10, 121 121 1000); 122 122 if (ret < 0) {