mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-13 20:36:02 +01:00
Merge branch 'patch/d1-emac' into allwinner
This commit is contained in:
commit
4643085196
@ -162,7 +162,7 @@ struct emac_eth_dev {
|
|||||||
|
|
||||||
enum emac_variant variant;
|
enum emac_variant variant;
|
||||||
void *mac_reg;
|
void *mac_reg;
|
||||||
phys_addr_t sysctl_reg;
|
void *sysctl_reg;
|
||||||
struct phy_device *phydev;
|
struct phy_device *phydev;
|
||||||
struct mii_dev *bus;
|
struct mii_dev *bus;
|
||||||
struct clk tx_clk;
|
struct clk tx_clk;
|
||||||
@ -317,18 +317,7 @@ static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata,
|
|||||||
{
|
{
|
||||||
u32 reg;
|
u32 reg;
|
||||||
|
|
||||||
if (priv->variant == R40_GMAC) {
|
reg = readl(priv->sysctl_reg);
|
||||||
/* Select RGMII for R40 */
|
|
||||||
reg = readl(priv->sysctl_reg + 0x164);
|
|
||||||
reg |= SC_ETCS_INT_GMII |
|
|
||||||
SC_EPIT |
|
|
||||||
(CONFIG_GMAC_TX_DELAY << SC_ETXDC_OFFSET);
|
|
||||||
|
|
||||||
writel(reg, priv->sysctl_reg + 0x164);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
reg = readl(priv->sysctl_reg + 0x30);
|
|
||||||
|
|
||||||
reg = sun8i_emac_set_syscon_ephy(priv, reg);
|
reg = sun8i_emac_set_syscon_ephy(priv, reg);
|
||||||
|
|
||||||
@ -369,7 +358,7 @@ static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata,
|
|||||||
reg |= ((pdata->rx_delay_ps / 100) << SC_ERXDC_OFFSET)
|
reg |= ((pdata->rx_delay_ps / 100) << SC_ERXDC_OFFSET)
|
||||||
& SC_ERXDC_MASK;
|
& SC_ERXDC_MASK;
|
||||||
|
|
||||||
writel(reg, priv->sysctl_reg + 0x30);
|
writel(reg, priv->sysctl_reg);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -792,6 +781,7 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev)
|
|||||||
struct sun8i_eth_pdata *sun8i_pdata = dev_get_plat(dev);
|
struct sun8i_eth_pdata *sun8i_pdata = dev_get_plat(dev);
|
||||||
struct eth_pdata *pdata = &sun8i_pdata->eth_pdata;
|
struct eth_pdata *pdata = &sun8i_pdata->eth_pdata;
|
||||||
struct emac_eth_dev *priv = dev_get_priv(dev);
|
struct emac_eth_dev *priv = dev_get_priv(dev);
|
||||||
|
phys_addr_t syscon_base;
|
||||||
const fdt32_t *reg;
|
const fdt32_t *reg;
|
||||||
int node = dev_of_offset(dev);
|
int node = dev_of_offset(dev);
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
@ -837,13 +827,18 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev)
|
|||||||
__func__);
|
__func__);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
priv->sysctl_reg = fdt_translate_address((void *)gd->fdt_blob,
|
|
||||||
offset, reg);
|
syscon_base = fdt_translate_address((void *)gd->fdt_blob, offset, reg);
|
||||||
if (priv->sysctl_reg == FDT_ADDR_T_NONE) {
|
if (syscon_base == FDT_ADDR_T_NONE) {
|
||||||
debug("%s: Cannot find syscon base address\n", __func__);
|
debug("%s: Cannot find syscon base address\n", __func__);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (priv->variant == R40_GMAC)
|
||||||
|
priv->sysctl_reg = (void *)syscon_base + 0x164;
|
||||||
|
else
|
||||||
|
priv->sysctl_reg = (void *)syscon_base + 0x30;
|
||||||
|
|
||||||
pdata->phy_interface = -1;
|
pdata->phy_interface = -1;
|
||||||
priv->phyaddr = -1;
|
priv->phyaddr = -1;
|
||||||
priv->use_internal_phy = false;
|
priv->use_internal_phy = false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user