diff mbox

[RESEND,4/4] EDAC: add support for reduced-width Armada-XP SDRAM

Message ID 20170807014641.4003-5-chris.packham@alliedtelesis.co.nz (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Packham Aug. 7, 2017, 1:46 a.m. UTC
Some integrated Armada XP SoCs use a reduced pin count so the width of
the SDRAM interface is smaller than the traditional discrete SoCs. This
means that the definition of "full" and "half" width is further reduced.

Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
 drivers/edac/armada_xp_edac.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Borislav Petkov Aug. 11, 2017, 9:14 a.m. UTC | #1
On Mon, Aug 07, 2017 at 01:46:41PM +1200, Chris Packham wrote:
> Some integrated Armada XP SoCs use a reduced pin count so the width of
> the SDRAM interface is smaller than the traditional discrete SoCs. This
> means that the definition of "full" and "half" width is further reduced.
> 
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> ---
>  drivers/edac/armada_xp_edac.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/edac/armada_xp_edac.c b/drivers/edac/armada_xp_edac.c
> index 68e88b180928..d8edcaac87c0 100644
> --- a/drivers/edac/armada_xp_edac.c
> +++ b/drivers/edac/armada_xp_edac.c
> @@ -350,6 +350,9 @@ static int armada_xp_mc_edac_probe(struct platform_device *pdev)
>  	if (armada_xp_mc_edac_read_config(mci))
>  		return -EINVAL;
>  
> +	if (of_property_read_bool(pdev->dev.of_node, "marvell,reduced-width"))
> +		drvdata->width /= 2;

If the compiler doesn't already convert it to a shift on ARM, you
probably should do

		>>= 1;

here, just in case.

With that you can add my

Acked-by: Borislav Petkov <bp@suse.de>

and route it through an ARM tree.

Thx.
Chris Packham Aug. 13, 2017, 9:28 p.m. UTC | #2
On 11/08/17 21:14, Borislav Petkov wrote:
> On Mon, Aug 07, 2017 at 01:46:41PM +1200, Chris Packham wrote:
>> Some integrated Armada XP SoCs use a reduced pin count so the width of
>> the SDRAM interface is smaller than the traditional discrete SoCs. This
>> means that the definition of "full" and "half" width is further reduced.
>>
>> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
>> ---
>>   drivers/edac/armada_xp_edac.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/edac/armada_xp_edac.c b/drivers/edac/armada_xp_edac.c
>> index 68e88b180928..d8edcaac87c0 100644
>> --- a/drivers/edac/armada_xp_edac.c
>> +++ b/drivers/edac/armada_xp_edac.c
>> @@ -350,6 +350,9 @@ static int armada_xp_mc_edac_probe(struct platform_device *pdev)
>>   	if (armada_xp_mc_edac_read_config(mci))
>>   		return -EINVAL;
>>   
>> +	if (of_property_read_bool(pdev->dev.of_node, "marvell,reduced-width"))
>> +		drvdata->width /= 2;
> 
> If the compiler doesn't already convert it to a shift on ARM, you
> probably should do
> 
> 		>>= 1;
> 
> here, just in case.

Based on discussions around the first patch in this series the final 
version will probably be something like

   if (of_device_is_compatible(pdev->dev.of_node,
                               "marvell,98dx3236-sdram-controller")
           drvdata->width >>= 1;

> 
> With that you can add my
> 
> Acked-by: Borislav Petkov <bp@suse.de>
> 
> and route it through an ARM tree.

That may depend on where Jan's series lands. This is is the only patch 
that is dependent on it. Regardless it should be inert so aside from 
triggering checkpatch warnings about dt-bindings there would be no harm 
in this patch taking the long way round.

> 
> Thx.
>
diff mbox

Patch

diff --git a/drivers/edac/armada_xp_edac.c b/drivers/edac/armada_xp_edac.c
index 68e88b180928..d8edcaac87c0 100644
--- a/drivers/edac/armada_xp_edac.c
+++ b/drivers/edac/armada_xp_edac.c
@@ -350,6 +350,9 @@  static int armada_xp_mc_edac_probe(struct platform_device *pdev)
 	if (armada_xp_mc_edac_read_config(mci))
 		return -EINVAL;
 
+	if (of_property_read_bool(pdev->dev.of_node, "marvell,reduced-width"))
+		drvdata->width /= 2;
+
 	/* configure SBE threshold */
 	/* it seems that SBEs are not captured otherwise */
 	writel(1 << SDRAM_ERR_CTRL_ERR_THR_OFFSET,