Message ID | 20171204141744.18599-2-thomas.petazzoni@free-electrons.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Geert Uytterhoeven |
Headers | show |
On 12/04/2017 05:17 PM, Thomas Petazzoni wrote: > This commit adds the sh_eth_cpu_data structure that describes the > SH7786 variant of the IP. The manual seems to be unavailable, so I have to trust you. :-) > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> [...] MBR, Sergei
On 12/04/2017 07:56 PM, Sergei Shtylyov wrote: >> This commit adds the sh_eth_cpu_data structure that describes the >> SH7786 variant of the IP. > > The manual seems to be unavailable, so I have to trust you. :-) > >> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> > > Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> I actually meant: Reviewed-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> > [...] MBR, Sergei
Hello, On Mon, 4 Dec 2017 19:56:35 +0300, Sergei Shtylyov wrote: > On 12/04/2017 05:17 PM, Thomas Petazzoni wrote: > > > This commit adds the sh_eth_cpu_data structure that describes the > > SH7786 variant of the IP. > > The manual seems to be unavailable, so I have to trust you. :-) Yes, sadly. However, if you tell me what to double check, I'd be happy to do so. Thanks! Thomas
On Mon, Dec 4, 2017 at 5:56 PM, Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> wrote: > On 12/04/2017 05:17 PM, Thomas Petazzoni wrote: > >> This commit adds the sh_eth_cpu_data structure that describes the >> SH7786 variant of the IP. > > > The manual seems to be unavailable, so I have to trust you. :-) Google rej09b0501_7786hm.pdf Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Hello! On 12/05/2017 10:49 AM, Thomas Petazzoni wrote: >>> This commit adds the sh_eth_cpu_data structure that describes the >>> SH7786 variant of the IP. >> >> The manual seems to be unavailable, so I have to trust you. :-) > > Yes, sadly. However, if you tell me what to double check, I'd be happy > to do so. I have the manual now, will check against it... DaveM, I'm retracting my ACK for the time being. > Thanks! > > Thomas MBR, Sergei
On 12/05/2017 10:04 PM, Sergei Shtylyov wrote: >>>> This commit adds the sh_eth_cpu_data structure that describes the >>>> SH7786 variant of the IP. >>> >>> The manual seems to be unavailable, so I have to trust you. :-) >> >> Yes, sadly. However, if you tell me what to double check, I'd be happy >> to do so. > > I have the manual now, will check against it... > DaveM, I'm retracting my ACK for the time being. Starting to look into the manual, the current patch is wrong. SH7786 SoC was probably the 1st one to use what we thought was R-Car specific register layout. Definite NAK on this version. >> Thanks! >> >> Thomas MBR, Sergei
From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Date: Tue, 5 Dec 2017 22:49:10 +0300 > On 12/05/2017 10:04 PM, Sergei Shtylyov wrote: > >>>>> This commit adds the sh_eth_cpu_data structure that describes the >>>>> SH7786 variant of the IP. >>>> >>>> The manual seems to be unavailable, so I have to trust you. :-) >>> >>> Yes, sadly. However, if you tell me what to double check, I'd be happy >>> to do so. >> I have the manual now, will check against it... >> DaveM, I'm retracting my ACK for the time being. > > Starting to look into the manual, the current patch is wrong. SH7786 > SoC was probably the 1st one to use what we thought was R-Car specific > register layout. Definite NAK on this version. Ok.
Hello, On Tue, 5 Dec 2017 22:49:10 +0300, Sergei Shtylyov wrote: > >>>> This commit adds the sh_eth_cpu_data structure that describes the > >>>> SH7786 variant of the IP. > >>> > >>> The manual seems to be unavailable, so I have to trust you. :-) > >> > >> Yes, sadly. However, if you tell me what to double check, I'd be happy > >> to do so. > > > > I have the manual now, will check against it... > > DaveM, I'm retracting my ACK for the time being. > > Starting to look into the manual, the current patch is wrong. SH7786 SoC > was probably the 1st one to use what we thought was R-Car specific register > layout. Definite NAK on this version. Thanks for the feedback. How do we proceed from there ? I don't have access to a lot of datasheets of the different Renesas SoCs, so it's not easy to figure out which IP variant the SH7786 is using compared to other Renesas SoCs. Just out of curiosity, which specific aspect makes you think the proposed patch is wrong ? Have you noticed a specific register or field that isn't compatible with SH_ETH_REG_FAST_SH4 layout ? Note that my patch makes Ethernet work in practice on SH7784, I have root over NFS working as we speak. This certainly doesn't mean that the patch is entirely correct, but it definitely means that the SH_ETH_REG_FAST_SH4 is close enough to what the SH7786 is using :-) Thanks! Thomas
Hello! On 12/08/2017 06:40 PM, Thomas Petazzoni wrote: >>>>>> This commit adds the sh_eth_cpu_data structure that describes the >>>>>> SH7786 variant of the IP. >>>>> >>>>> The manual seems to be unavailable, so I have to trust you. :-) >>>> >>>> Yes, sadly. However, if you tell me what to double check, I'd be happy >>>> to do so. >>> >>> I have the manual now, will check against it... >>> DaveM, I'm retracting my ACK for the time being. >> >> Starting to look into the manual, the current patch is wrong. SH7786 SoC >> was probably the 1st one to use what we thought was R-Car specific register >> layout. Definite NAK on this version. > > Thanks for the feedback. How do we proceed from there ? I don't have Please use SH_ETH_REG_FAST_RCAR for the register layout. > access to a lot of datasheets of the different Renesas SoCs, so it's > not easy to figure out which IP variant the SH7786 is using compared to > other Renesas SoCs. I've already done that for you. :-) > Just out of curiosity, which specific aspect makes you think the > proposed patch is wrong ? Total Ether register/bit documentation rehaul done for SH7786/R-Car -- including the register (and bit) rename and moving the registers to different offsets... > Have you noticed a specific register or field > that isn't compatible with SH_ETH_REG_FAST_SH4 layout ? There are surely SH4 registers that don't exist on SH7786 -- like BCFRR, RTRATE, RPADIR, RBWAR, RDFAR, TBRAR, TDFAR... > Note that my patch makes Ethernet work in practice on SH7784, I have > root over NFS working as we speak. I don't doubt it... > This certainly doesn't mean that the > patch is entirely correct, but it definitely means that the > SH_ETH_REG_FAST_SH4 is close enough to what the SH7786 is using :-) SH_ETH_REG_FAST_RCAR is definitely closer. :-) > Thanks! > > Thomas MBR, Sergei
On 12/04/2017 05:17 PM, Thomas Petazzoni wrote: > This commit adds the sh_eth_cpu_data structure that describes the > SH7786 variant of the IP. > > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> > --- > drivers/net/ethernet/renesas/sh_eth.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c > index 0074c5998481..a3c48b2a713c 100644 > --- a/drivers/net/ethernet/renesas/sh_eth.c > +++ b/drivers/net/ethernet/renesas/sh_eth.c > @@ -710,6 +710,30 @@ static struct sh_eth_cpu_data sh7724_data = { > .rpadir_value = 0x00020000, /* NET_IP_ALIGN assumed to be 2 */ > }; > > +static struct sh_eth_cpu_data sh7786_data = { > + .set_duplex = sh_eth_set_duplex, Hm, no bitrate switching? (ECMR.OLB is said to be unused indeed in the manual...) > + > + .register_type = SH_ETH_REG_FAST_SH4, SH_ETH_REG_FAST_RCAR. > + > + .ecsr_value = ECSR_PSRTO | ECSR_LCHNG | ECSR_ICD, > + .ecsipr_value = ECSIPR_PSRTOIP | ECSIPR_LCHNGIP | ECSIPR_ICDIP, Good enough (though magic packet interrupt should work too)... > + .eesipr_value = EESIPR_RFCOFIP | EESIPR_ADEIP | EESIPR_ECIIP | > + EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP | > + EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP | > + EESIPR_RMAFIP | EESIPR_RRFIP | > + EESIPR_RTLFIP | EESIPR_RTSFIP | > + EESIPR_PREIP | EESIPR_CERFIP, > + > + .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, > + .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | > + EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE, I think you also need: .fdr_value = 0x00000f0f, like on R-Car gen1 SoCs... [...] The reset looks good... MBR, Sergei
On 12/10/2017 03:20 PM, Sergei Shtylyov wrote:
[...]
> The reset looks good...
Sorry, I meant to type "rest". :-)
MBR, Sergei
On 12/10/2017 03:20 PM, Sergei Shtylyov wrote: >> This commit adds the sh_eth_cpu_data structure that describes the >> SH7786 variant of the IP. >> >> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> >> --- >> drivers/net/ethernet/renesas/sh_eth.c | 25 +++++++++++++++++++++++++ >> 1 file changed, 25 insertions(+) >> >> diff --git a/drivers/net/ethernet/renesas/sh_eth.c >> b/drivers/net/ethernet/renesas/sh_eth.c >> index 0074c5998481..a3c48b2a713c 100644 >> --- a/drivers/net/ethernet/renesas/sh_eth.c >> +++ b/drivers/net/ethernet/renesas/sh_eth.c >> @@ -710,6 +710,30 @@ static struct sh_eth_cpu_data sh7724_data = { >> .rpadir_value = 0x00020000, /* NET_IP_ALIGN assumed to be 2 */ >> }; >> +static struct sh_eth_cpu_data sh7786_data = { >> + .set_duplex = sh_eth_set_duplex, > > Hm, no bitrate switching? > (ECMR.OLB is said to be unused indeed in the manual...) I meant CXR20.OLB -- as it's called in the SH7786 and R-Car manuals. MBR, Sergei
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c index 0074c5998481..a3c48b2a713c 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c @@ -710,6 +710,30 @@ static struct sh_eth_cpu_data sh7724_data = { .rpadir_value = 0x00020000, /* NET_IP_ALIGN assumed to be 2 */ }; +static struct sh_eth_cpu_data sh7786_data = { + .set_duplex = sh_eth_set_duplex, + + .register_type = SH_ETH_REG_FAST_SH4, + + .ecsr_value = ECSR_PSRTO | ECSR_LCHNG | ECSR_ICD, + .ecsipr_value = ECSIPR_PSRTOIP | ECSIPR_LCHNGIP | ECSIPR_ICDIP, + .eesipr_value = EESIPR_RFCOFIP | EESIPR_ADEIP | EESIPR_ECIIP | + EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP | + EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP | + EESIPR_RMAFIP | EESIPR_RRFIP | + EESIPR_RTLFIP | EESIPR_RTSFIP | + EESIPR_PREIP | EESIPR_CERFIP, + + .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, + .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | + EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE, + + .apr = 1, + .mpr = 1, + .tpauser = 1, + .hw_swap = 1, +}; + static void sh_eth_set_rate_sh7757(struct net_device *ndev) { struct sh_eth_private *mdp = netdev_priv(ndev); @@ -3418,6 +3442,7 @@ static const struct platform_device_id sh_eth_id_table[] = { { "sh7757-ether", (kernel_ulong_t)&sh7757_data }, { "sh7757-gether", (kernel_ulong_t)&sh7757_data_giga }, { "sh7763-gether", (kernel_ulong_t)&sh7763_data }, + { "sh7786-ether", (kernel_ulong_t)&sh7786_data }, { } }; MODULE_DEVICE_TABLE(platform, sh_eth_id_table);
This commit adds the sh_eth_cpu_data structure that describes the SH7786 variant of the IP. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> --- drivers/net/ethernet/renesas/sh_eth.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)