mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-01 06:42:31 +00:00
stmmac: rework the code to get the Synopsys ID (v3)
The Synopsys ID is now passed from the MAC core to the main. This info will be used for managing the HW cap register (supported in the new GMAC generations). Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7ac2905511
commit
f0b9d7865a
@ -230,6 +230,7 @@ struct mac_device_info {
|
|||||||
const struct stmmac_dma_ops *dma;
|
const struct stmmac_dma_ops *dma;
|
||||||
struct mii_regs mii; /* MII register Addresses */
|
struct mii_regs mii; /* MII register Addresses */
|
||||||
struct mac_link link;
|
struct mac_link link;
|
||||||
|
unsigned int synopsys_uid;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mac_device_info *dwmac1000_setup(void __iomem *ioaddr);
|
struct mac_device_info *dwmac1000_setup(void __iomem *ioaddr);
|
||||||
|
@ -224,10 +224,7 @@ static const struct stmmac_ops dwmac1000_ops = {
|
|||||||
struct mac_device_info *dwmac1000_setup(void __iomem *ioaddr)
|
struct mac_device_info *dwmac1000_setup(void __iomem *ioaddr)
|
||||||
{
|
{
|
||||||
struct mac_device_info *mac;
|
struct mac_device_info *mac;
|
||||||
u32 uid = readl(ioaddr + GMAC_VERSION);
|
u32 hwid = readl(ioaddr + GMAC_VERSION);
|
||||||
|
|
||||||
pr_info("\tDWMAC1000 - user ID: 0x%x, Synopsys ID: 0x%x\n",
|
|
||||||
((uid & 0x0000ff00) >> 8), (uid & 0x000000ff));
|
|
||||||
|
|
||||||
mac = kzalloc(sizeof(const struct mac_device_info), GFP_KERNEL);
|
mac = kzalloc(sizeof(const struct mac_device_info), GFP_KERNEL);
|
||||||
if (!mac)
|
if (!mac)
|
||||||
@ -241,6 +238,7 @@ struct mac_device_info *dwmac1000_setup(void __iomem *ioaddr)
|
|||||||
mac->link.speed = GMAC_CONTROL_FES;
|
mac->link.speed = GMAC_CONTROL_FES;
|
||||||
mac->mii.addr = GMAC_MII_ADDR;
|
mac->mii.addr = GMAC_MII_ADDR;
|
||||||
mac->mii.data = GMAC_MII_DATA;
|
mac->mii.data = GMAC_MII_DATA;
|
||||||
|
mac->synopsys_uid = hwid;
|
||||||
|
|
||||||
return mac;
|
return mac;
|
||||||
}
|
}
|
||||||
|
@ -188,6 +188,7 @@ struct mac_device_info *dwmac100_setup(void __iomem *ioaddr)
|
|||||||
mac->link.speed = 0;
|
mac->link.speed = 0;
|
||||||
mac->mii.addr = MAC_MII_ADDR;
|
mac->mii.addr = MAC_MII_ADDR;
|
||||||
mac->mii.data = MAC_MII_DATA;
|
mac->mii.data = MAC_MII_DATA;
|
||||||
|
mac->synopsys_uid = 0;
|
||||||
|
|
||||||
return mac;
|
return mac;
|
||||||
}
|
}
|
||||||
|
@ -763,6 +763,23 @@ static void stmmac_mmc_setup(struct stmmac_priv *priv)
|
|||||||
memset(&priv->mmc, 0, sizeof(struct stmmac_counters));
|
memset(&priv->mmc, 0, sizeof(struct stmmac_counters));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static u32 stmmac_get_synopsys_id(struct stmmac_priv *priv)
|
||||||
|
{
|
||||||
|
u32 hwid = priv->hw->synopsys_uid;
|
||||||
|
|
||||||
|
/* Only check valid Synopsys Id because old MAC chips
|
||||||
|
* have no HW registers where get the ID */
|
||||||
|
if (likely(hwid)) {
|
||||||
|
u32 uid = ((hwid & 0x0000ff00) >> 8);
|
||||||
|
u32 synid = (hwid & 0x000000ff);
|
||||||
|
|
||||||
|
pr_info("STMMAC - user ID: 0x%x, Synopsys ID: 0x%x\n",
|
||||||
|
uid, synid);
|
||||||
|
|
||||||
|
return synid;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* stmmac_open - open entry point of the driver
|
* stmmac_open - open entry point of the driver
|
||||||
* @dev : pointer to the device structure.
|
* @dev : pointer to the device structure.
|
||||||
@ -835,7 +852,8 @@ static int stmmac_open(struct net_device *dev)
|
|||||||
/* Initialize the MAC Core */
|
/* Initialize the MAC Core */
|
||||||
priv->hw->mac->core_init(priv->ioaddr);
|
priv->hw->mac->core_init(priv->ioaddr);
|
||||||
|
|
||||||
priv->rx_coe = priv->hw->mac->rx_coe(priv->ioaddr);
|
stmmac_get_synopsys_id(priv);
|
||||||
|
|
||||||
if (priv->rx_coe)
|
if (priv->rx_coe)
|
||||||
pr_info("stmmac: Rx Checksum Offload Engine supported\n");
|
pr_info("stmmac: Rx Checksum Offload Engine supported\n");
|
||||||
if (priv->plat->tx_coe)
|
if (priv->plat->tx_coe)
|
||||||
|
Loading…
Reference in New Issue
Block a user