mutex_lock(&rtmdio_lock);
- err = rtmdio_838x_smi_wait_op(100000);
- if (err)
- goto errout;
-
sw_w32_mask(0xffff0000, port << 16, RTL838X_SMI_ACCESS_PHY_CTRL_2);
-
v = reg << 20 | page << 3;
sw_w32(v | park_page, RTL838X_SMI_ACCESS_PHY_CTRL_1);
sw_w32_mask(0, 1, RTL838X_SMI_ACCESS_PHY_CTRL_1);
goto errout;
*val = sw_r32(RTL838X_SMI_ACCESS_PHY_CTRL_2) & 0xffff;
-
- err = 0;
-
errout:
mutex_unlock(&rtmdio_lock);
return -ENOTSUPP;
mutex_lock(&rtmdio_lock);
- err = rtmdio_838x_smi_wait_op(100000);
- if (err)
- goto errout;
sw_w32(BIT(port), RTL838X_SMI_ACCESS_PHY_CTRL_0);
- mdelay(10);
-
sw_w32_mask(0xffff0000, val << 16, RTL838X_SMI_ACCESS_PHY_CTRL_2);
v = reg << 20 | page << 3 | 0x4;
sw_w32_mask(0, 1, RTL838X_SMI_ACCESS_PHY_CTRL_1);
err = rtmdio_838x_smi_wait_op(100000);
- if (err)
- goto errout;
-
- err = 0;
-
-errout:
mutex_unlock(&rtmdio_lock);
return err;
mutex_lock(&rtmdio_lock);
- err = rtmdio_838x_smi_wait_op(100000);
- if (err)
- goto errout;
-
sw_w32(1 << port, RTL838X_SMI_ACCESS_PHY_CTRL_0);
- mdelay(10);
-
sw_w32_mask(0xffff0000, port << 16, RTL838X_SMI_ACCESS_PHY_CTRL_2);
v = addr << 16 | reg;
goto errout;
*val = sw_r32(RTL838X_SMI_ACCESS_PHY_CTRL_2) & 0xffff;
-
- err = 0;
-
errout:
mutex_unlock(&rtmdio_lock);
val &= 0xffff;
mutex_lock(&rtmdio_lock);
- err = rtmdio_838x_smi_wait_op(100000);
- if (err)
- goto errout;
-
sw_w32(1 << port, RTL838X_SMI_ACCESS_PHY_CTRL_0);
- mdelay(10);
-
sw_w32_mask(0xffff0000, val << 16, RTL838X_SMI_ACCESS_PHY_CTRL_2);
-
sw_w32_mask(0x1f << 16, addr << 16, RTL838X_SMI_ACCESS_PHY_CTRL_3);
sw_w32_mask(0xffff, reg, RTL838X_SMI_ACCESS_PHY_CTRL_3);
/* mmd-access | write | cmd-start */
sw_w32(v, RTL838X_SMI_ACCESS_PHY_CTRL_1);
err = rtmdio_838x_smi_wait_op(100000);
- if (err)
- goto errout;
-
- err = 0;
-
-errout:
mutex_unlock(&rtmdio_lock);
+
return err;
}