pinctrl-single,bits = <0x0 0x10000 0x10000>;
};
+ pinmux_enable_mdc_mdio_3: enable-mdc-mdio-3 {
+ pinctrl-single,bits = <0x0 0x1000 0x1000>;
+ };
+
+ pinmux_enable_mdc_mdio_2: enable-mdc-mdio-2 {
+ pinctrl-single,bits = <0x0 0x800 0x800>;
+ };
+
+ pinmux_enable_mdc_mdio_1: enable-mdc-mdio-1 {
+ pinctrl-single,bits = <0x0 0x400 0x400>;
+ };
+
+ pinmux_enable_mdc_mdio_0: enable-mdc-mdio-0 {
+ pinctrl-single,bits = <0x0 0x200 0x200>;
+ };
+
/* Enable GPIO6 and GPIO7, possibly unknown others */
pinmux_disable_jtag: disable_jtag {
pinctrl-single,bits = <0x0 0x0 0x8000>;
pinmux_disable_sys_led: disable_sys_led {
pinctrl-single,bits = <0x0 0x0 0x100>;
};
+
+ pinmux_disable_ext_cpu: disable-ext-cpu {
+ pinctrl-single,bits = <0x0 0x0 0x4>;
+ };
};
pinmux@1b0007d4 {
#interrupt-cells = <3>;
interrupts = <GIC_SHARED 16 IRQ_TYPE_LEVEL_HIGH>;
phy-mode = "internal";
+
+ pinctrl-0 = <&pinmux_disable_ext_cpu>;
+ pinctrl-names = "default";
+
fixed-link {
speed = <1000>;
full-duplex;
/* Trap MLD and IGMP messages to CPU_PORT */
sw_w32((0x2 << 3) | 0x2, RTL931X_VLAN_APP_PKT_CTRL);
- /* Disable External CPU access to switch, clear EXT_CPU_EN */
- sw_w32_mask(BIT(2), 0, RTL931X_MAC_L2_GLOBAL_CTRL2);
-
/* Set PCIE_PWR_DOWN */
sw_w32_mask(0, BIT(1), RTL931X_PS_SOC_CTRL);
break;
static int rtmdio_931x_reset(struct mii_bus *bus)
{
struct rtmdio_bus_priv *priv = bus->priv;
- bool mdc_on[RTMDIO_MAX_SMI_BUS] = { 0 };
u32 poll_sel[4] = { 0 };
u32 poll_ctrl = 0;
u32 c45_mask = 0;
pos = (i * 2) % 32;
poll_sel[i / 16] |= priv->smi_bus[i] << pos;
poll_ctrl |= BIT(20 + priv->smi_bus[i]);
- mdc_on[priv->smi_bus[i]] = true;
}
/* Configure which SMI bus is behind which port number */
}
/* Configure which SMI busses */
- pr_info("%s: WAS RTL931X_MAC_L2_GLOBAL_CTRL2 %08x\n", __func__, sw_r32(RTL931X_MAC_L2_GLOBAL_CTRL2));
pr_info("c45_mask: %08x, RTL931X_SMI_GLB_CTRL0 was %X", c45_mask, sw_r32(RTL931X_SMI_GLB_CTRL0));
for (int i = 0; i < RTMDIO_MAX_SMI_BUS; i++) {
/* bus is polled in c45 */
if (priv->smi_bus_isc45[i])
c45_mask |= 0x2 << (i * 2); /* Std. C45, non-standard is 0x3 */
- /* Enable bus access via MDC */
- if (mdc_on[i])
- sw_w32_mask(0, BIT(9 + i), RTL931X_MAC_L2_GLOBAL_CTRL2);
}
- pr_info("%s: RTL931X_MAC_L2_GLOBAL_CTRL2 %08x\n", __func__, sw_r32(RTL931X_MAC_L2_GLOBAL_CTRL2));
pr_info("c45_mask: %08x, RTL931X_SMI_GLB_CTRL0 was %X", c45_mask, sw_r32(RTL931X_SMI_GLB_CTRL0));
/* We have a 10G PHY enable polling