• Home
  • Raw
  • Download

Lines Matching refs:smi

358 static int rtl8366rb_get_mib_counter(struct realtek_smi *smi,  in rtl8366rb_get_mib_counter()  argument
374 ret = regmap_write(smi->map, addr, 0); /* Write whatever */ in rtl8366rb_get_mib_counter()
379 ret = regmap_read(smi->map, RTL8366RB_MIB_CTRL_REG, &val); in rtl8366rb_get_mib_counter()
392 ret = regmap_read(smi->map, addr + (i - 1), &val); in rtl8366rb_get_mib_counter()
417 struct realtek_smi *smi = irq_data_get_irq_chip_data(d); in rtl8366rb_mask_irq() local
420 ret = regmap_update_bits(smi->map, RTL8366RB_INTERRUPT_MASK_REG, in rtl8366rb_mask_irq()
423 dev_err(smi->dev, "could not mask IRQ\n"); in rtl8366rb_mask_irq()
428 struct realtek_smi *smi = irq_data_get_irq_chip_data(d); in rtl8366rb_unmask_irq() local
431 ret = regmap_update_bits(smi->map, RTL8366RB_INTERRUPT_MASK_REG, in rtl8366rb_unmask_irq()
435 dev_err(smi->dev, "could not unmask IRQ\n"); in rtl8366rb_unmask_irq()
440 struct realtek_smi *smi = data; in rtl8366rb_irq() local
445 ret = regmap_read(smi->map, RTL8366RB_INTERRUPT_STATUS_REG, in rtl8366rb_irq()
448 dev_err(smi->dev, "can't read interrupt status\n"); in rtl8366rb_irq()
464 child_irq = irq_find_mapping(smi->irqdomain, line); in rtl8366rb_irq()
500 static int rtl8366rb_setup_cascaded_irq(struct realtek_smi *smi) in rtl8366rb_setup_cascaded_irq() argument
509 intc = of_get_child_by_name(smi->dev->of_node, "interrupt-controller"); in rtl8366rb_setup_cascaded_irq()
511 dev_err(smi->dev, "missing child interrupt-controller node\n"); in rtl8366rb_setup_cascaded_irq()
517 dev_err(smi->dev, "failed to get parent IRQ\n"); in rtl8366rb_setup_cascaded_irq()
523 ret = regmap_read(smi->map, RTL8366RB_INTERRUPT_STATUS_REG, in rtl8366rb_setup_cascaded_irq()
526 dev_err(smi->dev, "can't read interrupt status\n"); in rtl8366rb_setup_cascaded_irq()
535 dev_info(smi->dev, "active high/rising IRQ\n"); in rtl8366rb_setup_cascaded_irq()
540 dev_info(smi->dev, "active low/falling IRQ\n"); in rtl8366rb_setup_cascaded_irq()
544 ret = regmap_update_bits(smi->map, RTL8366RB_INTERRUPT_CONTROL_REG, in rtl8366rb_setup_cascaded_irq()
548 dev_err(smi->dev, "could not configure IRQ polarity\n"); in rtl8366rb_setup_cascaded_irq()
552 ret = devm_request_threaded_irq(smi->dev, irq, NULL, in rtl8366rb_setup_cascaded_irq()
554 "RTL8366RB", smi); in rtl8366rb_setup_cascaded_irq()
556 dev_err(smi->dev, "unable to request irq: %d\n", ret); in rtl8366rb_setup_cascaded_irq()
559 smi->irqdomain = irq_domain_add_linear(intc, in rtl8366rb_setup_cascaded_irq()
562 smi); in rtl8366rb_setup_cascaded_irq()
563 if (!smi->irqdomain) { in rtl8366rb_setup_cascaded_irq()
564 dev_err(smi->dev, "failed to create IRQ domain\n"); in rtl8366rb_setup_cascaded_irq()
568 for (i = 0; i < smi->num_ports; i++) in rtl8366rb_setup_cascaded_irq()
569 irq_set_parent(irq_create_mapping(smi->irqdomain, i), irq); in rtl8366rb_setup_cascaded_irq()
576 static int rtl8366rb_set_addr(struct realtek_smi *smi) in rtl8366rb_set_addr() argument
584 dev_info(smi->dev, "set MAC: %02X:%02X:%02X:%02X:%02X:%02X\n", in rtl8366rb_set_addr()
587 ret = regmap_write(smi->map, RTL8366RB_SMAR0, val); in rtl8366rb_set_addr()
591 ret = regmap_write(smi->map, RTL8366RB_SMAR1, val); in rtl8366rb_set_addr()
595 ret = regmap_write(smi->map, RTL8366RB_SMAR2, val); in rtl8366rb_set_addr()
727 int jam_size, struct realtek_smi *smi, in rtl8366rb_jam_table() argument
736 ret = regmap_read(smi->map, in rtl8366rb_jam_table()
742 ret = regmap_write(smi->map, in rtl8366rb_jam_table()
750 dev_dbg(smi->dev, "jam %04x into register %04x\n", in rtl8366rb_jam_table()
753 ret = regmap_write(smi->map, in rtl8366rb_jam_table()
764 struct realtek_smi *smi = ds->priv; in rtl8366rb_setup() local
774 rb = smi->chip_data; in rtl8366rb_setup()
776 ret = regmap_read(smi->map, RTL8366RB_CHIP_ID_REG, &chip_id); in rtl8366rb_setup()
778 dev_err(smi->dev, "unable to read chip id\n"); in rtl8366rb_setup()
786 dev_err(smi->dev, "unknown chip id (%04x)\n", chip_id); in rtl8366rb_setup()
790 ret = regmap_read(smi->map, RTL8366RB_CHIP_VERSION_CTRL_REG, in rtl8366rb_setup()
793 dev_err(smi->dev, "unable to read chip version\n"); in rtl8366rb_setup()
797 dev_info(smi->dev, "RTL%04x ver %u chip found\n", in rtl8366rb_setup()
834 ret = rtl8366rb_jam_table(jam_table, jam_size, smi, true); in rtl8366rb_setup()
840 ARRAY_SIZE(rtl8366rb_green_jam), smi, false); in rtl8366rb_setup()
844 ret = regmap_write(smi->map, in rtl8366rb_setup()
851 ret = regmap_write(smi->map, 0x0c, 0x240); in rtl8366rb_setup()
854 ret = regmap_write(smi->map, 0x0d, 0x240); in rtl8366rb_setup()
859 ret = rtl8366rb_set_addr(smi); in rtl8366rb_setup()
868 ret = regmap_update_bits(smi->map, RTL8368RB_CPU_CTRL_REG, in rtl8366rb_setup()
870 BIT(smi->cpu_port)); in rtl8366rb_setup()
875 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, in rtl8366rb_setup()
876 BIT(smi->cpu_port), in rtl8366rb_setup()
882 ret = regmap_update_bits(smi->map, RTL8366RB_SGCR, in rtl8366rb_setup()
892 ret = regmap_write(smi->map, RTL8366RB_SSCR0, 0); in rtl8366rb_setup()
897 ret = regmap_write(smi->map, RTL8366RB_SSCR1, 0); in rtl8366rb_setup()
908 ret = regmap_update_bits(smi->map, RTL8366RB_PMC0, in rtl8366rb_setup()
917 ret = regmap_write(smi->map, RTL8366RB_VLAN_INGRESS_CTRL2_REG, in rtl8366rb_setup()
923 ret = regmap_update_bits(smi->map, RTL8366RB_SSCR2, in rtl8366rb_setup()
929 ret = regmap_update_bits(smi->map, RTL8366RB_LED_BLINKRATE_REG, in rtl8366rb_setup()
940 if (smi->leds_disabled) { in rtl8366rb_setup()
942 regmap_update_bits(smi->map, in rtl8366rb_setup()
945 regmap_update_bits(smi->map, in rtl8366rb_setup()
948 regmap_update_bits(smi->map, in rtl8366rb_setup()
958 ret = regmap_update_bits(smi->map, in rtl8366rb_setup()
966 ret = rtl8366_init_vlan(smi); in rtl8366rb_setup()
970 ret = rtl8366rb_setup_cascaded_irq(smi); in rtl8366rb_setup()
972 dev_info(smi->dev, "no interrupt support\n"); in rtl8366rb_setup()
974 ret = realtek_smi_setup_mdio(smi); in rtl8366rb_setup()
976 dev_info(smi->dev, "could not set up MDIO bus\n"); in rtl8366rb_setup()
998 struct realtek_smi *smi = ds->priv; in rtl8366rb_mac_link_up() local
1001 if (port != smi->cpu_port) in rtl8366rb_mac_link_up()
1004 dev_dbg(smi->dev, "MAC link up on CPU port (%d)\n", port); in rtl8366rb_mac_link_up()
1007 ret = regmap_update_bits(smi->map, RTL8366RB_MAC_FORCE_CTRL_REG, in rtl8366rb_mac_link_up()
1010 dev_err(smi->dev, "failed to force 1Gbit on CPU port\n"); in rtl8366rb_mac_link_up()
1014 ret = regmap_update_bits(smi->map, RTL8366RB_PAACR2, in rtl8366rb_mac_link_up()
1018 dev_err(smi->dev, "failed to set PAACR on CPU port\n"); in rtl8366rb_mac_link_up()
1023 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, BIT(port), in rtl8366rb_mac_link_up()
1026 dev_err(smi->dev, "failed to enable the CPU port\n"); in rtl8366rb_mac_link_up()
1035 struct realtek_smi *smi = ds->priv; in rtl8366rb_mac_link_down() local
1038 if (port != smi->cpu_port) in rtl8366rb_mac_link_down()
1041 dev_dbg(smi->dev, "MAC link down on CPU port (%d)\n", port); in rtl8366rb_mac_link_down()
1044 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, BIT(port), in rtl8366rb_mac_link_down()
1047 dev_err(smi->dev, "failed to disable the CPU port\n"); in rtl8366rb_mac_link_down()
1052 static void rb8366rb_set_port_led(struct realtek_smi *smi, in rb8366rb_set_port_led() argument
1058 if (smi->leds_disabled) in rb8366rb_set_port_led()
1063 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1068 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1074 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1079 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1085 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1091 dev_err(smi->dev, "no LED for port %d\n", port); in rb8366rb_set_port_led()
1095 dev_err(smi->dev, "error updating LED on port %d\n", port); in rb8366rb_set_port_led()
1102 struct realtek_smi *smi = ds->priv; in rtl8366rb_port_enable() local
1105 dev_dbg(smi->dev, "enable port %d\n", port); in rtl8366rb_port_enable()
1106 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, BIT(port), in rtl8366rb_port_enable()
1111 rb8366rb_set_port_led(smi, port, true); in rtl8366rb_port_enable()
1118 struct realtek_smi *smi = ds->priv; in rtl8366rb_port_disable() local
1121 dev_dbg(smi->dev, "disable port %d\n", port); in rtl8366rb_port_disable()
1122 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, BIT(port), in rtl8366rb_port_disable()
1127 rb8366rb_set_port_led(smi, port, false); in rtl8366rb_port_disable()
1132 struct realtek_smi *smi = ds->priv; in rtl8366rb_change_mtu() local
1139 rb = smi->chip_data; in rtl8366rb_change_mtu()
1167 return regmap_update_bits(smi->map, RTL8366RB_SGCR, in rtl8366rb_change_mtu()
1180 static int rtl8366rb_get_vlan_4k(struct realtek_smi *smi, u32 vid, in rtl8366rb_get_vlan_4k() argument
1193 ret = regmap_write(smi->map, RTL8366RB_VLAN_TABLE_WRITE_BASE, in rtl8366rb_get_vlan_4k()
1199 ret = regmap_write(smi->map, RTL8366RB_TABLE_ACCESS_CTRL_REG, in rtl8366rb_get_vlan_4k()
1205 ret = regmap_read(smi->map, in rtl8366rb_get_vlan_4k()
1221 static int rtl8366rb_set_vlan_4k(struct realtek_smi *smi, in rtl8366rb_set_vlan_4k() argument
1241 ret = regmap_write(smi->map, in rtl8366rb_set_vlan_4k()
1249 ret = regmap_write(smi->map, RTL8366RB_TABLE_ACCESS_CTRL_REG, in rtl8366rb_set_vlan_4k()
1255 static int rtl8366rb_get_vlan_mc(struct realtek_smi *smi, u32 index, in rtl8366rb_get_vlan_mc() argument
1268 ret = regmap_read(smi->map, in rtl8366rb_get_vlan_mc()
1286 static int rtl8366rb_set_vlan_mc(struct realtek_smi *smi, u32 index, in rtl8366rb_set_vlan_mc() argument
1310 ret = regmap_write(smi->map, in rtl8366rb_set_vlan_mc()
1320 static int rtl8366rb_get_mc_index(struct realtek_smi *smi, int port, int *val) in rtl8366rb_get_mc_index() argument
1325 if (port >= smi->num_ports) in rtl8366rb_get_mc_index()
1328 ret = regmap_read(smi->map, RTL8366RB_PORT_VLAN_CTRL_REG(port), in rtl8366rb_get_mc_index()
1339 static int rtl8366rb_set_mc_index(struct realtek_smi *smi, int port, int index) in rtl8366rb_set_mc_index() argument
1341 if (port >= smi->num_ports || index >= RTL8366RB_NUM_VLANS) in rtl8366rb_set_mc_index()
1344 return regmap_update_bits(smi->map, RTL8366RB_PORT_VLAN_CTRL_REG(port), in rtl8366rb_set_mc_index()
1351 static bool rtl8366rb_is_vlan_valid(struct realtek_smi *smi, unsigned int vlan) in rtl8366rb_is_vlan_valid() argument
1355 if (smi->vlan4k_enabled) in rtl8366rb_is_vlan_valid()
1364 static int rtl8366rb_enable_vlan(struct realtek_smi *smi, bool enable) in rtl8366rb_enable_vlan() argument
1366 dev_dbg(smi->dev, "%s VLAN\n", enable ? "enable" : "disable"); in rtl8366rb_enable_vlan()
1367 return regmap_update_bits(smi->map, in rtl8366rb_enable_vlan()
1372 static int rtl8366rb_enable_vlan4k(struct realtek_smi *smi, bool enable) in rtl8366rb_enable_vlan4k() argument
1374 dev_dbg(smi->dev, "%s VLAN 4k\n", enable ? "enable" : "disable"); in rtl8366rb_enable_vlan4k()
1375 return regmap_update_bits(smi->map, RTL8366RB_SGCR, in rtl8366rb_enable_vlan4k()
1380 static int rtl8366rb_phy_read(struct realtek_smi *smi, int phy, int regnum) in rtl8366rb_phy_read() argument
1389 ret = regmap_write(smi->map, RTL8366RB_PHY_ACCESS_CTRL_REG, in rtl8366rb_phy_read()
1396 ret = regmap_write(smi->map, reg, 0); in rtl8366rb_phy_read()
1398 dev_err(smi->dev, in rtl8366rb_phy_read()
1404 ret = regmap_read(smi->map, RTL8366RB_PHY_ACCESS_DATA_REG, &val); in rtl8366rb_phy_read()
1408 dev_dbg(smi->dev, "read PHY%d register 0x%04x @ %08x, val <- %04x\n", in rtl8366rb_phy_read()
1414 static int rtl8366rb_phy_write(struct realtek_smi *smi, int phy, int regnum, in rtl8366rb_phy_write() argument
1423 ret = regmap_write(smi->map, RTL8366RB_PHY_ACCESS_CTRL_REG, in rtl8366rb_phy_write()
1430 dev_dbg(smi->dev, "write PHY%d register 0x%04x @ %04x, val -> %04x\n", in rtl8366rb_phy_write()
1433 ret = regmap_write(smi->map, reg, val); in rtl8366rb_phy_write()
1440 static int rtl8366rb_reset_chip(struct realtek_smi *smi) in rtl8366rb_reset_chip() argument
1446 realtek_smi_write_reg_noack(smi, RTL8366RB_RESET_CTRL_REG, in rtl8366rb_reset_chip()
1450 ret = regmap_read(smi->map, RTL8366RB_RESET_CTRL_REG, &val); in rtl8366rb_reset_chip()
1459 dev_err(smi->dev, "timeout waiting for the switch to reset\n"); in rtl8366rb_reset_chip()
1466 static int rtl8366rb_detect(struct realtek_smi *smi) in rtl8366rb_detect() argument
1468 struct device *dev = smi->dev; in rtl8366rb_detect()
1473 ret = regmap_read(smi->map, 0x5c, &val); in rtl8366rb_detect()
1486 smi->cpu_port = RTL8366RB_PORT_NUM_CPU; in rtl8366rb_detect()
1487 smi->num_ports = RTL8366RB_NUM_PORTS; in rtl8366rb_detect()
1488 smi->num_vlan_mc = RTL8366RB_NUM_VLANS; in rtl8366rb_detect()
1489 smi->mib_counters = rtl8366rb_mib_counters; in rtl8366rb_detect()
1490 smi->num_mib_counters = ARRAY_SIZE(rtl8366rb_mib_counters); in rtl8366rb_detect()
1498 ret = rtl8366rb_reset_chip(smi); in rtl8366rb_detect()