Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 222ca8e0 authored by Nathan Sullivan's avatar Nathan Sullivan Committed by David S. Miller
Browse files

net: macb: Disable half duplex gigabit on Zynq



According to the Zynq TRM, gigabit half duplex is not supported.  Add a
new cap and compatible string so Zynq can avoid advertising that mode.

Signed-off-by: default avatarNathan Sullivan <nathan.sullivan@ni.com>
Acked-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6db99596
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -350,6 +350,9 @@ static int macb_mii_probe(struct net_device *dev)
	else
	else
		phydev->supported &= PHY_BASIC_FEATURES;
		phydev->supported &= PHY_BASIC_FEATURES;


	if (bp->caps & MACB_CAPS_NO_GIGABIT_HALF)
		phydev->supported &= ~SUPPORTED_1000baseT_Half;

	phydev->advertising = phydev->supported;
	phydev->advertising = phydev->supported;


	bp->link = 0;
	bp->link = 0;
@@ -2699,6 +2702,14 @@ static const struct macb_config emac_config = {
	.init = at91ether_init,
	.init = at91ether_init,
};
};


static const struct macb_config zynq_config = {
	.caps = MACB_CAPS_SG_DISABLED | MACB_CAPS_GIGABIT_MODE_AVAILABLE |
		MACB_CAPS_NO_GIGABIT_HALF,
	.dma_burst_length = 16,
	.clk_init = macb_clk_init,
	.init = macb_init,
};

static const struct of_device_id macb_dt_ids[] = {
static const struct of_device_id macb_dt_ids[] = {
	{ .compatible = "cdns,at32ap7000-macb" },
	{ .compatible = "cdns,at32ap7000-macb" },
	{ .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config },
	{ .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config },
@@ -2709,6 +2720,7 @@ static const struct of_device_id macb_dt_ids[] = {
	{ .compatible = "atmel,sama5d4-gem", .data = &sama5d4_config },
	{ .compatible = "atmel,sama5d4-gem", .data = &sama5d4_config },
	{ .compatible = "cdns,at91rm9200-emac", .data = &emac_config },
	{ .compatible = "cdns,at91rm9200-emac", .data = &emac_config },
	{ .compatible = "cdns,emac", .data = &emac_config },
	{ .compatible = "cdns,emac", .data = &emac_config },
	{ .compatible = "cdns,zynq-gem", .data = &zynq_config },
	{ /* sentinel */ }
	{ /* sentinel */ }
};
};
MODULE_DEVICE_TABLE(of, macb_dt_ids);
MODULE_DEVICE_TABLE(of, macb_dt_ids);
+1 −0
Original line number Original line Diff line number Diff line
@@ -393,6 +393,7 @@
#define MACB_CAPS_ISR_CLEAR_ON_WRITE		0x00000001
#define MACB_CAPS_ISR_CLEAR_ON_WRITE		0x00000001
#define MACB_CAPS_USRIO_HAS_CLKEN		0x00000002
#define MACB_CAPS_USRIO_HAS_CLKEN		0x00000002
#define MACB_CAPS_USRIO_DEFAULT_IS_MII		0x00000004
#define MACB_CAPS_USRIO_DEFAULT_IS_MII		0x00000004
#define MACB_CAPS_NO_GIGABIT_HALF		0x00000008
#define MACB_CAPS_FIFO_MODE			0x10000000
#define MACB_CAPS_FIFO_MODE			0x10000000
#define MACB_CAPS_GIGABIT_MODE_AVAILABLE	0x20000000
#define MACB_CAPS_GIGABIT_MODE_AVAILABLE	0x20000000
#define MACB_CAPS_SG_DISABLED			0x40000000
#define MACB_CAPS_SG_DISABLED			0x40000000