Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-10 Thread Sergei Shtylyov

On 12/10/2017 03:20 PM, Sergei Shtylyov wrote:

[...]


The reset looks good...


  Sorry, I meant to type "rest". :-)

MBR, Sergei


Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-10 Thread Sergei Shtylyov

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 
---
  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   = 0x0002, /* 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  = 0x0f0f,

like on R-Car gen1 SoCs...

[...]

   The reset looks good...

MBR, Sergei


Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-10 Thread Sergei Shtylyov

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


Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-08 Thread Thomas Petazzoni
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
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com


Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-05 Thread David Miller
From: Sergei Shtylyov 
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.


Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-05 Thread Sergei Shtylyov

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


Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-05 Thread Sergei Shtylyov

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


Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-05 Thread Geert Uytterhoeven
On Mon, Dec 4, 2017 at 5:56 PM, 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. :-)

Google rej09b0501_7786hm.pdf

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@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


Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-04 Thread Thomas Petazzoni
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
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com


Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-04 Thread Sergei Shtylyov

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 


Acked-by: Sergei Shtylyov 


   I actually meant:

Reviewed-by: Sergei Shtylyov 


[...]


MBR, Sergei


Re: [PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-04 Thread Sergei Shtylyov

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 


Acked-by: Sergei Shtylyov 

[...]

MBR, Sergei


[PATCH 1/2] net: sh_eth: add support for SH7786

2017-12-04 Thread Thomas Petazzoni
This commit adds the sh_eth_cpu_data structure that describes the
SH7786 variant of the IP.

Signed-off-by: Thomas Petazzoni 
---
 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   = 0x0002, /* 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)_data },
{ "sh7757-gether", (kernel_ulong_t)_data_giga },
{ "sh7763-gether", (kernel_ulong_t)_data },
+   { "sh7786-ether", (kernel_ulong_t)_data },
{ }
 };
 MODULE_DEVICE_TABLE(platform, sh_eth_id_table);
-- 
2.13.6