Lines Matching refs:smi

350 static int rtl8366rb_get_mib_counter(struct realtek_smi *smi,  in rtl8366rb_get_mib_counter()  argument
366 ret = regmap_write(smi->map, addr, 0); /* Write whatever */ in rtl8366rb_get_mib_counter()
371 ret = regmap_read(smi->map, RTL8366RB_MIB_CTRL_REG, &val); in rtl8366rb_get_mib_counter()
384 ret = regmap_read(smi->map, addr + (i - 1), &val); in rtl8366rb_get_mib_counter()
409 struct realtek_smi *smi = irq_data_get_irq_chip_data(d); in rtl8366rb_mask_irq() local
412 ret = regmap_update_bits(smi->map, RTL8366RB_INTERRUPT_MASK_REG, in rtl8366rb_mask_irq()
415 dev_err(smi->dev, "could not mask IRQ\n"); in rtl8366rb_mask_irq()
420 struct realtek_smi *smi = irq_data_get_irq_chip_data(d); in rtl8366rb_unmask_irq() local
423 ret = regmap_update_bits(smi->map, RTL8366RB_INTERRUPT_MASK_REG, in rtl8366rb_unmask_irq()
427 dev_err(smi->dev, "could not unmask IRQ\n"); in rtl8366rb_unmask_irq()
432 struct realtek_smi *smi = data; in rtl8366rb_irq() local
437 ret = regmap_read(smi->map, RTL8366RB_INTERRUPT_STATUS_REG, in rtl8366rb_irq()
440 dev_err(smi->dev, "can't read interrupt status\n"); in rtl8366rb_irq()
456 child_irq = irq_find_mapping(smi->irqdomain, line); in rtl8366rb_irq()
492 static int rtl8366rb_setup_cascaded_irq(struct realtek_smi *smi) in rtl8366rb_setup_cascaded_irq() argument
501 intc = of_get_child_by_name(smi->dev->of_node, "interrupt-controller"); in rtl8366rb_setup_cascaded_irq()
503 dev_err(smi->dev, "missing child interrupt-controller node\n"); in rtl8366rb_setup_cascaded_irq()
509 dev_err(smi->dev, "failed to get parent IRQ\n"); in rtl8366rb_setup_cascaded_irq()
514 ret = regmap_read(smi->map, RTL8366RB_INTERRUPT_STATUS_REG, in rtl8366rb_setup_cascaded_irq()
517 dev_err(smi->dev, "can't read interrupt status\n"); in rtl8366rb_setup_cascaded_irq()
526 dev_info(smi->dev, "active high/rising IRQ\n"); in rtl8366rb_setup_cascaded_irq()
531 dev_info(smi->dev, "active low/falling IRQ\n"); in rtl8366rb_setup_cascaded_irq()
535 ret = regmap_update_bits(smi->map, RTL8366RB_INTERRUPT_CONTROL_REG, in rtl8366rb_setup_cascaded_irq()
539 dev_err(smi->dev, "could not configure IRQ polarity\n"); in rtl8366rb_setup_cascaded_irq()
543 ret = devm_request_threaded_irq(smi->dev, irq, NULL, in rtl8366rb_setup_cascaded_irq()
545 "RTL8366RB", smi); in rtl8366rb_setup_cascaded_irq()
547 dev_err(smi->dev, "unable to request irq: %d\n", ret); in rtl8366rb_setup_cascaded_irq()
550 smi->irqdomain = irq_domain_add_linear(intc, in rtl8366rb_setup_cascaded_irq()
553 smi); in rtl8366rb_setup_cascaded_irq()
554 if (!smi->irqdomain) { in rtl8366rb_setup_cascaded_irq()
555 dev_err(smi->dev, "failed to create IRQ domain\n"); in rtl8366rb_setup_cascaded_irq()
558 for (i = 0; i < smi->num_ports; i++) in rtl8366rb_setup_cascaded_irq()
559 irq_set_parent(irq_create_mapping(smi->irqdomain, i), irq); in rtl8366rb_setup_cascaded_irq()
564 static int rtl8366rb_set_addr(struct realtek_smi *smi) in rtl8366rb_set_addr() argument
572 dev_info(smi->dev, "set MAC: %02X:%02X:%02X:%02X:%02X:%02X\n", in rtl8366rb_set_addr()
575 ret = regmap_write(smi->map, RTL8366RB_SMAR0, val); in rtl8366rb_set_addr()
579 ret = regmap_write(smi->map, RTL8366RB_SMAR1, val); in rtl8366rb_set_addr()
583 ret = regmap_write(smi->map, RTL8366RB_SMAR2, val); in rtl8366rb_set_addr()
709 struct realtek_smi *smi = ds->priv; in rtl8366rb_setup() local
718 ret = regmap_read(smi->map, RTL8366RB_CHIP_ID_REG, &chip_id); in rtl8366rb_setup()
720 dev_err(smi->dev, "unable to read chip id\n"); in rtl8366rb_setup()
728 dev_err(smi->dev, "unknown chip id (%04x)\n", chip_id); in rtl8366rb_setup()
732 ret = regmap_read(smi->map, RTL8366RB_CHIP_VERSION_CTRL_REG, in rtl8366rb_setup()
735 dev_err(smi->dev, "unable to read chip version\n"); in rtl8366rb_setup()
739 dev_info(smi->dev, "RTL%04x ver %u chip found\n", in rtl8366rb_setup()
779 ret = regmap_read(smi->map, in rtl8366rb_setup()
785 ret = regmap_write(smi->map, in rtl8366rb_setup()
792 dev_dbg(smi->dev, "jam %04x into register %04x\n", in rtl8366rb_setup()
795 ret = regmap_write(smi->map, in rtl8366rb_setup()
806 ret = regmap_read(smi->map, RTL8366RB_PHY_ACCESS_BUSY_REG, in rtl8366rb_setup()
811 ret = regmap_write(smi->map, in rtl8366rb_setup()
816 ret = regmap_write(smi->map, in rtl8366rb_setup()
824 ret = regmap_write(smi->map, in rtl8366rb_setup()
831 ret = regmap_write(smi->map, 0x0c, 0x240); in rtl8366rb_setup()
834 ret = regmap_write(smi->map, 0x0d, 0x240); in rtl8366rb_setup()
839 ret = rtl8366rb_set_addr(smi); in rtl8366rb_setup()
850 ret = regmap_update_bits(smi->map, RTL8368RB_CPU_CTRL_REG, in rtl8366rb_setup()
852 RTL8368RB_CPU_INSTAG | BIT(smi->cpu_port)); in rtl8366rb_setup()
857 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, in rtl8366rb_setup()
858 BIT(smi->cpu_port), in rtl8366rb_setup()
864 ret = regmap_update_bits(smi->map, RTL8366RB_SGCR, in rtl8366rb_setup()
871 ret = regmap_write(smi->map, RTL8366RB_SSCR0, 0); in rtl8366rb_setup()
876 ret = regmap_write(smi->map, RTL8366RB_SSCR1, 0); in rtl8366rb_setup()
887 ret = regmap_update_bits(smi->map, RTL8366RB_PMC0, in rtl8366rb_setup()
896 ret = regmap_write(smi->map, RTL8366RB_VLAN_INGRESS_CTRL2_REG, in rtl8366rb_setup()
902 ret = regmap_update_bits(smi->map, RTL8366RB_SSCR2, in rtl8366rb_setup()
908 ret = regmap_update_bits(smi->map, RTL8366RB_LED_BLINKRATE_REG, in rtl8366rb_setup()
919 if (smi->leds_disabled) { in rtl8366rb_setup()
921 regmap_update_bits(smi->map, in rtl8366rb_setup()
924 regmap_update_bits(smi->map, in rtl8366rb_setup()
927 regmap_update_bits(smi->map, in rtl8366rb_setup()
937 ret = regmap_update_bits(smi->map, in rtl8366rb_setup()
945 ret = rtl8366_init_vlan(smi); in rtl8366rb_setup()
949 ret = rtl8366rb_setup_cascaded_irq(smi); in rtl8366rb_setup()
951 dev_info(smi->dev, "no interrupt support\n"); in rtl8366rb_setup()
953 ret = realtek_smi_setup_mdio(smi); in rtl8366rb_setup()
955 dev_info(smi->dev, "could not set up MDIO bus\n"); in rtl8366rb_setup()
985 struct realtek_smi *smi = ds->priv; in rtl8366rb_adjust_link() local
988 if (port != smi->cpu_port) in rtl8366rb_adjust_link()
991 dev_info(smi->dev, "adjust link on CPU port (%d)\n", port); in rtl8366rb_adjust_link()
994 ret = regmap_update_bits(smi->map, RTL8366RB_MAC_FORCE_CTRL_REG, in rtl8366rb_adjust_link()
999 ret = regmap_update_bits(smi->map, RTL8366RB_PAACR2, in rtl8366rb_adjust_link()
1006 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, BIT(port), in rtl8366rb_adjust_link()
1012 static void rb8366rb_set_port_led(struct realtek_smi *smi, in rb8366rb_set_port_led() argument
1018 if (smi->leds_disabled) in rb8366rb_set_port_led()
1023 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1028 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1034 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1039 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1045 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1051 dev_err(smi->dev, "no LED for port %d\n", port); in rb8366rb_set_port_led()
1055 dev_err(smi->dev, "error updating LED on port %d\n", port); in rb8366rb_set_port_led()
1062 struct realtek_smi *smi = ds->priv; in rtl8366rb_port_enable() local
1065 dev_dbg(smi->dev, "enable port %d\n", port); in rtl8366rb_port_enable()
1066 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, BIT(port), in rtl8366rb_port_enable()
1071 rb8366rb_set_port_led(smi, port, true); in rtl8366rb_port_enable()
1079 struct realtek_smi *smi = ds->priv; in rtl8366rb_port_disable() local
1082 dev_dbg(smi->dev, "disable port %d\n", port); in rtl8366rb_port_disable()
1083 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, BIT(port), in rtl8366rb_port_disable()
1088 rb8366rb_set_port_led(smi, port, false); in rtl8366rb_port_disable()
1091 static int rtl8366rb_get_vlan_4k(struct realtek_smi *smi, u32 vid, in rtl8366rb_get_vlan_4k() argument
1104 ret = regmap_write(smi->map, RTL8366RB_VLAN_TABLE_WRITE_BASE, in rtl8366rb_get_vlan_4k()
1110 ret = regmap_write(smi->map, RTL8366RB_TABLE_ACCESS_CTRL_REG, in rtl8366rb_get_vlan_4k()
1116 ret = regmap_read(smi->map, in rtl8366rb_get_vlan_4k()
1132 static int rtl8366rb_set_vlan_4k(struct realtek_smi *smi, in rtl8366rb_set_vlan_4k() argument
1152 ret = regmap_write(smi->map, in rtl8366rb_set_vlan_4k()
1160 ret = regmap_write(smi->map, RTL8366RB_TABLE_ACCESS_CTRL_REG, in rtl8366rb_set_vlan_4k()
1166 static int rtl8366rb_get_vlan_mc(struct realtek_smi *smi, u32 index, in rtl8366rb_get_vlan_mc() argument
1179 ret = regmap_read(smi->map, in rtl8366rb_get_vlan_mc()
1197 static int rtl8366rb_set_vlan_mc(struct realtek_smi *smi, u32 index, in rtl8366rb_set_vlan_mc() argument
1221 ret = regmap_write(smi->map, in rtl8366rb_set_vlan_mc()
1231 static int rtl8366rb_get_mc_index(struct realtek_smi *smi, int port, int *val) in rtl8366rb_get_mc_index() argument
1236 if (port >= smi->num_ports) in rtl8366rb_get_mc_index()
1239 ret = regmap_read(smi->map, RTL8366RB_PORT_VLAN_CTRL_REG(port), in rtl8366rb_get_mc_index()
1250 static int rtl8366rb_set_mc_index(struct realtek_smi *smi, int port, int index) in rtl8366rb_set_mc_index() argument
1252 if (port >= smi->num_ports || index >= RTL8366RB_NUM_VLANS) in rtl8366rb_set_mc_index()
1255 return regmap_update_bits(smi->map, RTL8366RB_PORT_VLAN_CTRL_REG(port), in rtl8366rb_set_mc_index()
1262 static bool rtl8366rb_is_vlan_valid(struct realtek_smi *smi, unsigned int vlan) in rtl8366rb_is_vlan_valid() argument
1266 if (smi->vlan4k_enabled) in rtl8366rb_is_vlan_valid()
1275 static int rtl8366rb_enable_vlan(struct realtek_smi *smi, bool enable) in rtl8366rb_enable_vlan() argument
1277 dev_dbg(smi->dev, "%s VLAN\n", enable ? "enable" : "disable"); in rtl8366rb_enable_vlan()
1278 return regmap_update_bits(smi->map, in rtl8366rb_enable_vlan()
1283 static int rtl8366rb_enable_vlan4k(struct realtek_smi *smi, bool enable) in rtl8366rb_enable_vlan4k() argument
1285 dev_dbg(smi->dev, "%s VLAN 4k\n", enable ? "enable" : "disable"); in rtl8366rb_enable_vlan4k()
1286 return regmap_update_bits(smi->map, RTL8366RB_SGCR, in rtl8366rb_enable_vlan4k()
1291 static int rtl8366rb_phy_read(struct realtek_smi *smi, int phy, int regnum) in rtl8366rb_phy_read() argument
1300 ret = regmap_write(smi->map, RTL8366RB_PHY_ACCESS_CTRL_REG, in rtl8366rb_phy_read()
1307 ret = regmap_write(smi->map, reg, 0); in rtl8366rb_phy_read()
1309 dev_err(smi->dev, in rtl8366rb_phy_read()
1315 ret = regmap_read(smi->map, RTL8366RB_PHY_ACCESS_DATA_REG, &val); in rtl8366rb_phy_read()
1319 dev_dbg(smi->dev, "read PHY%d register 0x%04x @ %08x, val <- %04x\n", in rtl8366rb_phy_read()
1325 static int rtl8366rb_phy_write(struct realtek_smi *smi, int phy, int regnum, in rtl8366rb_phy_write() argument
1334 ret = regmap_write(smi->map, RTL8366RB_PHY_ACCESS_CTRL_REG, in rtl8366rb_phy_write()
1341 dev_dbg(smi->dev, "write PHY%d register 0x%04x @ %04x, val -> %04x\n", in rtl8366rb_phy_write()
1344 ret = regmap_write(smi->map, reg, val); in rtl8366rb_phy_write()
1351 static int rtl8366rb_reset_chip(struct realtek_smi *smi) in rtl8366rb_reset_chip() argument
1357 realtek_smi_write_reg_noack(smi, RTL8366RB_RESET_CTRL_REG, in rtl8366rb_reset_chip()
1361 ret = regmap_read(smi->map, RTL8366RB_RESET_CTRL_REG, &val); in rtl8366rb_reset_chip()
1370 dev_err(smi->dev, "timeout waiting for the switch to reset\n"); in rtl8366rb_reset_chip()
1377 static int rtl8366rb_detect(struct realtek_smi *smi) in rtl8366rb_detect() argument
1379 struct device *dev = smi->dev; in rtl8366rb_detect()
1384 ret = regmap_read(smi->map, 0x5c, &val); in rtl8366rb_detect()
1397 smi->cpu_port = RTL8366RB_PORT_NUM_CPU; in rtl8366rb_detect()
1398 smi->num_ports = RTL8366RB_NUM_PORTS; in rtl8366rb_detect()
1399 smi->num_vlan_mc = RTL8366RB_NUM_VLANS; in rtl8366rb_detect()
1400 smi->mib_counters = rtl8366rb_mib_counters; in rtl8366rb_detect()
1401 smi->num_mib_counters = ARRAY_SIZE(rtl8366rb_mib_counters); in rtl8366rb_detect()
1409 ret = rtl8366rb_reset_chip(smi); in rtl8366rb_detect()