Message ID | 1366248372-28791-1-git-send-email-nobuhiro.iwamatsu.yj@renesas.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Hello. On 18-04-2013 5:26, Nobuhiro Iwamatsu wrote: > Some sh-eth devices may have two ether devices in the inside. s/in the// > And the function of TSU is accessed from each ether device. > In this case, sh-eth need to remap address using devm_ioremap(), > without using devm_ioremap_resource(). Do you mean TSU region is shared between Ether devices? > acl_multi_reg You meant 'tsu_multi_reg'. > of sh_eth_cpu_data is used for this control. So, "multi" here means "shared"? > Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> [...] > diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c > index a7499cb..d9458ae 100644 > --- a/drivers/net/ethernet/renesas/sh_eth.c > +++ b/drivers/net/ethernet/renesas/sh_eth.c [...] > @@ -2743,7 +2747,12 @@ static int sh_eth_drv_probe(struct platform_device *pdev) > ret = -ENODEV; > goto out_release; > } > - mdp->tsu_addr = devm_ioremap_resource(&pdev->dev, rtsu); > + > + if (mdp->cd->tsu_multi_reg) > + mdp->tsu_addr = devm_ioremap(&pdev->dev, rtsu->start, > + resource_size(rtsu)); > + else > + mdp->tsu_addr = devm_ioremap_resource(&pdev->dev, rtsu); > if (IS_ERR(mdp->tsu_addr)) { > ret = PTR_ERR(mdp->tsu_addr); > goto out_release; > diff --git a/drivers/net/ethernet/renesas/sh_eth.h b/drivers/net/ethernet/renesas/sh_eth.h > index 1ddc9f2..6f9a997 100644 > --- a/drivers/net/ethernet/renesas/sh_eth.h > +++ b/drivers/net/ethernet/renesas/sh_eth.h > @@ -472,6 +472,7 @@ struct sh_eth_cpu_data { > unsigned tpauser:1; /* EtherC have TPAUSER */ > unsigned bculr:1; /* EtherC have BCULR */ > unsigned tsu:1; /* EtherC have TSU */ > + unsigned tsu_multi_reg:1; /* EtherC have TSU multi register */ Please indent the comment with tab(s) like all the others. > unsigned hw_swap:1; /* E-DMAC have DE bit in EDMR */ > unsigned rpadir:1; /* E-DMAC have RPADIR */ > unsigned no_trimd:1; /* E-DMAC DO NOT have TRIMD */ WBR, Sergei -- 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/04/18 23:48), Sergei Shtylyov wrote: > Hello. > > On 18-04-2013 5:26, Nobuhiro Iwamatsu wrote: > >> Some sh-eth devices may have two ether devices in the inside. > > s/in the// I will remove this. > >> And the function of TSU is accessed from each ether device. >> In this case, sh-eth need to remap address using devm_ioremap(), >> without using devm_ioremap_resource(). > > Do you mean TSU region is shared between Ether devices? > >> acl_multi_reg > > You meant 'tsu_multi_reg'. > >> of sh_eth_cpu_data is used for this control. > > So, "multi" here means "shared"? > Yes, your comment is right. I will change variable name from tsu_multi_reg to tsu_shared_reg. >> Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> > [...] > >> diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c >> index a7499cb..d9458ae 100644 >> --- a/drivers/net/ethernet/renesas/sh_eth.c >> +++ b/drivers/net/ethernet/renesas/sh_eth.c > [...] >> @@ -2743,7 +2747,12 @@ static int sh_eth_drv_probe(struct platform_device *pdev) >> ret = -ENODEV; >> goto out_release; >> } >> - mdp->tsu_addr = devm_ioremap_resource(&pdev->dev, rtsu); >> + >> + if (mdp->cd->tsu_multi_reg) >> + mdp->tsu_addr = devm_ioremap(&pdev->dev, rtsu->start, >> + resource_size(rtsu)); >> + else >> + mdp->tsu_addr = devm_ioremap_resource(&pdev->dev, rtsu); >> if (IS_ERR(mdp->tsu_addr)) { >> ret = PTR_ERR(mdp->tsu_addr); >> goto out_release; >> diff --git a/drivers/net/ethernet/renesas/sh_eth.h b/drivers/net/ethernet/renesas/sh_eth.h >> index 1ddc9f2..6f9a997 100644 >> --- a/drivers/net/ethernet/renesas/sh_eth.h >> +++ b/drivers/net/ethernet/renesas/sh_eth.h >> @@ -472,6 +472,7 @@ struct sh_eth_cpu_data { >> unsigned tpauser:1; /* EtherC have TPAUSER */ >> unsigned bculr:1; /* EtherC have BCULR */ >> unsigned tsu:1; /* EtherC have TSU */ >> + unsigned tsu_multi_reg:1; /* EtherC have TSU multi register */ > > Please indent the comment with tab(s) like all the others. OK, I will fix. Nobuhiro -- 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/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c index a7499cb..d9458ae 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c @@ -610,6 +610,7 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data_giga = { .no_trimd = 1, .no_ade = 1, .tsu = 1, + .tsu_multi_reg = 1, }; static struct sh_eth_cpu_data *sh_eth_get_cpu_data(struct sh_eth_private *mdp) @@ -691,6 +692,8 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { #if defined(CONFIG_CPU_SUBTYPE_SH7734) .hw_crc = 1, .select_mii = 1, +#else + .tsu_multi_reg = 1, #endif }; @@ -844,6 +847,7 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { static struct sh_eth_cpu_data sh_eth_my_cpu_data = { .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, .tsu = 1, + .tsu_multi_reg = 1, }; #endif @@ -2743,7 +2747,12 @@ static int sh_eth_drv_probe(struct platform_device *pdev) ret = -ENODEV; goto out_release; } - mdp->tsu_addr = devm_ioremap_resource(&pdev->dev, rtsu); + + if (mdp->cd->tsu_multi_reg) + mdp->tsu_addr = devm_ioremap(&pdev->dev, rtsu->start, + resource_size(rtsu)); + else + mdp->tsu_addr = devm_ioremap_resource(&pdev->dev, rtsu); if (IS_ERR(mdp->tsu_addr)) { ret = PTR_ERR(mdp->tsu_addr); goto out_release; diff --git a/drivers/net/ethernet/renesas/sh_eth.h b/drivers/net/ethernet/renesas/sh_eth.h index 1ddc9f2..6f9a997 100644 --- a/drivers/net/ethernet/renesas/sh_eth.h +++ b/drivers/net/ethernet/renesas/sh_eth.h @@ -472,6 +472,7 @@ struct sh_eth_cpu_data { unsigned tpauser:1; /* EtherC have TPAUSER */ unsigned bculr:1; /* EtherC have BCULR */ unsigned tsu:1; /* EtherC have TSU */ + unsigned tsu_multi_reg:1; /* EtherC have TSU multi register */ unsigned hw_swap:1; /* E-DMAC have DE bit in EDMR */ unsigned rpadir:1; /* E-DMAC have RPADIR */ unsigned no_trimd:1; /* E-DMAC DO NOT have TRIMD */
Some sh-eth devices may have two ether devices in the inside. And the function of TSU is accessed from each ether device. In this case, sh-eth need to remap address using devm_ioremap(), without using devm_ioremap_resource(). acl_multi_reg of sh_eth_cpu_data is used for this control. Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> --- drivers/net/ethernet/renesas/sh_eth.c | 11 ++++++++++- drivers/net/ethernet/renesas/sh_eth.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-)