Lines Matching refs:mac_cb

58 static void hns_dsaf_acpi_ledctrl_by_port(struct hns_mac_cb *mac_cb, u8 op_type,
75 obj = acpi_evaluate_dsm(ACPI_HANDLE(mac_cb->dev),
78 dev_warn(mac_cb->dev, "ledctrl fail, link:%d port:%d act:%d!\n",
86 static void hns_dsaf_acpi_locate_ledctrl_by_port(struct hns_mac_cb *mac_cb,
102 obj = acpi_evaluate_dsm(ACPI_HANDLE(mac_cb->dev),
105 dev_err(mac_cb->dev, "ledctrl fail, locate:%d port:%d!\n",
113 static void hns_cpld_set_led(struct hns_mac_cb *mac_cb, int link_status,
119 if (!mac_cb) {
123 if (!mac_cb->cpld_ctrl) {
124 dev_err(mac_cb->dev, "mac_id=%d, cpld syscon is null !\n",
125 mac_cb->mac_id);
132 value = mac_cb->cpld_led_value;
140 if (value != mac_cb->cpld_led_value) {
141 dsaf_write_syscon(mac_cb->cpld_ctrl,
142 mac_cb->cpld_ctrl_reg, value);
143 mac_cb->cpld_led_value = value;
146 value = (mac_cb->cpld_led_value) & (0x1 << DSAF_LED_ANCHOR_B);
147 dsaf_write_syscon(mac_cb->cpld_ctrl,
148 mac_cb->cpld_ctrl_reg, value);
149 mac_cb->cpld_led_value = value;
153 static void hns_cpld_set_led_acpi(struct hns_mac_cb *mac_cb, int link_status,
156 if (!mac_cb) {
157 pr_err("cpld_led_set mac_cb is null!\n");
161 hns_dsaf_acpi_ledctrl_by_port(mac_cb, HNS_OP_LED_SET_FUNC,
162 link_status, mac_cb->mac_id, data);
165 static void cpld_led_reset(struct hns_mac_cb *mac_cb)
167 if (!mac_cb || !mac_cb->cpld_ctrl)
170 dsaf_write_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg,
172 mac_cb->cpld_led_value = CPLD_LED_DEFAULT_VALUE;
175 static void cpld_led_reset_acpi(struct hns_mac_cb *mac_cb)
177 if (!mac_cb) {
178 pr_err("cpld_led_reset mac_cb is null!\n");
182 if (mac_cb->media_type != HNAE_MEDIA_TYPE_FIBER)
185 hns_dsaf_acpi_ledctrl_by_port(mac_cb, HNS_OP_LED_SET_FUNC,
186 0, mac_cb->mac_id, 0);
189 static int cpld_set_led_id(struct hns_mac_cb *mac_cb,
195 if (!mac_cb->cpld_ctrl)
200 ret = dsaf_read_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg,
206 dsaf_write_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg,
208 mac_cb->cpld_led_value = val;
211 dsaf_set_bit(mac_cb->cpld_led_value, DSAF_LED_ANCHOR_B,
213 dsaf_write_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg,
214 mac_cb->cpld_led_value);
217 dev_err(mac_cb->dev, "invalid led state: %d!", status);
224 static int cpld_set_led_id_acpi(struct hns_mac_cb *mac_cb,
229 hns_dsaf_acpi_locate_ledctrl_by_port(mac_cb,
232 mac_cb->mac_id);
235 hns_dsaf_acpi_locate_ledctrl_by_port(mac_cb,
238 mac_cb->mac_id);
241 dev_err(mac_cb->dev, "invalid led state: %d!", status);
312 reg_val |= 0x2082082 << dsaf_dev->mac_cb[port]->port_rst_off;
408 port_rst_off = dsaf_dev->mac_cb[port]->port_rst_off;
463 reg_val |= RESET_REQ_OR_DREQ << dsaf_dev->mac_cb[port]->port_rst_off;
509 * @mac_cb: mac control block
512 static phy_interface_t hns_mac_get_phy_if(struct hns_mac_cb *mac_cb)
516 bool is_ver1 = AE_IS_VER1(mac_cb->dsaf_dev->dsaf_ver);
517 int mac_id = mac_cb->mac_id;
521 if (HNS_DSAF_IS_DEBUG(mac_cb->dsaf_dev))
529 if (!HNS_DSAF_IS_DEBUG(mac_cb->dsaf_dev) && mac_id <= 3)
535 mode = dsaf_read_sub(mac_cb->dsaf_dev, reg);
536 if (dsaf_get_bit(mode, mac_cb->port_mode_off))
544 static phy_interface_t hns_mac_get_phy_if_acpi(struct hns_mac_cb *mac_cb)
551 obj_args.integer.value = mac_cb->mac_id;
557 obj = acpi_evaluate_dsm_typed(ACPI_HANDLE(mac_cb->dev),
567 dev_dbg(mac_cb->dev, "mac_id=%d, phy_if=%d\n", mac_cb->mac_id, phy_if);
574 static int hns_mac_get_sfp_prsnt(struct hns_mac_cb *mac_cb, int *sfp_prsnt)
579 if (!mac_cb->cpld_ctrl)
582 ret = dsaf_read_syscon(mac_cb->cpld_ctrl,
583 mac_cb->cpld_ctrl_reg + MAC_SFP_PORT_OFFSET,
592 static int hns_mac_get_sfp_prsnt_acpi(struct hns_mac_cb *mac_cb, int *sfp_prsnt)
598 obj_args.integer.value = mac_cb->mac_id;
604 obj = acpi_evaluate_dsm_typed(ACPI_HANDLE(mac_cb->dev),
620 * @mac_cb: mac control block
624 static int hns_mac_config_sds_loopback(struct hns_mac_cb *mac_cb, bool en)
637 u64 reg_offset = RX_CSR(lane_id[mac_cb->mac_id], 0);
640 int ret = hns_mac_get_sfp_prsnt(mac_cb, &sfp_prsnt);
642 if (!mac_cb->phy_dev) {
650 if (mac_cb->serdes_ctrl) {
653 if (!AE_IS_VER1(mac_cb->dsaf_dev->dsaf_ver)) {
659 if ((!HNS_DSAF_IS_DEBUG(mac_cb->dsaf_dev)) &&
660 (mac_cb->mac_id <= 3))
661 dsaf_write_syscon(mac_cb->serdes_ctrl,
664 dsaf_write_syscon(mac_cb->serdes_ctrl,
668 ret = dsaf_read_syscon(mac_cb->serdes_ctrl, reg_offset,
674 dsaf_write_syscon(mac_cb->serdes_ctrl, reg_offset, origin);
676 u8 __iomem *base_addr = mac_cb->serdes_vaddr +
677 (mac_cb->mac_id <= 3 ? 0x00280000 : 0x00200000);
685 hns_mac_config_sds_loopback_acpi(struct hns_mac_cb *mac_cb, bool en)
691 obj_args[0].integer.value = mac_cb->mac_id;
699 obj = acpi_evaluate_dsm(ACPI_HANDLE(mac_cb->dsaf_dev->dev),
703 dev_warn(mac_cb->dsaf_dev->dev, "set port%d serdes lp fail!",
704 mac_cb->mac_id);