diff options
Diffstat (limited to 'drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c')
| -rw-r--r-- | drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c index 1c2326bd76e2..6ed6f142427e 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c | |||
| @@ -114,6 +114,26 @@ int hns_mac_get_port_info(struct hns_mac_cb *mac_cb, | |||
| 114 | return 0; | 114 | return 0; |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | /** | ||
| 118 | *hns_mac_is_adjust_link - check is need change mac speed and duplex register | ||
| 119 | *@mac_cb: mac device | ||
| 120 | *@speed: phy device speed | ||
| 121 | *@duplex:phy device duplex | ||
| 122 | * | ||
| 123 | */ | ||
| 124 | bool hns_mac_need_adjust_link(struct hns_mac_cb *mac_cb, int speed, int duplex) | ||
| 125 | { | ||
| 126 | struct mac_driver *mac_ctrl_drv; | ||
| 127 | |||
| 128 | mac_ctrl_drv = (struct mac_driver *)(mac_cb->priv.mac); | ||
| 129 | |||
| 130 | if (mac_ctrl_drv->need_adjust_link) | ||
| 131 | return mac_ctrl_drv->need_adjust_link(mac_ctrl_drv, | ||
| 132 | (enum mac_speed)speed, duplex); | ||
| 133 | else | ||
| 134 | return true; | ||
| 135 | } | ||
| 136 | |||
| 117 | void hns_mac_adjust_link(struct hns_mac_cb *mac_cb, int speed, int duplex) | 137 | void hns_mac_adjust_link(struct hns_mac_cb *mac_cb, int speed, int duplex) |
| 118 | { | 138 | { |
| 119 | int ret; | 139 | int ret; |
| @@ -430,6 +450,16 @@ int hns_mac_vm_config_bc_en(struct hns_mac_cb *mac_cb, u32 vmid, bool enable) | |||
| 430 | return 0; | 450 | return 0; |
| 431 | } | 451 | } |
| 432 | 452 | ||
| 453 | int hns_mac_wait_fifo_clean(struct hns_mac_cb *mac_cb) | ||
| 454 | { | ||
| 455 | struct mac_driver *drv = hns_mac_get_drv(mac_cb); | ||
| 456 | |||
| 457 | if (drv->wait_fifo_clean) | ||
| 458 | return drv->wait_fifo_clean(drv); | ||
| 459 | |||
| 460 | return 0; | ||
| 461 | } | ||
| 462 | |||
| 433 | void hns_mac_reset(struct hns_mac_cb *mac_cb) | 463 | void hns_mac_reset(struct hns_mac_cb *mac_cb) |
| 434 | { | 464 | { |
| 435 | struct mac_driver *drv = hns_mac_get_drv(mac_cb); | 465 | struct mac_driver *drv = hns_mac_get_drv(mac_cb); |
| @@ -998,6 +1028,20 @@ static int hns_mac_get_max_port_num(struct dsaf_device *dsaf_dev) | |||
| 998 | return DSAF_MAX_PORT_NUM; | 1028 | return DSAF_MAX_PORT_NUM; |
| 999 | } | 1029 | } |
| 1000 | 1030 | ||
| 1031 | void hns_mac_enable(struct hns_mac_cb *mac_cb, enum mac_commom_mode mode) | ||
| 1032 | { | ||
| 1033 | struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); | ||
| 1034 | |||
| 1035 | mac_ctrl_drv->mac_enable(mac_cb->priv.mac, mode); | ||
| 1036 | } | ||
| 1037 | |||
| 1038 | void hns_mac_disable(struct hns_mac_cb *mac_cb, enum mac_commom_mode mode) | ||
| 1039 | { | ||
| 1040 | struct mac_driver *mac_ctrl_drv = hns_mac_get_drv(mac_cb); | ||
| 1041 | |||
| 1042 | mac_ctrl_drv->mac_disable(mac_cb->priv.mac, mode); | ||
| 1043 | } | ||
| 1044 | |||
| 1001 | /** | 1045 | /** |
| 1002 | * hns_mac_init - init mac | 1046 | * hns_mac_init - init mac |
| 1003 | * @dsaf_dev: dsa fabric device struct pointer | 1047 | * @dsaf_dev: dsa fabric device struct pointer |
