Commit d8a8371e authored by Daode Huang's avatar Daode Huang Committed by David S. Miller

net: hns: bug fix about led control logic when link down

The default driver sets anchor led bit to 0 when link down,
actually, the anchor bit should be set to 1, so fixes it when
link status is down.
Secondly, change the return value of cpld_set_led_id to 0, which
means leave the cpld to control led blink frequece other than the
driver itself.
Signed-off-by: default avatarDaode Huang <huangdaode@hisilicon.com>
Signed-off-by: default avatarYisen Zhuang <Yisen.Zhuang@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 454784d8
...@@ -86,9 +86,10 @@ static void hns_cpld_set_led(struct hns_mac_cb *mac_cb, int link_status, ...@@ -86,9 +86,10 @@ static void hns_cpld_set_led(struct hns_mac_cb *mac_cb, int link_status,
mac_cb->cpld_led_value = value; mac_cb->cpld_led_value = value;
} }
} else { } else {
dsaf_write_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg, value = (mac_cb->cpld_led_value) & (0x1 << DSAF_LED_ANCHOR_B);
CPLD_LED_DEFAULT_VALUE); dsaf_write_syscon(mac_cb->cpld_ctrl,
mac_cb->cpld_led_value = CPLD_LED_DEFAULT_VALUE; mac_cb->cpld_ctrl_reg, value);
mac_cb->cpld_led_value = value;
} }
} }
...@@ -114,7 +115,7 @@ static int cpld_set_led_id(struct hns_mac_cb *mac_cb, ...@@ -114,7 +115,7 @@ static int cpld_set_led_id(struct hns_mac_cb *mac_cb,
CPLD_LED_ON_VALUE); CPLD_LED_ON_VALUE);
dsaf_write_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg, dsaf_write_syscon(mac_cb->cpld_ctrl, mac_cb->cpld_ctrl_reg,
mac_cb->cpld_led_value); mac_cb->cpld_led_value);
return 2; break;
case HNAE_LED_INACTIVE: case HNAE_LED_INACTIVE:
dsaf_set_bit(mac_cb->cpld_led_value, DSAF_LED_ANCHOR_B, dsaf_set_bit(mac_cb->cpld_led_value, DSAF_LED_ANCHOR_B,
CPLD_LED_DEFAULT_VALUE); CPLD_LED_DEFAULT_VALUE);
...@@ -122,7 +123,8 @@ static int cpld_set_led_id(struct hns_mac_cb *mac_cb, ...@@ -122,7 +123,8 @@ static int cpld_set_led_id(struct hns_mac_cb *mac_cb,
mac_cb->cpld_led_value); mac_cb->cpld_led_value);
break; break;
default: default:
break; dev_err(mac_cb->dev, "invalid led state: %d!", status);
return -EINVAL;
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment