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

Commit dfb8fb96 authored by Giuseppe CAVALLARO's avatar Giuseppe CAVALLARO Committed by David S. Miller
Browse files

stmmac: add CSR Clock range selection



This patch adds the CSR Clock range selection.

Original patch from Johannes Stezenbach fixed the CSR
in the stmmac_mdio. We agreed to provide this through
the platform instead of.
Also thanks to Johannes for having tested it on ARM.

Signed-off-by: default avatarGiuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: default avatarJohannes Stezenbach <js@sig21.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 67c96608
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ struct stmmac_priv {
	unsigned int flow_ctrl;
	unsigned int pause;
	struct mii_bus *mii;
	int mii_clk_csr;

	u32 msg_enable;
	spinlock_t lock;
+1 −0
Original line number Diff line number Diff line
@@ -1704,6 +1704,7 @@ static int stmmac_dvr_probe(struct platform_device *pdev)
	plat_dat = pdev->dev.platform_data;
	priv->bus_id = plat_dat->bus_id;
	priv->pbl = plat_dat->pbl;	/* TLI */
	priv->mii_clk_csr = plat_dat->clk_csr;
	priv->is_gmac = plat_dat->has_gmac;	/* GMAC is on board */
	priv->enh_desc = plat_dat->enh_desc;
	priv->ioaddr = addr;
+3 −2
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ static int stmmac_mdio_read(struct mii_bus *bus, int phyaddr, int phyreg)
	int data;
	u16 regValue = (((phyaddr << 11) & (0x0000F800)) |
			((phyreg << 6) & (0x000007C0)));
	regValue |= MII_BUSY;	/* in case of GMAC */
	regValue |= MII_BUSY | ((priv->mii_clk_csr & 7) << 2);

	do {} while (((readl(priv->ioaddr + mii_address)) & MII_BUSY) == 1);
	writel(regValue, priv->ioaddr + mii_address);
@@ -85,7 +85,8 @@ static int stmmac_mdio_write(struct mii_bus *bus, int phyaddr, int phyreg,
	    (((phyaddr << 11) & (0x0000F800)) | ((phyreg << 6) & (0x000007C0)))
	    | MII_WRITE;

	value |= MII_BUSY;
	value |= MII_BUSY | ((priv->mii_clk_csr & 7) << 2);


	/* Wait until any existing MII operation is complete */
	do {} while (((readl(priv->ioaddr + mii_address)) & MII_BUSY) == 1);
+1 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
struct plat_stmmacenet_data {
	int bus_id;
	int pbl;
	int clk_csr;
	int has_gmac;
	int enh_desc;
	void (*fix_mac_speed)(void *priv, unsigned int speed);