mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-03-04 00:14:04 +01:00
realtek: mdio: convert port to addr
Get rid of the port variables. Use addr for phy address like upstream kernel does for the whole phy/mdio subsystem. Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de> Link: https://github.com/openwrt/openwrt/pull/22131 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
a8946bad55
commit
ea0a14f347
1 changed files with 48 additions and 52 deletions
|
|
@ -138,10 +138,6 @@
|
|||
* when they are not attached to an Realtek SoC. The paradigm should be to keep the PHY
|
||||
* implementation bus independent.
|
||||
*
|
||||
* As if this is not enough the PHY packages consist of 4 or 8 ports that all can be
|
||||
* programmed individually. Some registers are only available on port 0 and configure
|
||||
* the whole package.
|
||||
*
|
||||
* To bring all this together we need a tricky bus design that intercepts select page
|
||||
* calls but lets raw page accesses through. And especially knows how to handle raw
|
||||
* accesses to the select register. Additionally we need the possibility to write to
|
||||
|
|
@ -193,12 +189,12 @@ struct rtmdio_config {
|
|||
int raw_page;
|
||||
int bus_map_base;
|
||||
int port_map_base;
|
||||
int (*read_mmd_phy)(struct mii_bus *bus, u32 port, u32 devnum, u32 regnum, u32 *val);
|
||||
int (*read_phy)(struct mii_bus *bus, u32 port, u32 page, u32 reg, u32 *val);
|
||||
int (*read_mmd_phy)(struct mii_bus *bus, u32 addr, u32 devnum, u32 regnum, u32 *val);
|
||||
int (*read_phy)(struct mii_bus *bus, u32 addr, u32 page, u32 reg, u32 *val);
|
||||
int (*reset)(struct mii_bus *bus);
|
||||
void (*setup_polling)(struct mii_bus *bus);
|
||||
int (*write_mmd_phy)(struct mii_bus *bus, u32 port, u32 devnum, u32 regnum, u32 val);
|
||||
int (*write_phy)(struct mii_bus *bus, u32 port, u32 page, u32 reg, u32 val);
|
||||
int (*write_mmd_phy)(struct mii_bus *bus, u32 addr, u32 devnum, u32 regnum, u32 val);
|
||||
int (*write_phy)(struct mii_bus *bus, u32 addr, u32 page, u32 reg, u32 val);
|
||||
};
|
||||
|
||||
struct rtmdio_phy_info {
|
||||
|
|
@ -234,14 +230,14 @@ static int rtmdio_838x_run_cmd(struct mii_bus *bus, int cmd)
|
|||
RTMDIO_838X_SMI_ACCESS_PHY_CTRL_1, RTMDIO_838X_CMD_FAIL);
|
||||
}
|
||||
|
||||
static int rtmdio_838x_read_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg, u32 *val)
|
||||
static int rtmdio_838x_read_phy(struct mii_bus *bus, u32 addr, u32 page, u32 reg, u32 *val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
u32 park_page = 31;
|
||||
int err;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_0, BIT(port));
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_2, port << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_0, BIT(addr));
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_2, addr << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_1,
|
||||
reg << 20 | park_page << 15 | page << 3);
|
||||
err = rtmdio_838x_run_cmd(bus, RTMDIO_838X_CMD_READ_C22);
|
||||
|
|
@ -253,12 +249,12 @@ static int rtmdio_838x_read_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg
|
|||
return err;
|
||||
}
|
||||
|
||||
static int rtmdio_838x_write_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg, u32 val)
|
||||
static int rtmdio_838x_write_phy(struct mii_bus *bus, u32 addr, u32 page, u32 reg, u32 val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
u32 park_page = 31;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_0, BIT(port));
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_0, BIT(addr));
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_2, val << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_1,
|
||||
reg << 20 | park_page << 15 | page << 3);
|
||||
|
|
@ -266,13 +262,13 @@ static int rtmdio_838x_write_phy(struct mii_bus *bus, u32 port, u32 page, u32 re
|
|||
return rtmdio_838x_run_cmd(bus, RTMDIO_838X_CMD_WRITE_C22);
|
||||
}
|
||||
|
||||
static int rtmdio_838x_read_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u32 regnum, u32 *val)
|
||||
static int rtmdio_838x_read_mmd_phy(struct mii_bus *bus, u32 addr, u32 devnum, u32 regnum, u32 *val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
int err;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_0, BIT(port));
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_2, port << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_0, BIT(addr));
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_2, addr << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_3, devnum << 16 | regnum);
|
||||
err = rtmdio_838x_run_cmd(bus, RTMDIO_838X_CMD_READ_C45);
|
||||
if (!err)
|
||||
|
|
@ -283,11 +279,11 @@ static int rtmdio_838x_read_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u
|
|||
return err;
|
||||
}
|
||||
|
||||
static int rtmdio_838x_write_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u32 regnum, u32 val)
|
||||
static int rtmdio_838x_write_mmd_phy(struct mii_bus *bus, u32 addr, u32 devnum, u32 regnum, u32 val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_0, BIT(port));
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_0, BIT(addr));
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_2, val << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_838X_SMI_ACCESS_PHY_CTRL_3, devnum << 16 | regnum);
|
||||
|
||||
|
|
@ -300,13 +296,13 @@ static int rtmdio_839x_run_cmd(struct mii_bus *bus, int cmd)
|
|||
RTMDIO_839X_PHYREG_ACCESS_CTRL, RTMDIO_839X_CMD_FAIL);
|
||||
}
|
||||
|
||||
static int rtmdio_839x_read_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg, u32 *val)
|
||||
static int rtmdio_839x_read_phy(struct mii_bus *bus, u32 addr, u32 page, u32 reg, u32 *val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
int err;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_CTRL, 0x1ff);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_DATA_CTRL, port << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_DATA_CTRL, addr << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_ACCESS_CTRL,
|
||||
reg << 5 | page << 10 | ((page == 0x1fff) ? 0x1f : 0) << 23);
|
||||
err = rtmdio_839x_run_cmd(bus, RTMDIO_839X_CMD_READ_C22);
|
||||
|
|
@ -318,26 +314,26 @@ static int rtmdio_839x_read_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg
|
|||
return err;
|
||||
}
|
||||
|
||||
static int rtmdio_839x_write_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg, u32 val)
|
||||
static int rtmdio_839x_write_phy(struct mii_bus *bus, u32 addr, u32 page, u32 reg, u32 val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_CTRL, 0x1ff);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_DATA_CTRL, val << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_PORT_CTRL, BIT_ULL(port));
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_PORT_CTRL + 4, BIT_ULL(port) >> 32);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_PORT_CTRL, BIT_ULL(addr));
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_PORT_CTRL + 4, BIT_ULL(addr) >> 32);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_ACCESS_CTRL,
|
||||
reg << 5 | page << 10 | ((page == 0x1fff) ? 0x1f : 0) << 23);
|
||||
|
||||
return rtmdio_839x_run_cmd(bus, RTMDIO_839X_CMD_WRITE_C22);
|
||||
}
|
||||
|
||||
static int rtmdio_839x_read_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u32 regnum, u32 *val)
|
||||
static int rtmdio_839x_read_mmd_phy(struct mii_bus *bus, u32 addr, u32 devnum, u32 regnum, u32 *val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
int err;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_DATA_CTRL, port << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_DATA_CTRL, addr << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_MMD_CTRL, (devnum << 16) | (regnum & 0xffff));
|
||||
err = rtmdio_839x_run_cmd(bus, RTMDIO_839X_CMD_READ_C45);
|
||||
if (!err)
|
||||
|
|
@ -348,12 +344,12 @@ static int rtmdio_839x_read_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u
|
|||
return err;
|
||||
}
|
||||
|
||||
static int rtmdio_839x_write_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u32 regnum, u32 val)
|
||||
static int rtmdio_839x_write_mmd_phy(struct mii_bus *bus, u32 addr, u32 devnum, u32 regnum, u32 val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_PORT_CTRL, BIT_ULL(port));
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_PORT_CTRL + 4, BIT_ULL(port) >> 32);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_PORT_CTRL, BIT_ULL(addr));
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_PORT_CTRL + 4, BIT_ULL(addr) >> 32);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_DATA_CTRL, val << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_839X_PHYREG_MMD_CTRL, (devnum << 16) | (regnum & 0xffff));
|
||||
|
||||
|
|
@ -366,12 +362,12 @@ static int rtmdio_930x_run_cmd(struct mii_bus *bus, int cmd)
|
|||
RTMDIO_930X_SMI_ACCESS_PHY_CTRL_1, RTMDIO_930X_CMD_FAIL);
|
||||
}
|
||||
|
||||
static int rtmdio_930x_write_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg, u32 val)
|
||||
static int rtmdio_930x_write_phy(struct mii_bus *bus, u32 addr, u32 page, u32 reg, u32 val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
u32 park_page = 31;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_0, BIT(port));
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_0, BIT(addr));
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_2, val << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_1,
|
||||
reg << 20 | page << 3 | park_page << 15);
|
||||
|
|
@ -379,13 +375,13 @@ static int rtmdio_930x_write_phy(struct mii_bus *bus, u32 port, u32 page, u32 re
|
|||
return rtmdio_930x_run_cmd(bus, RTMDIO_930X_CMD_WRITE_C22);
|
||||
}
|
||||
|
||||
static int rtmdio_930x_read_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg, u32 *val)
|
||||
static int rtmdio_930x_read_phy(struct mii_bus *bus, u32 addr, u32 page, u32 reg, u32 *val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
u32 park_page = 31;
|
||||
int err;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_2, port << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_2, addr << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_1,
|
||||
reg << 20 | page << 3 | park_page << 15);
|
||||
err = rtmdio_930x_run_cmd(bus, RTMDIO_930X_CMD_READ_C22);
|
||||
|
|
@ -397,23 +393,23 @@ static int rtmdio_930x_read_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg
|
|||
return err;
|
||||
}
|
||||
|
||||
static int rtmdio_930x_write_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u32 regnum, u32 val)
|
||||
static int rtmdio_930x_write_mmd_phy(struct mii_bus *bus, u32 addr, u32 devnum, u32 regnum, u32 val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_0, BIT(port));
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_0, BIT(addr));
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_2, val << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_3, (devnum << 16) | (regnum & 0xffff));
|
||||
|
||||
return rtmdio_930x_run_cmd(bus, RTMDIO_930X_CMD_WRITE_C45);
|
||||
}
|
||||
|
||||
static int rtmdio_930x_read_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u32 regnum, u32 *val)
|
||||
static int rtmdio_930x_read_mmd_phy(struct mii_bus *bus, u32 addr, u32 devnum, u32 regnum, u32 *val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
int err ;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_2, port << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_2, addr << 16);
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_ACCESS_PHY_CTRL_3, (devnum << 16) | (regnum & 0xffff));
|
||||
err = rtmdio_930x_run_cmd(bus, RTMDIO_930X_CMD_READ_C45);
|
||||
if (!err)
|
||||
|
|
@ -430,10 +426,10 @@ static int rtmdio_931x_run_cmd(struct mii_bus *bus, int cmd)
|
|||
RTMDIO_931X_SMI_INDRT_ACCESS_CTRL_0, RTMDIO_931X_CMD_FAIL);
|
||||
}
|
||||
|
||||
static int rtmdio_931x_write_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg, u32 val)
|
||||
static int rtmdio_931x_write_phy(struct mii_bus *bus, u32 addr, u32 page, u32 reg, u32 val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
u64 mask = BIT_ULL(port);
|
||||
u64 mask = BIT_ULL(addr);
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_INDRT_ACCESS_CTRL_2, (u32)mask);
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_INDRT_ACCESS_CTRL_2 + 4, (u32)(mask >> 32));
|
||||
|
|
@ -444,12 +440,12 @@ static int rtmdio_931x_write_phy(struct mii_bus *bus, u32 port, u32 page, u32 re
|
|||
return rtmdio_931x_run_cmd(bus, RTMDIO_931X_CMD_WRITE_C22);
|
||||
}
|
||||
|
||||
static int rtmdio_931x_read_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg, u32 *val)
|
||||
static int rtmdio_931x_read_phy(struct mii_bus *bus, u32 addr, u32 page, u32 reg, u32 *val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
int err;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_INDRT_ACCESS_BC_CTRL, port << 5);
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_INDRT_ACCESS_BC_CTRL, addr << 5);
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_INDRT_ACCESS_CTRL_0, reg << 6 | page << 11);
|
||||
err = rtmdio_931x_run_cmd(bus, RTMDIO_931X_CMD_READ_C22);
|
||||
if (!err)
|
||||
|
|
@ -460,12 +456,12 @@ static int rtmdio_931x_read_phy(struct mii_bus *bus, u32 port, u32 page, u32 reg
|
|||
return err;
|
||||
}
|
||||
|
||||
static int rtmdio_931x_read_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u32 regnum, u32 *val)
|
||||
static int rtmdio_931x_read_mmd_phy(struct mii_bus *bus, u32 addr, u32 devnum, u32 regnum, u32 *val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
int err;
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_INDRT_ACCESS_BC_CTRL, port << 5);
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_INDRT_ACCESS_BC_CTRL, addr << 5);
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_INDRT_ACCESS_MMD_CTRL, (devnum << 16) | (regnum & 0xffff));
|
||||
err = rtmdio_931x_run_cmd(bus, RTMDIO_931X_CMD_READ_C45);
|
||||
if (!err)
|
||||
|
|
@ -476,10 +472,10 @@ static int rtmdio_931x_read_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u
|
|||
return err;
|
||||
}
|
||||
|
||||
static int rtmdio_931x_write_mmd_phy(struct mii_bus *bus, u32 port, u32 devnum, u32 regnum, u32 val)
|
||||
static int rtmdio_931x_write_mmd_phy(struct mii_bus *bus, u32 addr, u32 devnum, u32 regnum, u32 val)
|
||||
{
|
||||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
u64 mask = BIT_ULL(port);
|
||||
u64 mask = BIT_ULL(addr);
|
||||
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_INDRT_ACCESS_CTRL_2, (u32)mask);
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_INDRT_ACCESS_CTRL_2 + 4, (u32)(mask >> 32));
|
||||
|
|
@ -644,7 +640,7 @@ static int rtmdio_get_phy_info(struct mii_bus *bus, int addr, struct rtmdio_phy_
|
|||
phyinfo->has_res_reg = true;
|
||||
break;
|
||||
default:
|
||||
pr_warn("skip polling setup for unknown PHY %08x on port %d\n", phyid, addr);
|
||||
pr_warn("skip polling setup for unknown PHY %08x on address %d\n", phyid, addr);
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
|
@ -677,7 +673,7 @@ static void rtmdio_838x_setup_polling(struct mii_bus *bus)
|
|||
/*
|
||||
* Control bits EX_PHY_MAN_xxx have an important effect on the detection of the media
|
||||
* status (fibre/copper) of a PHY. Once activated, register MAC_LINK_MEDIA_STS can
|
||||
* give the real media status (0=copper, 1=fibre). For now assume that if port 24 is
|
||||
* give the real media status (0=copper, 1=fibre). For now assume that if address 24 is
|
||||
* PHY driven, it must be a combo PHY and media detection is needed.
|
||||
*/
|
||||
combo_phy = ctrl->smi_bus[24] < 0 ? 0 : BIT(7);
|
||||
|
|
@ -723,7 +719,7 @@ static void rtmdio_930x_setup_polling(struct mii_bus *bus)
|
|||
struct rtmdio_phy_info phyinfo;
|
||||
unsigned int mask, val;
|
||||
|
||||
/* reset all ports to "SerDes driven" */
|
||||
/* set everthing to "SerDes driven" */
|
||||
regmap_write(ctrl->map, RTMDIO_930X_SMI_MAC_TYPE_CTRL, 0);
|
||||
|
||||
/* Define PHY specific polling parameters */
|
||||
|
|
@ -731,7 +727,7 @@ static void rtmdio_930x_setup_polling(struct mii_bus *bus)
|
|||
if (rtmdio_get_phy_info(bus, addr, &phyinfo))
|
||||
continue;
|
||||
|
||||
/* set port to "PHY driven" */
|
||||
/* set to "PHY driven" */
|
||||
mask = addr > 23 ? 0x7 << ((addr - 24) * 3 + 12): 0x3 << ((addr / 4) * 2);
|
||||
val = phyinfo.mac_type << (ffs(mask) - 1);
|
||||
regmap_update_bits(ctrl->map, RTMDIO_930X_SMI_MAC_TYPE_CTRL, mask, val);
|
||||
|
|
@ -777,7 +773,7 @@ static int rtmdio_931x_reset(struct mii_bus *bus)
|
|||
struct rtmdio_ctrl *ctrl = bus->priv;
|
||||
u32 c45_mask = 0;
|
||||
|
||||
/* Disable port polling for configuration purposes */
|
||||
/* Disable polling for configuration purposes */
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_PORT_POLLING_CTRL, 0);
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_PORT_POLLING_CTRL + 4, 0);
|
||||
msleep(100);
|
||||
|
|
@ -798,7 +794,7 @@ static void rtmdio_931x_setup_polling(struct mii_bus *bus)
|
|||
struct rtmdio_phy_info phyinfo;
|
||||
u32 val;
|
||||
|
||||
/* reset all ports to "SerDes driven" */
|
||||
/* set everything to "SerDes driven" */
|
||||
for (int reg = 0; reg < 4; reg++)
|
||||
regmap_write(ctrl->map, RTMDIO_931X_SMI_PHY_ABLTY_GET_SEL + reg * 4,
|
||||
RTMDIO_931X_SMI_PHY_ABLTY_SDS * 0x55555555U);
|
||||
|
|
@ -811,7 +807,7 @@ static void rtmdio_931x_setup_polling(struct mii_bus *bus)
|
|||
if (rtmdio_get_phy_info(bus, addr, &phyinfo))
|
||||
continue;
|
||||
|
||||
/* set port to "PHY driven" */
|
||||
/* set to "PHY driven" */
|
||||
mask = GENMASK(1, 0) << ((addr % 16) * 2);
|
||||
val = RTMDIO_931X_SMY_PHY_ABLTY_MDIO << (ffs(mask) - 1);
|
||||
regmap_update_bits(ctrl->map, RTMDIO_931X_SMI_PHY_ABLTY_GET_SEL + (addr / 16) * 4,
|
||||
|
|
@ -900,7 +896,7 @@ static int rtmdio_probe(struct platform_device *pdev)
|
|||
continue;
|
||||
|
||||
if (addr < 0 || addr >= ctrl->cfg->num_phys) {
|
||||
dev_err(dev, "illegal port number %d\n", addr);
|
||||
dev_err(dev, "illegal address number %d\n", addr);
|
||||
of_node_put(np);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue