Message ID | CAKT61h8mcj1Gvp1i8xkM_NS2+fv1WhPtCQaFq7mi=i=JUqT4Uw@mail.gmail.com |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
hello On 10/9/2013 4:37 AM, Wan ZongShun wrote: > Hi Giuseppe, > > According to spec, if csr clock freq is 60-100Mhz, we have to set CR[5:2] = 0000 > but when I set the 'plat_dat.clk_csr = 0',acctually, this value is not used > since the driver code judge 'if (!priv->plat->clk_csr)' then go to dynamic tune > the MDC clock. So I add other judge condition. yes, and true in case of 60-100Mhz... I don't know if this was actually tested on SPEAr long time ago. Pls document the new platform field in the stmmac.txt or find a way to reuse the clk_csr (maybe not the case) peppe > > Signed-off-by: Wan Zongshun <mcuos.com@gmail.com> > --- > drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +- > include/linux/stmmac.h | 1 + > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > index 8d4ccd3..a849092c 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > @@ -2741,7 +2741,7 @@ struct stmmac_priv *stmmac_dvr_probe(struct > device *device, > * set the MDC clock dynamically according to the csr actual > * clock input. > */ > - if (!priv->plat->clk_csr) > + if (priv->plat->dynamic_mdc_clk_en) > stmmac_clk_csr_set(priv); > else > priv->clk_csr = priv->plat->clk_csr; > diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h > index bb5deb0..e2552ce 100644 > --- a/include/linux/stmmac.h > +++ b/include/linux/stmmac.h > @@ -101,6 +101,7 @@ struct plat_stmmacenet_data { > struct stmmac_mdio_bus_data *mdio_bus_data; > struct stmmac_dma_cfg *dma_cfg; > int clk_csr; > + int dynamic_mdc_clk_en; > int has_gmac; > int enh_desc; > int tx_coe; > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
2013/10/9 Giuseppe CAVALLARO <peppe.cavallaro@st.com>: > hello > > > On 10/9/2013 4:37 AM, Wan ZongShun wrote: >> >> Hi Giuseppe, >> >> According to spec, if csr clock freq is 60-100Mhz, we have to set CR[5:2] >> = 0000 >> but when I set the 'plat_dat.clk_csr = 0',acctually, this value is not >> used >> since the driver code judge 'if (!priv->plat->clk_csr)' then go to dynamic >> tune >> the MDC clock. So I add other judge condition. > > > yes, and true in case of 60-100Mhz... I don't know if this was actually > tested on SPEAr long time ago. > Hmmm, I am using other GBE chip based on synopsis IP, so I am testing it on other platform. > Pls document the new platform field in the stmmac.txt or find a way > to reuse the clk_csr (maybe not the case) Do you mean I need submit the other patch to add some comments for this new field? I can not find better way to fix this issue and make it more compatible to another platform. Wan. > > peppe > > >> >> Signed-off-by: Wan Zongshun <mcuos.com@gmail.com> >> --- >> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +- >> include/linux/stmmac.h | 1 + >> 2 files changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >> b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >> index 8d4ccd3..a849092c 100644 >> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >> @@ -2741,7 +2741,7 @@ struct stmmac_priv *stmmac_dvr_probe(struct >> device *device, >> * set the MDC clock dynamically according to the csr actual >> * clock input. >> */ >> - if (!priv->plat->clk_csr) >> + if (priv->plat->dynamic_mdc_clk_en) >> stmmac_clk_csr_set(priv); >> else >> priv->clk_csr = priv->plat->clk_csr; >> diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h >> index bb5deb0..e2552ce 100644 >> --- a/include/linux/stmmac.h >> +++ b/include/linux/stmmac.h >> @@ -101,6 +101,7 @@ struct plat_stmmacenet_data { >> struct stmmac_mdio_bus_data *mdio_bus_data; >> struct stmmac_dma_cfg *dma_cfg; >> int clk_csr; >> + int dynamic_mdc_clk_en; >> int has_gmac; >> int enh_desc; >> int tx_coe; >> >
On 10/9/2013 5:02 PM, Wan ZongShun wrote: > 2013/10/9 Giuseppe CAVALLARO <peppe.cavallaro@st.com>: >> hello >> >> >> On 10/9/2013 4:37 AM, Wan ZongShun wrote: >>> >>> Hi Giuseppe, >>> >>> According to spec, if csr clock freq is 60-100Mhz, we have to set CR[5:2] >>> = 0000 >>> but when I set the 'plat_dat.clk_csr = 0',acctually, this value is not >>> used >>> since the driver code judge 'if (!priv->plat->clk_csr)' then go to dynamic >>> tune >>> the MDC clock. So I add other judge condition. >> >> >> yes, and true in case of 60-100Mhz... I don't know if this was actually >> tested on SPEAr long time ago. >> > > Hmmm, I am using other GBE chip based on synopsis IP, so I am testing > it on other platform. > >> Pls document the new platform field in the stmmac.txt or find a way >> to reuse the clk_csr (maybe not the case) > > Do you mean I need submit the other patch to add some comments for > this new field? yes in the Documentation/networking/stmmac.txt peppe > I can not find better way to fix this issue and make it more > compatible to another platform. > > Wan. > >> >> peppe >> >> >>> >>> Signed-off-by: Wan Zongshun <mcuos.com@gmail.com> >>> --- >>> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +- >>> include/linux/stmmac.h | 1 + >>> 2 files changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >>> b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >>> index 8d4ccd3..a849092c 100644 >>> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >>> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >>> @@ -2741,7 +2741,7 @@ struct stmmac_priv *stmmac_dvr_probe(struct >>> device *device, >>> * set the MDC clock dynamically according to the csr actual >>> * clock input. >>> */ >>> - if (!priv->plat->clk_csr) >>> + if (priv->plat->dynamic_mdc_clk_en) >>> stmmac_clk_csr_set(priv); >>> else >>> priv->clk_csr = priv->plat->clk_csr; >>> diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h >>> index bb5deb0..e2552ce 100644 >>> --- a/include/linux/stmmac.h >>> +++ b/include/linux/stmmac.h >>> @@ -101,6 +101,7 @@ struct plat_stmmacenet_data { >>> struct stmmac_mdio_bus_data *mdio_bus_data; >>> struct stmmac_dma_cfg *dma_cfg; >>> int clk_csr; >>> + int dynamic_mdc_clk_en; >>> int has_gmac; >>> int enh_desc; >>> int tx_coe; >>> >> > > > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 8d4ccd3..a849092c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -2741,7 +2741,7 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device, * set the MDC clock dynamically according to the csr actual * clock input. */ - if (!priv->plat->clk_csr) + if (priv->plat->dynamic_mdc_clk_en) stmmac_clk_csr_set(priv); else priv->clk_csr = priv->plat->clk_csr; diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index bb5deb0..e2552ce 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h @@ -101,6 +101,7 @@ struct plat_stmmacenet_data { struct stmmac_mdio_bus_data *mdio_bus_data; struct stmmac_dma_cfg *dma_cfg; int clk_csr; + int dynamic_mdc_clk_en; int has_gmac; int enh_desc; int tx_coe;
Hi Giuseppe, According to spec, if csr clock freq is 60-100Mhz, we have to set CR[5:2] = 0000 but when I set the 'plat_dat.clk_csr = 0',acctually, this value is not used since the driver code judge 'if (!priv->plat->clk_csr)' then go to dynamic tune the MDC clock. So I add other judge condition. Signed-off-by: Wan Zongshun <mcuos.com@gmail.com> --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +- include/linux/stmmac.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-)