mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-13 01:08:50 +00:00
Merge branch 'net-next-stmmac-dwmac-sun8i-add-support-for-V3s'
Icenowy Zheng says: ==================== net-next: stmmac: dwmac-sun8i: add support for V3s Allwinner V3s features an EMAC like the on in H3, but without external MII interfaces, so being not able really to use RMII/RGMII. And it has a different default value of syscon (0x38000 instead of 0x58000 on H3), which shows a problem that the EMAC clock freq should be 24MHz. (Both H3 and V3s SoCs doesn't have extra xtal input for EPHY, and the main xtal is 24MHz. The default value of H3 is set to 24MHz, but the V3s default value is set to 25MHz). First two patches are device tree binding patches, the third forces the frequency to 24MHz and the fourth really add the V3s support. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
cc07cb935a
@ -9,6 +9,7 @@ Required properties for the system controller:
|
||||
- reg: address and length of the register for the device.
|
||||
- compatible: should be "syscon" and one of the following string:
|
||||
"allwinner,sun8i-h3-system-controller"
|
||||
"allwinner,sun8i-v3s-system-controller"
|
||||
"allwinner,sun50i-a64-system-controller"
|
||||
"allwinner,sun8i-a83t-system-controller"
|
||||
|
||||
|
@ -7,6 +7,7 @@ Required properties:
|
||||
- compatible: should be one of the following string:
|
||||
"allwinner,sun8i-a83t-emac"
|
||||
"allwinner,sun8i-h3-emac"
|
||||
"allwinner,sun8i-v3s-emac"
|
||||
"allwinner,sun50i-a64-emac"
|
||||
- reg: address and length of the register for the device.
|
||||
- interrupts: interrupt for the device
|
||||
@ -22,6 +23,7 @@ Required properties:
|
||||
- syscon: A phandle to the syscon of the SoC with one of the following
|
||||
compatible string:
|
||||
- allwinner,sun8i-h3-system-controller
|
||||
- allwinner,sun8i-v3s-system-controller
|
||||
- allwinner,sun50i-a64-system-controller
|
||||
- allwinner,sun8i-a83t-system-controller
|
||||
|
||||
@ -31,7 +33,9 @@ Optional properties:
|
||||
Both delay properties need to be a multiple of 100. They control the delay for
|
||||
external PHY.
|
||||
|
||||
Optional properties for "allwinner,sun8i-h3-emac":
|
||||
Optional properties for the following compatibles:
|
||||
- "allwinner,sun8i-h3-emac",
|
||||
- "allwinner,sun8i-v3s-emac":
|
||||
- allwinner,leds-active-low: EPHY LEDs are active low
|
||||
|
||||
Required child node of emac:
|
||||
@ -44,7 +48,9 @@ Required properties of the mdio node:
|
||||
The device node referenced by "phy" or "phy-handle" should be a child node
|
||||
of the mdio node. See phy.txt for the generic PHY bindings.
|
||||
|
||||
Required properties of the phy node with "allwinner,sun8i-h3-emac":
|
||||
Required properties of the phy node with the following compatibles:
|
||||
- "allwinner,sun8i-h3-emac",
|
||||
- "allwinner,sun8i-v3s-emac":
|
||||
- clocks: a phandle to the reference clock for the EPHY
|
||||
- resets: a phandle to the reset control for the EPHY
|
||||
|
||||
|
@ -81,6 +81,12 @@ static const struct emac_variant emac_variant_h3 = {
|
||||
.support_rgmii = true
|
||||
};
|
||||
|
||||
static const struct emac_variant emac_variant_v3s = {
|
||||
.default_syscon_value = 0x38000,
|
||||
.internal_phy = PHY_INTERFACE_MODE_MII,
|
||||
.support_mii = true
|
||||
};
|
||||
|
||||
static const struct emac_variant emac_variant_a83t = {
|
||||
.default_syscon_value = 0,
|
||||
.internal_phy = 0,
|
||||
@ -185,6 +191,7 @@ static const struct emac_variant emac_variant_a64 = {
|
||||
|
||||
/* H3 specific bits for EPHY */
|
||||
#define H3_EPHY_ADDR_SHIFT 20
|
||||
#define H3_EPHY_CLK_SEL BIT(18) /* 1: 24MHz, 0: 25MHz */
|
||||
#define H3_EPHY_LED_POL BIT(17) /* 1: active low, 0: active high */
|
||||
#define H3_EPHY_SHUTDOWN BIT(16) /* 1: shutdown, 0: power up */
|
||||
#define H3_EPHY_SELECT BIT(15) /* 1: internal PHY, 0: external PHY */
|
||||
@ -656,6 +663,9 @@ static int sun8i_dwmac_set_syscon(struct stmmac_priv *priv)
|
||||
else
|
||||
reg &= ~H3_EPHY_LED_POL;
|
||||
|
||||
/* Force EPHY xtal frequency to 24MHz. */
|
||||
reg |= H3_EPHY_CLK_SEL;
|
||||
|
||||
ret = of_mdio_parse_addr(priv->device,
|
||||
priv->plat->phy_node);
|
||||
if (ret < 0) {
|
||||
@ -971,6 +981,8 @@ static int sun8i_dwmac_probe(struct platform_device *pdev)
|
||||
static const struct of_device_id sun8i_dwmac_match[] = {
|
||||
{ .compatible = "allwinner,sun8i-h3-emac",
|
||||
.data = &emac_variant_h3 },
|
||||
{ .compatible = "allwinner,sun8i-v3s-emac",
|
||||
.data = &emac_variant_v3s },
|
||||
{ .compatible = "allwinner,sun8i-a83t-emac",
|
||||
.data = &emac_variant_a83t },
|
||||
{ .compatible = "allwinner,sun50i-a64-emac",
|
||||
|
@ -313,6 +313,7 @@ static int stmmac_dt_phy(struct plat_stmmacenet_data *plat,
|
||||
{ .compatible = "snps,dwc-qos-ethernet-4.10" },
|
||||
{ .compatible = "allwinner,sun8i-a83t-emac" },
|
||||
{ .compatible = "allwinner,sun8i-h3-emac" },
|
||||
{ .compatible = "allwinner,sun8i-v3s-emac" },
|
||||
{ .compatible = "allwinner,sun50i-a64-emac" },
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user