|
@@ -2113,7 +2113,8 @@ static void macb_get_regs(struct net_device *dev, struct ethtool_regs *regs,
|
|
|
regs_buff[10] = macb_tx_dma(&bp->queues[0], tail);
|
|
|
regs_buff[11] = macb_tx_dma(&bp->queues[0], head);
|
|
|
|
|
|
- regs_buff[12] = macb_or_gem_readl(bp, USRIO);
|
|
|
+ if (!(bp->caps & MACB_CAPS_USRIO_DISABLED))
|
|
|
+ regs_buff[12] = macb_or_gem_readl(bp, USRIO);
|
|
|
if (macb_is_gem(bp)) {
|
|
|
regs_buff[13] = gem_readl(bp, DMACFG);
|
|
|
}
|
|
@@ -2392,19 +2393,21 @@ static int macb_init(struct platform_device *pdev)
|
|
|
dev->hw_features &= ~NETIF_F_SG;
|
|
|
dev->features = dev->hw_features;
|
|
|
|
|
|
- val = 0;
|
|
|
- if (bp->phy_interface == PHY_INTERFACE_MODE_RGMII)
|
|
|
- val = GEM_BIT(RGMII);
|
|
|
- else if (bp->phy_interface == PHY_INTERFACE_MODE_RMII &&
|
|
|
- (bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII))
|
|
|
- val = MACB_BIT(RMII);
|
|
|
- else if (!(bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII))
|
|
|
- val = MACB_BIT(MII);
|
|
|
+ if (!(bp->caps & MACB_CAPS_USRIO_DISABLED)) {
|
|
|
+ val = 0;
|
|
|
+ if (bp->phy_interface == PHY_INTERFACE_MODE_RGMII)
|
|
|
+ val = GEM_BIT(RGMII);
|
|
|
+ else if (bp->phy_interface == PHY_INTERFACE_MODE_RMII &&
|
|
|
+ (bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII))
|
|
|
+ val = MACB_BIT(RMII);
|
|
|
+ else if (!(bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII))
|
|
|
+ val = MACB_BIT(MII);
|
|
|
|
|
|
- if (bp->caps & MACB_CAPS_USRIO_HAS_CLKEN)
|
|
|
- val |= MACB_BIT(CLKEN);
|
|
|
+ if (bp->caps & MACB_CAPS_USRIO_HAS_CLKEN)
|
|
|
+ val |= MACB_BIT(CLKEN);
|
|
|
|
|
|
- macb_or_gem_writel(bp, USRIO, val);
|
|
|
+ macb_or_gem_writel(bp, USRIO, val);
|
|
|
+ }
|
|
|
|
|
|
/* Set MII management clock divider */
|
|
|
val = macb_mdc_clk_div(bp);
|
|
@@ -2767,6 +2770,11 @@ static const struct macb_config emac_config = {
|
|
|
.init = at91ether_init,
|
|
|
};
|
|
|
|
|
|
+static const struct macb_config np4_config = {
|
|
|
+ .caps = MACB_CAPS_USRIO_DISABLED,
|
|
|
+ .clk_init = macb_clk_init,
|
|
|
+ .init = macb_init,
|
|
|
+};
|
|
|
|
|
|
static const struct macb_config zynqmp_config = {
|
|
|
.caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_JUMBO,
|
|
@@ -2787,6 +2795,7 @@ static const struct of_device_id macb_dt_ids[] = {
|
|
|
{ .compatible = "cdns,at32ap7000-macb" },
|
|
|
{ .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config },
|
|
|
{ .compatible = "cdns,macb" },
|
|
|
+ { .compatible = "cdns,np4-macb", .data = &np4_config },
|
|
|
{ .compatible = "cdns,pc302-gem", .data = &pc302gem_config },
|
|
|
{ .compatible = "cdns,gem", .data = &pc302gem_config },
|
|
|
{ .compatible = "atmel,sama5d2-gem", .data = &sama5d2_config },
|