diff mbox series

[06/10] arm: mvebu: clearfog: Add config for 2GB SOM

Message ID 20200111193639.19022-6-mrjoel@lixil.net
State New
Headers show
Series [01/10] arm: mvebu: fix SerDes table alignment | expand

Commit Message

Joel Johnson Jan. 11, 2020, 7:36 p.m. UTC
While 1GB SOM parts are much more common, provide a build config
option for supporting parts with 2GB.

Signed-off-by: Joel Johnson <mrjoel at lixil.net>
---

 board/solidrun/clearfog/Kconfig    | 6 ++++++
 board/solidrun/clearfog/clearfog.c | 8 ++++++++
 2 files changed, 14 insertions(+)

Comments

Baruch Siach Jan. 12, 2020, 10:33 a.m. UTC | #1
Hi Joel,

On Sat, Jan 11 2020, Joel Johnson wrote:
> While 1GB SOM parts are much more common, provide a build config
> option for supporting parts with 2GB.
>
> Signed-off-by: Joel Johnson <mrjoel at lixil.net>
> ---
>
>  board/solidrun/clearfog/Kconfig    | 6 ++++++
>  board/solidrun/clearfog/clearfog.c | 8 ++++++++
>  2 files changed, 14 insertions(+)
>
> diff --git a/board/solidrun/clearfog/Kconfig b/board/solidrun/clearfog/Kconfig
> index 53f01daf7a..fd880ee591 100644
> --- a/board/solidrun/clearfog/Kconfig
> +++ b/board/solidrun/clearfog/Kconfig
> @@ -31,4 +31,10 @@ config CLEARFOG_SFP_25GB
>  	 SGMII connection (requires a supporting SFP). By default, transfer speed
>  	 of 1.25 Gbps is used, suitable for a more common 1 Gbps SFP module.
>
> +config CLEARFOG_2GB_SOM
> +	bool "Configure for a SOM with 2GB RAM"
> +	help
> +	 Enable support for the 2GB RAM SOM variant. If this option is not
> +	 enabled then the more common 1GB version will be used.
> +
>  endmenu
> diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c
> index 247785ac56..38f411b942 100644
> --- a/board/solidrun/clearfog/clearfog.c
> +++ b/board/solidrun/clearfog/clearfog.c
> @@ -67,11 +67,19 @@ static struct mv_ddr_topology_map board_topology_map = {
>  	DEBUG_LEVEL_ERROR,
>  	0x1, /* active interfaces */
>  	/* cs_mask, mirror, dqs_swap, ck_swap X PUPs */
> +#if defined (CONFIG_CLEARFOG_2GB_SOM)
> +	{ { { {0x3, 0, 0, 0},
> +	      {0x3, 0, 0, 0},
> +	      {0x3, 0, 0, 0},
> +	      {0x3, 0, 0, 0},
> +	      {0x3, 0, 0, 0} },

That can only work for 2GB SOMs with twin-die RAM configuration. SOMs
with single-die RAM need MV_DDR_DIE_CAP_8GBIT in the mem_size field
instead. See board/kobol/helios4/helios4.c. See also

  https://patchwork.ozlabs.org/patch/1200332/

You should also adjust the ODT configuration to assert M_ODT[0] of both
chip-selects, since only M_ODT[0] is connected on the A388 SOM. See the
comment I added to the cherry-picked commit log in

  https://github.com/SolidRun/u-boot/commit/ab15b2d5b6ee50c106628dc0aa5943747a5dd772

Wrong ODT configuration might cause memory corruption in high RAM
traffic load.

I have a patch adding support for per-board ODT configuration. I have
not posted it yet to the list.

baruch

> +#else
>  	{ { { {0x1, 0, 0, 0},
>  	      {0x1, 0, 0, 0},
>  	      {0x1, 0, 0, 0},
>  	      {0x1, 0, 0, 0},
>  	      {0x1, 0, 0, 0} },
> +#endif
>  	    SPEED_BIN_DDR_1600K,	/* speed_bin */
>  	    MV_DDR_DEV_WIDTH_16BIT,	/* memory_width */
>  	    MV_DDR_DIE_CAP_4GBIT,	/* mem_size */


--
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
Joel Johnson Jan. 12, 2020, 3:48 p.m. UTC | #2
On 2020-01-12 03:33, Baruch Siach wrote:
> Hi Joel,
> 
> On Sat, Jan 11 2020, Joel Johnson wrote:
>> While 1GB SOM parts are much more common, provide a build config
>> option for supporting parts with 2GB.
>> 
>> Signed-off-by: Joel Johnson <mrjoel at lixil.net>
>> ---
>> 
>>  board/solidrun/clearfog/Kconfig    | 6 ++++++
>>  board/solidrun/clearfog/clearfog.c | 8 ++++++++
>>  2 files changed, 14 insertions(+)
>> 
>> diff --git a/board/solidrun/clearfog/Kconfig 
>> b/board/solidrun/clearfog/Kconfig
>> index 53f01daf7a..fd880ee591 100644
>> --- a/board/solidrun/clearfog/Kconfig
>> +++ b/board/solidrun/clearfog/Kconfig
>> @@ -31,4 +31,10 @@ config CLEARFOG_SFP_25GB
>>  	 SGMII connection (requires a supporting SFP). By default, transfer 
>> speed
>>  	 of 1.25 Gbps is used, suitable for a more common 1 Gbps SFP module.
>> 
>> +config CLEARFOG_2GB_SOM
>> +	bool "Configure for a SOM with 2GB RAM"
>> +	help
>> +	 Enable support for the 2GB RAM SOM variant. If this option is not
>> +	 enabled then the more common 1GB version will be used.
>> +
>>  endmenu
>> diff --git a/board/solidrun/clearfog/clearfog.c 
>> b/board/solidrun/clearfog/clearfog.c
>> index 247785ac56..38f411b942 100644
>> --- a/board/solidrun/clearfog/clearfog.c
>> +++ b/board/solidrun/clearfog/clearfog.c
>> @@ -67,11 +67,19 @@ static struct mv_ddr_topology_map 
>> board_topology_map = {
>>  	DEBUG_LEVEL_ERROR,
>>  	0x1, /* active interfaces */
>>  	/* cs_mask, mirror, dqs_swap, ck_swap X PUPs */
>> +#if defined (CONFIG_CLEARFOG_2GB_SOM)
>> +	{ { { {0x3, 0, 0, 0},
>> +	      {0x3, 0, 0, 0},
>> +	      {0x3, 0, 0, 0},
>> +	      {0x3, 0, 0, 0},
>> +	      {0x3, 0, 0, 0} },
> 
> That can only work for 2GB SOMs with twin-die RAM configuration. SOMs
> with single-die RAM need MV_DDR_DIE_CAP_8GBIT in the mem_size field
> instead. See board/kobol/helios4/helios4.c. See also
> 
>   https://patchwork.ozlabs.org/patch/1200332/

That seems to only target the newer EEPROM TLV units which I don't 
believe I have (still pending final checking). As with the other patch, 
an option for manual predefinition at build time will still be needed as 
an alternate path.

> You should also adjust the ODT configuration to assert M_ODT[0] of both
> chip-selects, since only M_ODT[0] is connected on the A388 SOM. See the
> comment I added to the cherry-picked commit log in
> 
> 
> https://github.com/SolidRun/u-boot/commit/ab15b2d5b6ee50c106628dc0aa5943747a5dd772
> 
> Wrong ODT configuration might cause memory corruption in high RAM
> traffic load.
> 
> I have a patch adding support for per-board ODT configuration. I have
> not posted it yet to the list.

Sounds promising, any planned timeframe for readiness and posting of 
that patch? I may just remove this patch from this series pending the 
per-board ODT config ability.

Joel
Baruch Siach Jan. 12, 2020, 4:44 p.m. UTC | #3
Hi Joel,

On Sun, Jan 12 2020, Joel Johnson wrote:
> On 2020-01-12 03:33, Baruch Siach wrote:
>> On Sat, Jan 11 2020, Joel Johnson wrote:
>>> While 1GB SOM parts are much more common, provide a build config
>>> option for supporting parts with 2GB.
>>>
>>> Signed-off-by: Joel Johnson <mrjoel at lixil.net>
>>> ---
>>>
>>>  board/solidrun/clearfog/Kconfig    | 6 ++++++
>>>  board/solidrun/clearfog/clearfog.c | 8 ++++++++
>>>  2 files changed, 14 insertions(+)
>>>
>>> diff --git a/board/solidrun/clearfog/Kconfig
>>> b/board/solidrun/clearfog/Kconfig
>>> index 53f01daf7a..fd880ee591 100644
>>> --- a/board/solidrun/clearfog/Kconfig
>>> +++ b/board/solidrun/clearfog/Kconfig
>>> @@ -31,4 +31,10 @@ config CLEARFOG_SFP_25GB
>>>  	 SGMII connection (requires a supporting SFP). By default, transfer
>>> speed
>>>  	 of 1.25 Gbps is used, suitable for a more common 1 Gbps SFP module.
>>>
>>> +config CLEARFOG_2GB_SOM
>>> +	bool "Configure for a SOM with 2GB RAM"
>>> +	help
>>> +	 Enable support for the 2GB RAM SOM variant. If this option is not
>>> +	 enabled then the more common 1GB version will be used.
>>> +
>>>  endmenu
>>> diff --git a/board/solidrun/clearfog/clearfog.c
>>> b/board/solidrun/clearfog/clearfog.c
>>> index 247785ac56..38f411b942 100644
>>> --- a/board/solidrun/clearfog/clearfog.c
>>> +++ b/board/solidrun/clearfog/clearfog.c
>>> @@ -67,11 +67,19 @@ static struct mv_ddr_topology_map board_topology_map =
>>> {
>>>  	DEBUG_LEVEL_ERROR,
>>>  	0x1, /* active interfaces */
>>>  	/* cs_mask, mirror, dqs_swap, ck_swap X PUPs */
>>> +#if defined (CONFIG_CLEARFOG_2GB_SOM)
>>> +	{ { { {0x3, 0, 0, 0},
>>> +	      {0x3, 0, 0, 0},
>>> +	      {0x3, 0, 0, 0},
>>> +	      {0x3, 0, 0, 0},
>>> +	      {0x3, 0, 0, 0} },
>>
>> That can only work for 2GB SOMs with twin-die RAM configuration. SOMs
>> with single-die RAM need MV_DDR_DIE_CAP_8GBIT in the mem_size field
>> instead. See board/kobol/helios4/helios4.c. See also
>>
>>   https://patchwork.ozlabs.org/patch/1200332/
>
> That seems to only target the newer EEPROM TLV units which I don't believe I
> have (still pending final checking). As with the other patch, an option for
> manual predefinition at build time will still be needed as an alternate path.

In linking to this patch I only meant to demonstrate
MV_DDR_DIE_CAP_8GBIT.

A388 SOMs of rev 2.0 have no EEPROM.

>> You should also adjust the ODT configuration to assert M_ODT[0] of both
>> chip-selects, since only M_ODT[0] is connected on the A388 SOM. See the
>> comment I added to the cherry-picked commit log in
>>
>>
>> https://github.com/SolidRun/u-boot/commit/ab15b2d5b6ee50c106628dc0aa5943747a5dd772
>>
>> Wrong ODT configuration might cause memory corruption in high RAM
>> traffic load.
>>
>> I have a patch adding support for per-board ODT configuration. I have
>> not posted it yet to the list.
>
> Sounds promising, any planned timeframe for readiness and posting of that
> patch?

I plan to post patches adding support for twin-die SOMs once the
previous series is merged.

> I may just remove this patch from this series pending the per-board ODT
> config ability.

You need this patch (or equivalent) for twin-die SOMs regardless of
per-board ODT.

baruch

--
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
diff mbox series

Patch

diff --git a/board/solidrun/clearfog/Kconfig b/board/solidrun/clearfog/Kconfig
index 53f01daf7a..fd880ee591 100644
--- a/board/solidrun/clearfog/Kconfig
+++ b/board/solidrun/clearfog/Kconfig
@@ -31,4 +31,10 @@  config CLEARFOG_SFP_25GB
 	 SGMII connection (requires a supporting SFP). By default, transfer speed
 	 of 1.25 Gbps is used, suitable for a more common 1 Gbps SFP module.
 
+config CLEARFOG_2GB_SOM
+	bool "Configure for a SOM with 2GB RAM"
+	help
+	 Enable support for the 2GB RAM SOM variant. If this option is not
+	 enabled then the more common 1GB version will be used.
+
 endmenu
diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c
index 247785ac56..38f411b942 100644
--- a/board/solidrun/clearfog/clearfog.c
+++ b/board/solidrun/clearfog/clearfog.c
@@ -67,11 +67,19 @@  static struct mv_ddr_topology_map board_topology_map = {
 	DEBUG_LEVEL_ERROR,
 	0x1, /* active interfaces */
 	/* cs_mask, mirror, dqs_swap, ck_swap X PUPs */
+#if defined (CONFIG_CLEARFOG_2GB_SOM)
+	{ { { {0x3, 0, 0, 0},
+	      {0x3, 0, 0, 0},
+	      {0x3, 0, 0, 0},
+	      {0x3, 0, 0, 0},
+	      {0x3, 0, 0, 0} },
+#else
 	{ { { {0x1, 0, 0, 0},
 	      {0x1, 0, 0, 0},
 	      {0x1, 0, 0, 0},
 	      {0x1, 0, 0, 0},
 	      {0x1, 0, 0, 0} },
+#endif
 	    SPEED_BIN_DDR_1600K,	/* speed_bin */
 	    MV_DDR_DEV_WIDTH_16BIT,	/* memory_width */
 	    MV_DDR_DIE_CAP_4GBIT,	/* mem_size */