• Home
  • Raw
  • Download

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()
515 ret = regmap_read(smi->map, RTL8366RB_INTERRUPT_STATUS_REG, in rtl8366rb_setup_cascaded_irq()
518 dev_err(smi->dev, "can't read interrupt status\n"); in rtl8366rb_setup_cascaded_irq()
527 dev_info(smi->dev, "active high/rising IRQ\n"); in rtl8366rb_setup_cascaded_irq()
532 dev_info(smi->dev, "active low/falling IRQ\n"); in rtl8366rb_setup_cascaded_irq()
536 ret = regmap_update_bits(smi->map, RTL8366RB_INTERRUPT_CONTROL_REG, in rtl8366rb_setup_cascaded_irq()
540 dev_err(smi->dev, "could not configure IRQ polarity\n"); in rtl8366rb_setup_cascaded_irq()
544 ret = devm_request_threaded_irq(smi->dev, irq, NULL, in rtl8366rb_setup_cascaded_irq()
546 "RTL8366RB", smi); in rtl8366rb_setup_cascaded_irq()
548 dev_err(smi->dev, "unable to request irq: %d\n", ret); in rtl8366rb_setup_cascaded_irq()
551 smi->irqdomain = irq_domain_add_linear(intc, in rtl8366rb_setup_cascaded_irq()
554 smi); in rtl8366rb_setup_cascaded_irq()
555 if (!smi->irqdomain) { in rtl8366rb_setup_cascaded_irq()
556 dev_err(smi->dev, "failed to create IRQ domain\n"); in rtl8366rb_setup_cascaded_irq()
560 for (i = 0; i < smi->num_ports; i++) in rtl8366rb_setup_cascaded_irq()
561 irq_set_parent(irq_create_mapping(smi->irqdomain, i), irq); in rtl8366rb_setup_cascaded_irq()
568 static int rtl8366rb_set_addr(struct realtek_smi *smi) in rtl8366rb_set_addr() argument
576 dev_info(smi->dev, "set MAC: %02X:%02X:%02X:%02X:%02X:%02X\n", in rtl8366rb_set_addr()
579 ret = regmap_write(smi->map, RTL8366RB_SMAR0, val); in rtl8366rb_set_addr()
583 ret = regmap_write(smi->map, RTL8366RB_SMAR1, val); in rtl8366rb_set_addr()
587 ret = regmap_write(smi->map, RTL8366RB_SMAR2, val); in rtl8366rb_set_addr()
713 struct realtek_smi *smi = ds->priv; in rtl8366rb_setup() local
722 ret = regmap_read(smi->map, RTL8366RB_CHIP_ID_REG, &chip_id); in rtl8366rb_setup()
724 dev_err(smi->dev, "unable to read chip id\n"); in rtl8366rb_setup()
732 dev_err(smi->dev, "unknown chip id (%04x)\n", chip_id); in rtl8366rb_setup()
736 ret = regmap_read(smi->map, RTL8366RB_CHIP_VERSION_CTRL_REG, in rtl8366rb_setup()
739 dev_err(smi->dev, "unable to read chip version\n"); in rtl8366rb_setup()
743 dev_info(smi->dev, "RTL%04x ver %u chip found\n", in rtl8366rb_setup()
783 ret = regmap_read(smi->map, in rtl8366rb_setup()
789 ret = regmap_write(smi->map, in rtl8366rb_setup()
796 dev_dbg(smi->dev, "jam %04x into register %04x\n", in rtl8366rb_setup()
799 ret = regmap_write(smi->map, in rtl8366rb_setup()
810 ret = regmap_read(smi->map, RTL8366RB_PHY_ACCESS_BUSY_REG, in rtl8366rb_setup()
815 ret = regmap_write(smi->map, in rtl8366rb_setup()
820 ret = regmap_write(smi->map, in rtl8366rb_setup()
828 ret = regmap_write(smi->map, in rtl8366rb_setup()
835 ret = regmap_write(smi->map, 0x0c, 0x240); in rtl8366rb_setup()
838 ret = regmap_write(smi->map, 0x0d, 0x240); in rtl8366rb_setup()
843 ret = rtl8366rb_set_addr(smi); in rtl8366rb_setup()
854 ret = regmap_update_bits(smi->map, RTL8368RB_CPU_CTRL_REG, in rtl8366rb_setup()
856 RTL8368RB_CPU_INSTAG | BIT(smi->cpu_port)); in rtl8366rb_setup()
861 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, in rtl8366rb_setup()
862 BIT(smi->cpu_port), in rtl8366rb_setup()
868 ret = regmap_update_bits(smi->map, RTL8366RB_SGCR, in rtl8366rb_setup()
875 ret = regmap_write(smi->map, RTL8366RB_SSCR0, 0); in rtl8366rb_setup()
880 ret = regmap_write(smi->map, RTL8366RB_SSCR1, 0); in rtl8366rb_setup()
891 ret = regmap_update_bits(smi->map, RTL8366RB_PMC0, in rtl8366rb_setup()
900 ret = regmap_write(smi->map, RTL8366RB_VLAN_INGRESS_CTRL2_REG, in rtl8366rb_setup()
906 ret = regmap_update_bits(smi->map, RTL8366RB_SSCR2, in rtl8366rb_setup()
912 ret = regmap_update_bits(smi->map, RTL8366RB_LED_BLINKRATE_REG, in rtl8366rb_setup()
923 if (smi->leds_disabled) { in rtl8366rb_setup()
925 regmap_update_bits(smi->map, in rtl8366rb_setup()
928 regmap_update_bits(smi->map, in rtl8366rb_setup()
931 regmap_update_bits(smi->map, in rtl8366rb_setup()
941 ret = regmap_update_bits(smi->map, in rtl8366rb_setup()
949 ret = rtl8366_init_vlan(smi); in rtl8366rb_setup()
953 ret = rtl8366rb_setup_cascaded_irq(smi); in rtl8366rb_setup()
955 dev_info(smi->dev, "no interrupt support\n"); in rtl8366rb_setup()
957 ret = realtek_smi_setup_mdio(smi); in rtl8366rb_setup()
959 dev_info(smi->dev, "could not set up MDIO bus\n"); in rtl8366rb_setup()
989 struct realtek_smi *smi = ds->priv; in rtl8366rb_adjust_link() local
992 if (port != smi->cpu_port) in rtl8366rb_adjust_link()
995 dev_info(smi->dev, "adjust link on CPU port (%d)\n", port); in rtl8366rb_adjust_link()
998 ret = regmap_update_bits(smi->map, RTL8366RB_MAC_FORCE_CTRL_REG, in rtl8366rb_adjust_link()
1003 ret = regmap_update_bits(smi->map, RTL8366RB_PAACR2, in rtl8366rb_adjust_link()
1010 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, BIT(port), in rtl8366rb_adjust_link()
1016 static void rb8366rb_set_port_led(struct realtek_smi *smi, in rb8366rb_set_port_led() argument
1022 if (smi->leds_disabled) in rb8366rb_set_port_led()
1027 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1032 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1038 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1043 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1049 ret = regmap_update_bits(smi->map, in rb8366rb_set_port_led()
1055 dev_err(smi->dev, "no LED for port %d\n", port); in rb8366rb_set_port_led()
1059 dev_err(smi->dev, "error updating LED on port %d\n", port); in rb8366rb_set_port_led()
1066 struct realtek_smi *smi = ds->priv; in rtl8366rb_port_enable() local
1069 dev_dbg(smi->dev, "enable port %d\n", port); in rtl8366rb_port_enable()
1070 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, BIT(port), in rtl8366rb_port_enable()
1075 rb8366rb_set_port_led(smi, port, true); in rtl8366rb_port_enable()
1082 struct realtek_smi *smi = ds->priv; in rtl8366rb_port_disable() local
1085 dev_dbg(smi->dev, "disable port %d\n", port); in rtl8366rb_port_disable()
1086 ret = regmap_update_bits(smi->map, RTL8366RB_PECR, BIT(port), in rtl8366rb_port_disable()
1091 rb8366rb_set_port_led(smi, port, false); in rtl8366rb_port_disable()
1094 static int rtl8366rb_get_vlan_4k(struct realtek_smi *smi, u32 vid, in rtl8366rb_get_vlan_4k() argument
1107 ret = regmap_write(smi->map, RTL8366RB_VLAN_TABLE_WRITE_BASE, in rtl8366rb_get_vlan_4k()
1113 ret = regmap_write(smi->map, RTL8366RB_TABLE_ACCESS_CTRL_REG, in rtl8366rb_get_vlan_4k()
1119 ret = regmap_read(smi->map, in rtl8366rb_get_vlan_4k()
1135 static int rtl8366rb_set_vlan_4k(struct realtek_smi *smi, in rtl8366rb_set_vlan_4k() argument
1155 ret = regmap_write(smi->map, in rtl8366rb_set_vlan_4k()
1163 ret = regmap_write(smi->map, RTL8366RB_TABLE_ACCESS_CTRL_REG, in rtl8366rb_set_vlan_4k()
1169 static int rtl8366rb_get_vlan_mc(struct realtek_smi *smi, u32 index, in rtl8366rb_get_vlan_mc() argument
1182 ret = regmap_read(smi->map, in rtl8366rb_get_vlan_mc()
1200 static int rtl8366rb_set_vlan_mc(struct realtek_smi *smi, u32 index, in rtl8366rb_set_vlan_mc() argument
1224 ret = regmap_write(smi->map, in rtl8366rb_set_vlan_mc()
1234 static int rtl8366rb_get_mc_index(struct realtek_smi *smi, int port, int *val) in rtl8366rb_get_mc_index() argument
1239 if (port >= smi->num_ports) in rtl8366rb_get_mc_index()
1242 ret = regmap_read(smi->map, RTL8366RB_PORT_VLAN_CTRL_REG(port), in rtl8366rb_get_mc_index()
1253 static int rtl8366rb_set_mc_index(struct realtek_smi *smi, int port, int index) in rtl8366rb_set_mc_index() argument
1255 if (port >= smi->num_ports || index >= RTL8366RB_NUM_VLANS) in rtl8366rb_set_mc_index()
1258 return regmap_update_bits(smi->map, RTL8366RB_PORT_VLAN_CTRL_REG(port), in rtl8366rb_set_mc_index()
1265 static bool rtl8366rb_is_vlan_valid(struct realtek_smi *smi, unsigned int vlan) in rtl8366rb_is_vlan_valid() argument
1269 if (smi->vlan4k_enabled) in rtl8366rb_is_vlan_valid()
1278 static int rtl8366rb_enable_vlan(struct realtek_smi *smi, bool enable) in rtl8366rb_enable_vlan() argument
1280 dev_dbg(smi->dev, "%s VLAN\n", enable ? "enable" : "disable"); in rtl8366rb_enable_vlan()
1281 return regmap_update_bits(smi->map, in rtl8366rb_enable_vlan()
1286 static int rtl8366rb_enable_vlan4k(struct realtek_smi *smi, bool enable) in rtl8366rb_enable_vlan4k() argument
1288 dev_dbg(smi->dev, "%s VLAN 4k\n", enable ? "enable" : "disable"); in rtl8366rb_enable_vlan4k()
1289 return regmap_update_bits(smi->map, RTL8366RB_SGCR, in rtl8366rb_enable_vlan4k()
1294 static int rtl8366rb_phy_read(struct realtek_smi *smi, int phy, int regnum) in rtl8366rb_phy_read() argument
1303 ret = regmap_write(smi->map, RTL8366RB_PHY_ACCESS_CTRL_REG, in rtl8366rb_phy_read()
1310 ret = regmap_write(smi->map, reg, 0); in rtl8366rb_phy_read()
1312 dev_err(smi->dev, in rtl8366rb_phy_read()
1318 ret = regmap_read(smi->map, RTL8366RB_PHY_ACCESS_DATA_REG, &val); in rtl8366rb_phy_read()
1322 dev_dbg(smi->dev, "read PHY%d register 0x%04x @ %08x, val <- %04x\n", in rtl8366rb_phy_read()
1328 static int rtl8366rb_phy_write(struct realtek_smi *smi, int phy, int regnum, in rtl8366rb_phy_write() argument
1337 ret = regmap_write(smi->map, RTL8366RB_PHY_ACCESS_CTRL_REG, in rtl8366rb_phy_write()
1344 dev_dbg(smi->dev, "write PHY%d register 0x%04x @ %04x, val -> %04x\n", in rtl8366rb_phy_write()
1347 ret = regmap_write(smi->map, reg, val); in rtl8366rb_phy_write()
1354 static int rtl8366rb_reset_chip(struct realtek_smi *smi) in rtl8366rb_reset_chip() argument
1360 realtek_smi_write_reg_noack(smi, RTL8366RB_RESET_CTRL_REG, in rtl8366rb_reset_chip()
1364 ret = regmap_read(smi->map, RTL8366RB_RESET_CTRL_REG, &val); in rtl8366rb_reset_chip()
1373 dev_err(smi->dev, "timeout waiting for the switch to reset\n"); in rtl8366rb_reset_chip()
1380 static int rtl8366rb_detect(struct realtek_smi *smi) in rtl8366rb_detect() argument
1382 struct device *dev = smi->dev; in rtl8366rb_detect()
1387 ret = regmap_read(smi->map, 0x5c, &val); in rtl8366rb_detect()
1400 smi->cpu_port = RTL8366RB_PORT_NUM_CPU; in rtl8366rb_detect()
1401 smi->num_ports = RTL8366RB_NUM_PORTS; in rtl8366rb_detect()
1402 smi->num_vlan_mc = RTL8366RB_NUM_VLANS; in rtl8366rb_detect()
1403 smi->mib_counters = rtl8366rb_mib_counters; in rtl8366rb_detect()
1404 smi->num_mib_counters = ARRAY_SIZE(rtl8366rb_mib_counters); in rtl8366rb_detect()
1412 ret = rtl8366rb_reset_chip(smi); in rtl8366rb_detect()