Merge branch 'hns-next'
Yisen Zhuang says: ==================== net: hns: fix the typo of hns This series includes typo fixes which review by Andy, adding the hns maintainer to MAINTAINERS, as below: > from Daode: adds the maintainer for hns driver; > from Daode: fix the typo of hns reviewed by Andy Shevchenko; > from Kejian: one remove redundant function and two fix to get configuration from DT. changlog: v2 -> v3: match all files in and below drivers/net/ethernet/hisilicon/ v1 -> v2: fix the indentations reviewed by David. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
ca9354a1d4
@ -5437,6 +5437,15 @@ F: include/uapi/linux/if_hippi.h
|
||||
F: net/802/hippi.c
|
||||
F: drivers/net/hippi/
|
||||
|
||||
HISILICON NETWORK SUBSYSTEM DRIVER
|
||||
M: Yisen Zhuang <yisen.zhuang@huawei.com>
|
||||
M: Salil Mehta <salil.mehta@huawei.com>
|
||||
L: netdev@vger.kernel.org
|
||||
W: http://www.hisilicon.com
|
||||
S: Maintained
|
||||
F: drivers/net/ethernet/hisilicon/
|
||||
F: Documentation/devicetree/bindings/net/hisilicon*.txt
|
||||
|
||||
HISILICON SAS Controller
|
||||
M: John Garry <john.garry@huawei.com>
|
||||
W: http://www.hisilicon.com
|
||||
|
@ -363,6 +363,14 @@ enum hnae_port_type {
|
||||
HNAE_PORT_DEBUG
|
||||
};
|
||||
|
||||
/* mac media type */
|
||||
enum hnae_media_type {
|
||||
HNAE_MEDIA_TYPE_UNKNOWN = 0,
|
||||
HNAE_MEDIA_TYPE_FIBER,
|
||||
HNAE_MEDIA_TYPE_COPPER,
|
||||
HNAE_MEDIA_TYPE_BACKPLANE,
|
||||
};
|
||||
|
||||
/* This struct defines the operation on the handle.
|
||||
*
|
||||
* get_handle(): (mandatory)
|
||||
@ -525,6 +533,7 @@ struct hnae_handle {
|
||||
u32 eport_id;
|
||||
u32 dport_id; /* v2 tx bd should fill the dport_id */
|
||||
enum hnae_port_type port_type;
|
||||
enum hnae_media_type media_type;
|
||||
struct list_head node; /* list to hnae_ae_dev->handle_list */
|
||||
struct hnae_buf_ops *bops; /* operation for the buffer */
|
||||
struct hnae_queue **qs; /* array base of all queues */
|
||||
|
@ -134,6 +134,7 @@ struct hnae_handle *hns_ae_get_handle(struct hnae_ae_dev *dev,
|
||||
ae_handle->phy_dev = vf_cb->mac_cb->phy_dev;
|
||||
ae_handle->if_support = vf_cb->mac_cb->if_support;
|
||||
ae_handle->port_type = vf_cb->mac_cb->mac_type;
|
||||
ae_handle->media_type = vf_cb->mac_cb->media_type;
|
||||
ae_handle->dport_id = port_id;
|
||||
|
||||
return ae_handle;
|
||||
|
@ -56,20 +56,6 @@ static const enum mac_mode g_mac_mode_1000[] = {
|
||||
[PHY_INTERFACE_MODE_RTBI] = MAC_MODE_RTBI_1000
|
||||
};
|
||||
|
||||
static enum mac_mode hns_mac_dev_to_enet_if(const struct hns_mac_cb *mac_cb)
|
||||
{
|
||||
switch (mac_cb->max_speed) {
|
||||
case MAC_SPEED_100:
|
||||
return g_mac_mode_100[mac_cb->phy_if];
|
||||
case MAC_SPEED_1000:
|
||||
return g_mac_mode_1000[mac_cb->phy_if];
|
||||
case MAC_SPEED_10000:
|
||||
return MAC_MODE_XGMII_10000;
|
||||
default:
|
||||
return MAC_MODE_MII_100;
|
||||
}
|
||||
}
|
||||
|
||||
static enum mac_mode hns_get_enet_interface(const struct hns_mac_cb *mac_cb)
|
||||
{
|
||||
switch (mac_cb->max_speed) {
|
||||
@ -134,7 +120,6 @@ void hns_mac_adjust_link(struct hns_mac_cb *mac_cb, int speed, int duplex)
|
||||
|
||||
mac_cb->speed = speed;
|
||||
mac_cb->half_duplex = !duplex;
|
||||
mac_ctrl_drv->mac_mode = hns_mac_dev_to_enet_if(mac_cb);
|
||||
|
||||
if (mac_ctrl_drv->adjust_link) {
|
||||
ret = mac_ctrl_drv->adjust_link(mac_ctrl_drv,
|
||||
@ -748,6 +733,18 @@ static void hns_mac_register_phy(struct hns_mac_cb *mac_cb)
|
||||
mac_cb->mac_id, addr);
|
||||
}
|
||||
|
||||
#define MAC_MEDIA_TYPE_MAX_LEN 16
|
||||
|
||||
static const struct {
|
||||
enum hnae_media_type value;
|
||||
const char *name;
|
||||
} media_type_defs[] = {
|
||||
{HNAE_MEDIA_TYPE_UNKNOWN, "unknown" },
|
||||
{HNAE_MEDIA_TYPE_FIBER, "fiber" },
|
||||
{HNAE_MEDIA_TYPE_COPPER, "copper" },
|
||||
{HNAE_MEDIA_TYPE_BACKPLANE, "backplane" },
|
||||
};
|
||||
|
||||
/**
|
||||
*hns_mac_get_info - get mac information from device node
|
||||
*@mac_cb: mac device
|
||||
@ -759,10 +756,13 @@ static int hns_mac_get_info(struct hns_mac_cb *mac_cb)
|
||||
struct device_node *np;
|
||||
struct regmap *syscon;
|
||||
struct of_phandle_args cpld_args;
|
||||
const char *media_type;
|
||||
u32 i;
|
||||
u32 ret;
|
||||
|
||||
mac_cb->link = false;
|
||||
mac_cb->half_duplex = false;
|
||||
mac_cb->media_type = HNAE_MEDIA_TYPE_UNKNOWN;
|
||||
mac_cb->speed = mac_phy_to_speed[mac_cb->phy_if];
|
||||
mac_cb->max_speed = mac_cb->speed;
|
||||
|
||||
@ -864,6 +864,17 @@ static int hns_mac_get_info(struct hns_mac_cb *mac_cb)
|
||||
mac_cb->mac_id);
|
||||
}
|
||||
|
||||
if (!fwnode_property_read_string(mac_cb->fw_port, "media-type",
|
||||
&media_type)) {
|
||||
for (i = 0; i < ARRAY_SIZE(media_type_defs); i++) {
|
||||
if (!strncmp(media_type_defs[i].name, media_type,
|
||||
MAC_MEDIA_TYPE_MAX_LEN)) {
|
||||
mac_cb->media_type = media_type_defs[i].value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -335,6 +335,7 @@ struct hns_mac_cb {
|
||||
u64 txpkt_for_led;
|
||||
u64 rxpkt_for_led;
|
||||
enum hnae_port_type mac_type;
|
||||
enum hnae_media_type media_type;
|
||||
phy_interface_t phy_if;
|
||||
enum hnae_loop loop_mode;
|
||||
|
||||
|
@ -2540,45 +2540,45 @@ static char *hns_dsaf_get_node_stats_strings(char *data, int node,
|
||||
bool is_ver1 = AE_IS_VER1(dsaf_dev->dsaf_ver);
|
||||
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_pad_drop_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_manage_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_rx_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_rx_pkt_id", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_rx_pause_frame", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_release_buf_num", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_sbm_drop_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_crc_false_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_bp_drop_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_lookup_rslt_drop_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_local_rslt_fail_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_vlan_drop_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
snprintf(buff, ETH_GSTRING_LEN, "innod%d_stp_drop_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
if ((node < DSAF_SERVICE_NW_NUM) && (!is_ver1)) {
|
||||
buff += ETH_GSTRING_LEN;
|
||||
if (node < DSAF_SERVICE_NW_NUM && !is_ver1) {
|
||||
for (i = 0; i < DSAF_PRIO_NR; i++) {
|
||||
snprintf(buff, ETH_GSTRING_LEN,
|
||||
"inod%d_pfc_prio%d_pkts", node, i);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
}
|
||||
for (i = 0; i < DSAF_PRIO_NR; i++) {
|
||||
snprintf(buff, ETH_GSTRING_LEN,
|
||||
"onod%d_pfc_prio%d_pkts", node, i);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
snprintf(buff + 0 * ETH_GSTRING_LEN * DSAF_PRIO_NR,
|
||||
ETH_GSTRING_LEN, "inod%d_pfc_prio%d_pkts",
|
||||
node, i);
|
||||
snprintf(buff + 1 * ETH_GSTRING_LEN * DSAF_PRIO_NR,
|
||||
ETH_GSTRING_LEN, "onod%d_pfc_prio%d_pkts",
|
||||
node, i);
|
||||
buff += ETH_GSTRING_LEN;
|
||||
}
|
||||
buff += 1 * DSAF_PRIO_NR * ETH_GSTRING_LEN;
|
||||
}
|
||||
snprintf(buff, ETH_GSTRING_LEN, "onnod%d_tx_pkts", node);
|
||||
buff = buff + ETH_GSTRING_LEN;
|
||||
buff += ETH_GSTRING_LEN;
|
||||
|
||||
return buff;
|
||||
}
|
||||
@ -2604,10 +2604,10 @@ static u64 *hns_dsaf_get_node_stats(struct dsaf_device *ddev, u64 *data,
|
||||
p[10] = hw_stats->local_addr_false;
|
||||
p[11] = hw_stats->vlan_drop;
|
||||
p[12] = hw_stats->stp_drop;
|
||||
if ((node_num < DSAF_SERVICE_NW_NUM) && (!is_ver1)) {
|
||||
if (node_num < DSAF_SERVICE_NW_NUM && !is_ver1) {
|
||||
for (i = 0; i < DSAF_PRIO_NR; i++) {
|
||||
p[13 + i] = hw_stats->rx_pfc[i];
|
||||
p[13 + i + DSAF_PRIO_NR] = hw_stats->tx_pfc[i];
|
||||
p[13 + i + 0 * DSAF_PRIO_NR] = hw_stats->rx_pfc[i];
|
||||
p[13 + i + 1 * DSAF_PRIO_NR] = hw_stats->tx_pfc[i];
|
||||
}
|
||||
p[29] = hw_stats->tx_pkts;
|
||||
return &p[30];
|
||||
|
@ -253,10 +253,9 @@ static void hns_dsaf_ge_srst_by_port(struct dsaf_device *dsaf_dev, u32 port,
|
||||
reg_val_1 = 0x1 << port;
|
||||
port_rst_off = dsaf_dev->mac_cb[port]->port_rst_off;
|
||||
/* there is difference between V1 and V2 in register.*/
|
||||
if (AE_IS_VER1(dsaf_dev->dsaf_ver))
|
||||
reg_val_2 = 0x1041041 << port_rst_off;
|
||||
else
|
||||
reg_val_2 = 0x2082082 << port_rst_off;
|
||||
reg_val_2 = AE_IS_VER1(dsaf_dev->dsaf_ver) ?
|
||||
0x1041041 : 0x2082082;
|
||||
reg_val_2 <<= port_rst_off;
|
||||
|
||||
if (!dereset) {
|
||||
dsaf_write_sub(dsaf_dev, DSAF_SUB_SC_GE_RESET_REQ1_REG,
|
||||
@ -272,12 +271,11 @@ static void hns_dsaf_ge_srst_by_port(struct dsaf_device *dsaf_dev, u32 port,
|
||||
reg_val_1);
|
||||
}
|
||||
} else {
|
||||
reg_val_1 = 0x15540 << dsaf_dev->reset_offset;
|
||||
reg_val_1 = 0x15540;
|
||||
reg_val_2 = AE_IS_VER1(dsaf_dev->dsaf_ver) ? 0x100 : 0x40;
|
||||
|
||||
if (AE_IS_VER1(dsaf_dev->dsaf_ver))
|
||||
reg_val_2 = 0x100 << dsaf_dev->reset_offset;
|
||||
else
|
||||
reg_val_2 = 0x40 << dsaf_dev->reset_offset;
|
||||
reg_val_1 <<= dsaf_dev->reset_offset;
|
||||
reg_val_2 <<= dsaf_dev->reset_offset;
|
||||
|
||||
if (!dereset) {
|
||||
dsaf_write_sub(dsaf_dev, DSAF_SUB_SC_GE_RESET_REQ1_REG,
|
||||
|
@ -762,13 +762,13 @@ static int hns_nic_rx_poll_one(struct hns_nic_ring_data *ring_data,
|
||||
recv_pkts = 0, recv_bds = 0, clean_count = 0;
|
||||
recv:
|
||||
while (recv_pkts < budget && recv_bds < num) {
|
||||
/* reuse or realloc buffers*/
|
||||
/* reuse or realloc buffers */
|
||||
if (clean_count >= RCB_NOF_ALLOC_RX_BUFF_ONCE) {
|
||||
hns_nic_alloc_rx_buffers(ring_data, clean_count);
|
||||
clean_count = 0;
|
||||
}
|
||||
|
||||
/* poll one pkt*/
|
||||
/* poll one pkt */
|
||||
err = hns_nic_poll_rx_skb(ring_data, &skb, &bnum);
|
||||
if (unlikely(!skb)) /* this fault cannot be repaired */
|
||||
goto out;
|
||||
|
@ -165,13 +165,21 @@ static int hns_nic_get_settings(struct net_device *net_dev,
|
||||
cmd->advertising |= ADVERTISED_10000baseKR_Full;
|
||||
}
|
||||
|
||||
if (h->port_type == HNAE_PORT_SERVICE) {
|
||||
switch (h->media_type) {
|
||||
case HNAE_MEDIA_TYPE_FIBER:
|
||||
cmd->port = PORT_FIBRE;
|
||||
cmd->supported |= SUPPORTED_Pause;
|
||||
} else {
|
||||
break;
|
||||
case HNAE_MEDIA_TYPE_COPPER:
|
||||
cmd->port = PORT_TP;
|
||||
break;
|
||||
case HNAE_MEDIA_TYPE_UNKNOWN:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (!(AE_IS_VER1(priv->enet_ver) && h->port_type == HNAE_PORT_DEBUG))
|
||||
cmd->supported |= SUPPORTED_Pause;
|
||||
|
||||
cmd->transceiver = XCVR_EXTERNAL;
|
||||
cmd->mdio_support = (ETH_MDIO_SUPPORTS_C45 | ETH_MDIO_SUPPORTS_C22);
|
||||
hns_get_mdix_mode(net_dev, cmd);
|
||||
|
@ -37,9 +37,19 @@
|
||||
|
||||
#define MDIO_TIMEOUT 1000000
|
||||
|
||||
struct hns_mdio_sc_reg {
|
||||
u16 mdio_clk_en;
|
||||
u16 mdio_clk_dis;
|
||||
u16 mdio_reset_req;
|
||||
u16 mdio_reset_dreq;
|
||||
u16 mdio_clk_st;
|
||||
u16 mdio_reset_st;
|
||||
};
|
||||
|
||||
struct hns_mdio_device {
|
||||
void *vbase; /* mdio reg base address */
|
||||
struct regmap *subctrl_vbase;
|
||||
struct hns_mdio_sc_reg sc_reg;
|
||||
};
|
||||
|
||||
/* mdio reg */
|
||||
@ -93,7 +103,6 @@ enum mdio_c45_op_seq {
|
||||
#define MDIO_SC_CLK_DIS 0x33C
|
||||
#define MDIO_SC_RESET_REQ 0xA38
|
||||
#define MDIO_SC_RESET_DREQ 0xA3C
|
||||
#define MDIO_SC_CTRL 0x2010
|
||||
#define MDIO_SC_CLK_ST 0x531C
|
||||
#define MDIO_SC_RESET_ST 0x5A1C
|
||||
|
||||
@ -353,6 +362,7 @@ static int hns_mdio_read(struct mii_bus *bus, int phy_id, int regnum)
|
||||
static int hns_mdio_reset(struct mii_bus *bus)
|
||||
{
|
||||
struct hns_mdio_device *mdio_dev = (struct hns_mdio_device *)bus->priv;
|
||||
const struct hns_mdio_sc_reg *sc_reg;
|
||||
int ret;
|
||||
|
||||
if (dev_of_node(bus->parent)) {
|
||||
@ -361,9 +371,10 @@ static int hns_mdio_reset(struct mii_bus *bus)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
sc_reg = &mdio_dev->sc_reg;
|
||||
/* 1. reset req, and read reset st check */
|
||||
ret = mdio_sc_cfg_reg_write(mdio_dev, MDIO_SC_RESET_REQ, 0x1,
|
||||
MDIO_SC_RESET_ST, 0x1,
|
||||
ret = mdio_sc_cfg_reg_write(mdio_dev, sc_reg->mdio_reset_req,
|
||||
0x1, sc_reg->mdio_reset_st, 0x1,
|
||||
MDIO_CHECK_SET_ST);
|
||||
if (ret) {
|
||||
dev_err(&bus->dev, "MDIO reset fail\n");
|
||||
@ -371,8 +382,8 @@ static int hns_mdio_reset(struct mii_bus *bus)
|
||||
}
|
||||
|
||||
/* 2. dis clk, and read clk st check */
|
||||
ret = mdio_sc_cfg_reg_write(mdio_dev, MDIO_SC_CLK_DIS,
|
||||
0x1, MDIO_SC_CLK_ST, 0x1,
|
||||
ret = mdio_sc_cfg_reg_write(mdio_dev, sc_reg->mdio_clk_dis,
|
||||
0x1, sc_reg->mdio_clk_st, 0x1,
|
||||
MDIO_CHECK_CLR_ST);
|
||||
if (ret) {
|
||||
dev_err(&bus->dev, "MDIO dis clk fail\n");
|
||||
@ -380,8 +391,8 @@ static int hns_mdio_reset(struct mii_bus *bus)
|
||||
}
|
||||
|
||||
/* 3. reset dreq, and read reset st check */
|
||||
ret = mdio_sc_cfg_reg_write(mdio_dev, MDIO_SC_RESET_DREQ, 0x1,
|
||||
MDIO_SC_RESET_ST, 0x1,
|
||||
ret = mdio_sc_cfg_reg_write(mdio_dev, sc_reg->mdio_reset_dreq,
|
||||
0x1, sc_reg->mdio_reset_st, 0x1,
|
||||
MDIO_CHECK_CLR_ST);
|
||||
if (ret) {
|
||||
dev_err(&bus->dev, "MDIO dis clk fail\n");
|
||||
@ -389,8 +400,8 @@ static int hns_mdio_reset(struct mii_bus *bus)
|
||||
}
|
||||
|
||||
/* 4. en clk, and read clk st check */
|
||||
ret = mdio_sc_cfg_reg_write(mdio_dev, MDIO_SC_CLK_EN,
|
||||
0x1, MDIO_SC_CLK_ST, 0x1,
|
||||
ret = mdio_sc_cfg_reg_write(mdio_dev, sc_reg->mdio_clk_en,
|
||||
0x1, sc_reg->mdio_clk_st, 0x1,
|
||||
MDIO_CHECK_SET_ST);
|
||||
if (ret)
|
||||
dev_err(&bus->dev, "MDIO en clk fail\n");
|
||||
@ -458,13 +469,54 @@ static int hns_mdio_probe(struct platform_device *pdev)
|
||||
snprintf(new_bus->id, MII_BUS_ID_SIZE, "%s-%s", "Mii",
|
||||
dev_name(&pdev->dev));
|
||||
if (dev_of_node(&pdev->dev)) {
|
||||
mdio_dev->subctrl_vbase = syscon_node_to_regmap(
|
||||
of_parse_phandle(pdev->dev.of_node,
|
||||
"subctrl-vbase", 0));
|
||||
if (IS_ERR(mdio_dev->subctrl_vbase)) {
|
||||
dev_warn(&pdev->dev, "no syscon hisilicon,peri-c-subctrl\n");
|
||||
struct of_phandle_args reg_args;
|
||||
|
||||
ret = of_parse_phandle_with_fixed_args(pdev->dev.of_node,
|
||||
"subctrl-vbase",
|
||||
4,
|
||||
0,
|
||||
®_args);
|
||||
if (!ret) {
|
||||
mdio_dev->subctrl_vbase =
|
||||
syscon_node_to_regmap(reg_args.np);
|
||||
if (IS_ERR(mdio_dev->subctrl_vbase)) {
|
||||
dev_warn(&pdev->dev, "syscon_node_to_regmap error\n");
|
||||
mdio_dev->subctrl_vbase = NULL;
|
||||
} else {
|
||||
if (reg_args.args_count == 4) {
|
||||
mdio_dev->sc_reg.mdio_clk_en =
|
||||
(u16)reg_args.args[0];
|
||||
mdio_dev->sc_reg.mdio_clk_dis =
|
||||
(u16)reg_args.args[0] + 4;
|
||||
mdio_dev->sc_reg.mdio_reset_req =
|
||||
(u16)reg_args.args[1];
|
||||
mdio_dev->sc_reg.mdio_reset_dreq =
|
||||
(u16)reg_args.args[1] + 4;
|
||||
mdio_dev->sc_reg.mdio_clk_st =
|
||||
(u16)reg_args.args[2];
|
||||
mdio_dev->sc_reg.mdio_reset_st =
|
||||
(u16)reg_args.args[3];
|
||||
} else {
|
||||
/* for compatible */
|
||||
mdio_dev->sc_reg.mdio_clk_en =
|
||||
MDIO_SC_CLK_EN;
|
||||
mdio_dev->sc_reg.mdio_clk_dis =
|
||||
MDIO_SC_CLK_DIS;
|
||||
mdio_dev->sc_reg.mdio_reset_req =
|
||||
MDIO_SC_RESET_REQ;
|
||||
mdio_dev->sc_reg.mdio_reset_dreq =
|
||||
MDIO_SC_RESET_DREQ;
|
||||
mdio_dev->sc_reg.mdio_clk_st =
|
||||
MDIO_SC_CLK_ST;
|
||||
mdio_dev->sc_reg.mdio_reset_st =
|
||||
MDIO_SC_RESET_ST;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
dev_warn(&pdev->dev, "find syscon ret = %#x\n", ret);
|
||||
mdio_dev->subctrl_vbase = NULL;
|
||||
}
|
||||
|
||||
ret = of_mdiobus_register(new_bus, pdev->dev.of_node);
|
||||
} else if (is_acpi_node(pdev->dev.fwnode)) {
|
||||
/* Clear all the IRQ properties */
|
||||
|
Loading…
Reference in New Issue
Block a user