[PATCH v2] MTD: lantiq: handle NO_XIP on cfi0001 flash

Hauke Mehrtens hauke at hauke-m.de
Mon Jun 6 14:38:38 PDT 2016


On 06/06/2016 11:10 PM, Jonas Gorski wrote:
> Hi,
> 
> On 6 June 2016 at 22:35, Hauke Mehrtens <hauke at hauke-m.de> wrote:
>> From: John Crispin <john at phrozen.org>
>>
>> This uses the same device tree attribute as physmap_of.c
>>
>> Signed-off-by: John Crispin <john at phrozen.org>
>> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>> ---
>>  drivers/mtd/maps/lantiq-flash.c | 6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/mtd/maps/lantiq-flash.c b/drivers/mtd/maps/lantiq-flash.c
>> index c8febb3..88fc6d9 100644
>> --- a/drivers/mtd/maps/lantiq-flash.c
>> +++ b/drivers/mtd/maps/lantiq-flash.c
>> @@ -137,7 +137,11 @@ ltq_mtd_probe(struct platform_device *pdev)
>>         if (!ltq_mtd->map)
>>                 return -ENOMEM;
>>
>> -       ltq_mtd->map->phys = ltq_mtd->res->start;
>> +       if (of_find_property(pdev->dev.of_node, "no-unaligned-direct-access",
>> +                            NULL))
>> +               ltq_mtd->map->phys = NO_XIP;
> 
> This does not what you think it does; i.e. preventing unaligned io
> memory accesses. All it's used for is in two drivers
> (cfi_cmdset_0001.c, lpddr_cmds.c) as a check whether to populate
> _point/_unpoint. But it does not prevent the map_read/map_write
> accessors from doing memcpy_{from,to}_io() with unaligned addresses,
> which at least on MIPS results in unaligned accesses with LWL/LWR.
> Which is what I assume you want to prevent.

Hi Jonas,

I want to upstream the patch from OpenWrt:
https://dev.openwrt.org/changeset/35992

I want to deactivate the execute-in-place (XIP) which this property does.

Hauke




More information about the linux-mtd mailing list