ksz8795.c (7fcb820c7609f207cd2e5b49bff96a5b55167cf3) | ksz8795.c (486f9ca715d7b70ed79dbe91296b9e0110deaab5) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Microchip KSZ8795 switch driver 4 * 5 * Copyright (C) 2017 Microchip Technology Inc. 6 * Tristram Ha <Tristram.Ha@microchip.com> 7 */ 8 --- 12 unchanged lines hidden (view full) --- 21#include <net/dsa.h> 22#include <net/switchdev.h> 23#include <linux/phylink.h> 24 25#include "ksz_common.h" 26#include "ksz8795_reg.h" 27#include "ksz8.h" 28 | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Microchip KSZ8795 switch driver 4 * 5 * Copyright (C) 2017 Microchip Technology Inc. 6 * Tristram Ha <Tristram.Ha@microchip.com> 7 */ 8 --- 12 unchanged lines hidden (view full) --- 21#include <net/dsa.h> 22#include <net/switchdev.h> 23#include <linux/phylink.h> 24 25#include "ksz_common.h" 26#include "ksz8795_reg.h" 27#include "ksz8.h" 28 |
29static const u8 ksz8795_regs[] = { 30 [REG_IND_CTRL_0] = 0x6E, 31 [REG_IND_DATA_8] = 0x70, 32 [REG_IND_DATA_CHECK] = 0x72, 33 [REG_IND_DATA_HI] = 0x71, 34 [REG_IND_DATA_LO] = 0x75, 35 [REG_IND_MIB_CHECK] = 0x74, 36 [REG_IND_BYTE] = 0xA0, 37 [P_FORCE_CTRL] = 0x0C, 38 [P_LINK_STATUS] = 0x0E, 39 [P_LOCAL_CTRL] = 0x07, 40 [P_NEG_RESTART_CTRL] = 0x0D, 41 [P_REMOTE_STATUS] = 0x08, 42 [P_SPEED_STATUS] = 0x09, 43 [S_TAIL_TAG_CTRL] = 0x0C, 44}; 45 | |
46static const u32 ksz8795_masks[] = { 47 [PORT_802_1P_REMAPPING] = BIT(7), 48 [SW_TAIL_TAG_ENABLE] = BIT(1), 49 [MIB_COUNTER_OVERFLOW] = BIT(6), 50 [MIB_COUNTER_VALID] = BIT(5), 51 [VLAN_TABLE_FID] = GENMASK(6, 0), 52 [VLAN_TABLE_MEMBERSHIP] = GENMASK(11, 7), 53 [VLAN_TABLE_VALID] = BIT(12), --- 18 unchanged lines hidden (view full) --- 72 [STATIC_MAC_FID] = 24, 73 [DYNAMIC_MAC_ENTRIES_H] = 3, 74 [DYNAMIC_MAC_ENTRIES] = 29, 75 [DYNAMIC_MAC_FID] = 16, 76 [DYNAMIC_MAC_TIMESTAMP] = 27, 77 [DYNAMIC_MAC_SRC_PORT] = 24, 78}; 79 | 29static const u32 ksz8795_masks[] = { 30 [PORT_802_1P_REMAPPING] = BIT(7), 31 [SW_TAIL_TAG_ENABLE] = BIT(1), 32 [MIB_COUNTER_OVERFLOW] = BIT(6), 33 [MIB_COUNTER_VALID] = BIT(5), 34 [VLAN_TABLE_FID] = GENMASK(6, 0), 35 [VLAN_TABLE_MEMBERSHIP] = GENMASK(11, 7), 36 [VLAN_TABLE_VALID] = BIT(12), --- 18 unchanged lines hidden (view full) --- 55 [STATIC_MAC_FID] = 24, 56 [DYNAMIC_MAC_ENTRIES_H] = 3, 57 [DYNAMIC_MAC_ENTRIES] = 29, 58 [DYNAMIC_MAC_FID] = 16, 59 [DYNAMIC_MAC_TIMESTAMP] = 27, 60 [DYNAMIC_MAC_SRC_PORT] = 24, 61}; 62 |
80static const u8 ksz8863_regs[] = { 81 [REG_IND_CTRL_0] = 0x79, 82 [REG_IND_DATA_8] = 0x7B, 83 [REG_IND_DATA_CHECK] = 0x7B, 84 [REG_IND_DATA_HI] = 0x7C, 85 [REG_IND_DATA_LO] = 0x80, 86 [REG_IND_MIB_CHECK] = 0x80, 87 [P_FORCE_CTRL] = 0x0C, 88 [P_LINK_STATUS] = 0x0E, 89 [P_LOCAL_CTRL] = 0x0C, 90 [P_NEG_RESTART_CTRL] = 0x0D, 91 [P_REMOTE_STATUS] = 0x0E, 92 [P_SPEED_STATUS] = 0x0F, 93 [S_TAIL_TAG_CTRL] = 0x03, 94}; 95 | |
96static const u32 ksz8863_masks[] = { 97 [PORT_802_1P_REMAPPING] = BIT(3), 98 [SW_TAIL_TAG_ENABLE] = BIT(6), 99 [MIB_COUNTER_OVERFLOW] = BIT(7), 100 [MIB_COUNTER_VALID] = BIT(6), 101 [VLAN_TABLE_FID] = GENMASK(15, 12), 102 [VLAN_TABLE_MEMBERSHIP] = GENMASK(18, 16), 103 [VLAN_TABLE_VALID] = BIT(19), --- 36 unchanged lines hidden (view full) --- 140 bool set) 141{ 142 regmap_update_bits(dev->regmap[0], PORT_CTRL_ADDR(port, offset), 143 bits, set ? bits : 0); 144} 145 146static int ksz8_ind_write8(struct ksz_device *dev, u8 table, u16 addr, u8 data) 147{ | 63static const u32 ksz8863_masks[] = { 64 [PORT_802_1P_REMAPPING] = BIT(3), 65 [SW_TAIL_TAG_ENABLE] = BIT(6), 66 [MIB_COUNTER_OVERFLOW] = BIT(7), 67 [MIB_COUNTER_VALID] = BIT(6), 68 [VLAN_TABLE_FID] = GENMASK(15, 12), 69 [VLAN_TABLE_MEMBERSHIP] = GENMASK(18, 16), 70 [VLAN_TABLE_VALID] = BIT(19), --- 36 unchanged lines hidden (view full) --- 107 bool set) 108{ 109 regmap_update_bits(dev->regmap[0], PORT_CTRL_ADDR(port, offset), 110 bits, set ? bits : 0); 111} 112 113static int ksz8_ind_write8(struct ksz_device *dev, u8 table, u16 addr, u8 data) 114{ |
148 struct ksz8 *ksz8 = dev->priv; 149 const u8 *regs = ksz8->regs; | 115 const u8 *regs; |
150 u16 ctrl_addr; 151 int ret = 0; 152 | 116 u16 ctrl_addr; 117 int ret = 0; 118 |
119 regs = dev->info->regs; 120 |
|
153 mutex_lock(&dev->alu_mutex); 154 155 ctrl_addr = IND_ACC_TABLE(table) | addr; 156 ret = ksz_write8(dev, regs[REG_IND_BYTE], data); 157 if (!ret) 158 ret = ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); 159 160 mutex_unlock(&dev->alu_mutex); --- 58 unchanged lines hidden (view full) --- 219 const u32 *masks; 220 const u8 *regs; 221 u16 ctrl_addr; 222 u32 data; 223 u8 check; 224 int loop; 225 226 masks = ksz8->masks; | 121 mutex_lock(&dev->alu_mutex); 122 123 ctrl_addr = IND_ACC_TABLE(table) | addr; 124 ret = ksz_write8(dev, regs[REG_IND_BYTE], data); 125 if (!ret) 126 ret = ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); 127 128 mutex_unlock(&dev->alu_mutex); --- 58 unchanged lines hidden (view full) --- 187 const u32 *masks; 188 const u8 *regs; 189 u16 ctrl_addr; 190 u32 data; 191 u8 check; 192 int loop; 193 194 masks = ksz8->masks; |
227 regs = ksz8->regs; | 195 regs = dev->info->regs; |
228 229 ctrl_addr = addr + dev->info->reg_mib_cnt * port; 230 ctrl_addr |= IND_ACC_TABLE(TABLE_MIB | TABLE_READ); 231 232 mutex_lock(&dev->alu_mutex); 233 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); 234 235 /* It is almost guaranteed to always read the valid bit because of --- 20 unchanged lines hidden (view full) --- 256 const u32 *masks; 257 const u8 *regs; 258 u16 ctrl_addr; 259 u32 data; 260 u8 check; 261 int loop; 262 263 masks = ksz8->masks; | 196 197 ctrl_addr = addr + dev->info->reg_mib_cnt * port; 198 ctrl_addr |= IND_ACC_TABLE(TABLE_MIB | TABLE_READ); 199 200 mutex_lock(&dev->alu_mutex); 201 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); 202 203 /* It is almost guaranteed to always read the valid bit because of --- 20 unchanged lines hidden (view full) --- 224 const u32 *masks; 225 const u8 *regs; 226 u16 ctrl_addr; 227 u32 data; 228 u8 check; 229 int loop; 230 231 masks = ksz8->masks; |
264 regs = ksz8->regs; | 232 regs = dev->info->regs; |
265 266 addr -= dev->info->reg_mib_cnt; 267 ctrl_addr = (KSZ8795_MIB_TOTAL_RX_1 - KSZ8795_MIB_TOTAL_RX_0) * port; 268 ctrl_addr += addr + KSZ8795_MIB_TOTAL_RX_0; 269 ctrl_addr |= IND_ACC_TABLE(TABLE_MIB | TABLE_READ); 270 271 mutex_lock(&dev->alu_mutex); 272 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); --- 27 unchanged lines hidden (view full) --- 300 } 301 } 302 mutex_unlock(&dev->alu_mutex); 303} 304 305static void ksz8863_r_mib_pkt(struct ksz_device *dev, int port, u16 addr, 306 u64 *dropped, u64 *cnt) 307{ | 233 234 addr -= dev->info->reg_mib_cnt; 235 ctrl_addr = (KSZ8795_MIB_TOTAL_RX_1 - KSZ8795_MIB_TOTAL_RX_0) * port; 236 ctrl_addr += addr + KSZ8795_MIB_TOTAL_RX_0; 237 ctrl_addr |= IND_ACC_TABLE(TABLE_MIB | TABLE_READ); 238 239 mutex_lock(&dev->alu_mutex); 240 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); --- 27 unchanged lines hidden (view full) --- 268 } 269 } 270 mutex_unlock(&dev->alu_mutex); 271} 272 273static void ksz8863_r_mib_pkt(struct ksz_device *dev, int port, u16 addr, 274 u64 *dropped, u64 *cnt) 275{ |
308 struct ksz8 *ksz8 = dev->priv; 309 const u8 *regs = ksz8->regs; | |
310 u32 *last = (u32 *)dropped; | 276 u32 *last = (u32 *)dropped; |
277 const u8 *regs; |
|
311 u16 ctrl_addr; 312 u32 data; 313 u32 cur; 314 | 278 u16 ctrl_addr; 279 u32 data; 280 u32 cur; 281 |
282 regs = dev->info->regs; 283 |
|
315 addr -= dev->info->reg_mib_cnt; 316 ctrl_addr = addr ? KSZ8863_MIB_PACKET_DROPPED_TX_0 : 317 KSZ8863_MIB_PACKET_DROPPED_RX_0; 318 ctrl_addr += port; 319 ctrl_addr |= IND_ACC_TABLE(TABLE_MIB | TABLE_READ); 320 321 mutex_lock(&dev->alu_mutex); 322 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); --- 64 unchanged lines hidden (view full) --- 387 dev->dev_ops->r_mib_pkt(dev, port, mib->cnt_ptr, 388 dropped, &mib->counters[mib->cnt_ptr]); 389 ++mib->cnt_ptr; 390 } 391} 392 393static void ksz8_r_table(struct ksz_device *dev, int table, u16 addr, u64 *data) 394{ | 284 addr -= dev->info->reg_mib_cnt; 285 ctrl_addr = addr ? KSZ8863_MIB_PACKET_DROPPED_TX_0 : 286 KSZ8863_MIB_PACKET_DROPPED_RX_0; 287 ctrl_addr += port; 288 ctrl_addr |= IND_ACC_TABLE(TABLE_MIB | TABLE_READ); 289 290 mutex_lock(&dev->alu_mutex); 291 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); --- 64 unchanged lines hidden (view full) --- 356 dev->dev_ops->r_mib_pkt(dev, port, mib->cnt_ptr, 357 dropped, &mib->counters[mib->cnt_ptr]); 358 ++mib->cnt_ptr; 359 } 360} 361 362static void ksz8_r_table(struct ksz_device *dev, int table, u16 addr, u64 *data) 363{ |
395 struct ksz8 *ksz8 = dev->priv; 396 const u8 *regs = ksz8->regs; | 364 const u8 *regs; |
397 u16 ctrl_addr; 398 | 365 u16 ctrl_addr; 366 |
367 regs = dev->info->regs; 368 |
|
399 ctrl_addr = IND_ACC_TABLE(table | TABLE_READ) | addr; 400 401 mutex_lock(&dev->alu_mutex); 402 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); 403 ksz_read64(dev, regs[REG_IND_DATA_HI], data); 404 mutex_unlock(&dev->alu_mutex); 405} 406 407static void ksz8_w_table(struct ksz_device *dev, int table, u16 addr, u64 data) 408{ | 369 ctrl_addr = IND_ACC_TABLE(table | TABLE_READ) | addr; 370 371 mutex_lock(&dev->alu_mutex); 372 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); 373 ksz_read64(dev, regs[REG_IND_DATA_HI], data); 374 mutex_unlock(&dev->alu_mutex); 375} 376 377static void ksz8_w_table(struct ksz_device *dev, int table, u16 addr, u64 data) 378{ |
409 struct ksz8 *ksz8 = dev->priv; 410 const u8 *regs = ksz8->regs; | 379 const u8 *regs; |
411 u16 ctrl_addr; 412 | 380 u16 ctrl_addr; 381 |
382 regs = dev->info->regs; 383 |
|
413 ctrl_addr = IND_ACC_TABLE(table) | addr; 414 415 mutex_lock(&dev->alu_mutex); 416 ksz_write64(dev, regs[REG_IND_DATA_HI], data); 417 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); 418 mutex_unlock(&dev->alu_mutex); 419} 420 421static int ksz8_valid_dyn_entry(struct ksz_device *dev, u8 *data) 422{ 423 struct ksz8 *ksz8 = dev->priv; 424 int timeout = 100; 425 const u32 *masks; 426 const u8 *regs; 427 428 masks = ksz8->masks; | 384 ctrl_addr = IND_ACC_TABLE(table) | addr; 385 386 mutex_lock(&dev->alu_mutex); 387 ksz_write64(dev, regs[REG_IND_DATA_HI], data); 388 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); 389 mutex_unlock(&dev->alu_mutex); 390} 391 392static int ksz8_valid_dyn_entry(struct ksz_device *dev, u8 *data) 393{ 394 struct ksz8 *ksz8 = dev->priv; 395 int timeout = 100; 396 const u32 *masks; 397 const u8 *regs; 398 399 masks = ksz8->masks; |
429 regs = ksz8->regs; | 400 regs = dev->info->regs; |
430 431 do { 432 ksz_read8(dev, regs[REG_IND_DATA_CHECK], data); 433 timeout--; 434 } while ((*data & masks[DYNAMIC_MAC_TABLE_NOT_READY]) && timeout); 435 436 /* Entry is not ready for accessing. */ 437 if (*data & masks[DYNAMIC_MAC_TABLE_NOT_READY]) { --- 18 unchanged lines hidden (view full) --- 456 const u32 *masks; 457 const u8 *regs; 458 u16 ctrl_addr; 459 u8 data; 460 int rc; 461 462 shifts = ksz8->shifts; 463 masks = ksz8->masks; | 401 402 do { 403 ksz_read8(dev, regs[REG_IND_DATA_CHECK], data); 404 timeout--; 405 } while ((*data & masks[DYNAMIC_MAC_TABLE_NOT_READY]) && timeout); 406 407 /* Entry is not ready for accessing. */ 408 if (*data & masks[DYNAMIC_MAC_TABLE_NOT_READY]) { --- 18 unchanged lines hidden (view full) --- 427 const u32 *masks; 428 const u8 *regs; 429 u16 ctrl_addr; 430 u8 data; 431 int rc; 432 433 shifts = ksz8->shifts; 434 masks = ksz8->masks; |
464 regs = ksz8->regs; | 435 regs = dev->info->regs; |
465 466 ctrl_addr = IND_ACC_TABLE(TABLE_DYNAMIC_MAC | TABLE_READ) | addr; 467 468 mutex_lock(&dev->alu_mutex); 469 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); 470 471 rc = ksz8_valid_dyn_entry(dev, &data); 472 if (rc == -EAGAIN) { --- 186 unchanged lines hidden (view full) --- 659 ksz8_r_table(dev, TABLE_VLAN, addr, &buf); 660 data[index] = vlan; 661 dev->vlan_cache[vid].table[0] = vlan; 662 ksz8_w_table(dev, TABLE_VLAN, addr, buf); 663} 664 665void ksz8_r_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 *val) 666{ | 436 437 ctrl_addr = IND_ACC_TABLE(TABLE_DYNAMIC_MAC | TABLE_READ) | addr; 438 439 mutex_lock(&dev->alu_mutex); 440 ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr); 441 442 rc = ksz8_valid_dyn_entry(dev, &data); 443 if (rc == -EAGAIN) { --- 186 unchanged lines hidden (view full) --- 630 ksz8_r_table(dev, TABLE_VLAN, addr, &buf); 631 data[index] = vlan; 632 dev->vlan_cache[vid].table[0] = vlan; 633 ksz8_w_table(dev, TABLE_VLAN, addr, buf); 634} 635 636void ksz8_r_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 *val) 637{ |
667 struct ksz8 *ksz8 = dev->priv; | |
668 u8 restart, speed, ctrl, link; | 638 u8 restart, speed, ctrl, link; |
669 const u8 *regs = ksz8->regs; | |
670 int processed = true; | 639 int processed = true; |
640 const u8 *regs; |
|
671 u8 val1, val2; 672 u16 data = 0; 673 u8 p = phy; 674 | 641 u8 val1, val2; 642 u16 data = 0; 643 u8 p = phy; 644 |
645 regs = dev->info->regs; 646 |
|
675 switch (reg) { 676 case MII_BMCR: 677 ksz_pread8(dev, p, regs[P_NEG_RESTART_CTRL], &restart); 678 ksz_pread8(dev, p, regs[P_SPEED_STATUS], &speed); 679 ksz_pread8(dev, p, regs[P_FORCE_CTRL], &ctrl); 680 if (restart & PORT_PHY_LOOPBACK) 681 data |= BMCR_LOOPBACK; 682 if (ctrl & PORT_FORCE_100_MBIT) --- 99 unchanged lines hidden (view full) --- 782 break; 783 } 784 if (processed) 785 *val = data; 786} 787 788void ksz8_w_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 val) 789{ | 647 switch (reg) { 648 case MII_BMCR: 649 ksz_pread8(dev, p, regs[P_NEG_RESTART_CTRL], &restart); 650 ksz_pread8(dev, p, regs[P_SPEED_STATUS], &speed); 651 ksz_pread8(dev, p, regs[P_FORCE_CTRL], &ctrl); 652 if (restart & PORT_PHY_LOOPBACK) 653 data |= BMCR_LOOPBACK; 654 if (ctrl & PORT_FORCE_100_MBIT) --- 99 unchanged lines hidden (view full) --- 754 break; 755 } 756 if (processed) 757 *val = data; 758} 759 760void ksz8_w_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 val) 761{ |
790 struct ksz8 *ksz8 = dev->priv; | |
791 u8 restart, speed, ctrl, data; | 762 u8 restart, speed, ctrl, data; |
792 const u8 *regs = ksz8->regs; | 763 const u8 *regs; |
793 u8 p = phy; 794 | 764 u8 p = phy; 765 |
766 regs = dev->info->regs; 767 |
|
795 switch (reg) { 796 case MII_BMCR: 797 798 /* Do not support PHY reset function. */ 799 if (val & BMCR_RESET) 800 break; 801 ksz_pread8(dev, p, regs[P_SPEED_STATUS], &speed); 802 data = speed; --- 494 unchanged lines hidden (view full) --- 1297 1298 ksz8_cfg_port_member(dev, port, member); 1299} 1300 1301void ksz8_config_cpu_port(struct dsa_switch *ds) 1302{ 1303 struct ksz_device *dev = ds->priv; 1304 struct ksz8 *ksz8 = dev->priv; | 768 switch (reg) { 769 case MII_BMCR: 770 771 /* Do not support PHY reset function. */ 772 if (val & BMCR_RESET) 773 break; 774 ksz_pread8(dev, p, regs[P_SPEED_STATUS], &speed); 775 data = speed; --- 494 unchanged lines hidden (view full) --- 1270 1271 ksz8_cfg_port_member(dev, port, member); 1272} 1273 1274void ksz8_config_cpu_port(struct dsa_switch *ds) 1275{ 1276 struct ksz_device *dev = ds->priv; 1277 struct ksz8 *ksz8 = dev->priv; |
1305 const u8 *regs = ksz8->regs; | |
1306 struct ksz_port *p; 1307 const u32 *masks; | 1278 struct ksz_port *p; 1279 const u32 *masks; |
1280 const u8 *regs; |
|
1308 u8 remote; 1309 int i; 1310 1311 masks = ksz8->masks; | 1281 u8 remote; 1282 int i; 1283 1284 masks = ksz8->masks; |
1285 regs = dev->info->regs; |
|
1312 1313 /* Switch marks the maximum frame with extra byte as oversize. */ 1314 ksz_cfg(dev, REG_SW_CTRL_2, SW_LEGAL_PACKET_DISABLE, true); 1315 ksz_cfg(dev, regs[S_TAIL_TAG_CTRL], masks[SW_TAIL_TAG_ENABLE], true); 1316 1317 p = &dev->ports[dev->cpu_port]; 1318 p->on = 1; 1319 --- 123 unchanged lines hidden (view full) --- 1443{ 1444 struct ksz8 *ksz8 = dev->priv; 1445 1446 dev->cpu_port = fls(dev->info->cpu_ports) - 1; 1447 dev->phy_port_cnt = dev->info->port_cnt - 1; 1448 dev->port_mask = (BIT(dev->phy_port_cnt) - 1) | dev->info->cpu_ports; 1449 1450 if (ksz_is_ksz88x3(dev)) { | 1286 1287 /* Switch marks the maximum frame with extra byte as oversize. */ 1288 ksz_cfg(dev, REG_SW_CTRL_2, SW_LEGAL_PACKET_DISABLE, true); 1289 ksz_cfg(dev, regs[S_TAIL_TAG_CTRL], masks[SW_TAIL_TAG_ENABLE], true); 1290 1291 p = &dev->ports[dev->cpu_port]; 1292 p->on = 1; 1293 --- 123 unchanged lines hidden (view full) --- 1417{ 1418 struct ksz8 *ksz8 = dev->priv; 1419 1420 dev->cpu_port = fls(dev->info->cpu_ports) - 1; 1421 dev->phy_port_cnt = dev->info->port_cnt - 1; 1422 dev->port_mask = (BIT(dev->phy_port_cnt) - 1) | dev->info->cpu_ports; 1423 1424 if (ksz_is_ksz88x3(dev)) { |
1451 ksz8->regs = ksz8863_regs; | |
1452 ksz8->masks = ksz8863_masks; 1453 ksz8->shifts = ksz8863_shifts; 1454 } else { | 1425 ksz8->masks = ksz8863_masks; 1426 ksz8->shifts = ksz8863_shifts; 1427 } else { |
1455 ksz8->regs = ksz8795_regs; | |
1456 ksz8->masks = ksz8795_masks; 1457 ksz8->shifts = ksz8795_shifts; 1458 } 1459 1460 /* We rely on software untagging on the CPU port, so that we 1461 * can support both tagged and untagged VLANs 1462 */ 1463 dev->ds->untag_bridge_pvid = true; --- 17 unchanged lines hidden --- | 1428 ksz8->masks = ksz8795_masks; 1429 ksz8->shifts = ksz8795_shifts; 1430 } 1431 1432 /* We rely on software untagging on the CPU port, so that we 1433 * can support both tagged and untagged VLANs 1434 */ 1435 dev->ds->untag_bridge_pvid = true; --- 17 unchanged lines hidden --- |