Re: [PATCH v6 net-next 01/10] misc: sram: add optional ioremap without write combining
From: Gregory CLEMENT
Date: Mon Mar 14 2016 - 04:44:50 EST
Hi Arnd,
I forgot to add you in CC for this patch.
What is your opinion about it?
Gregory
On lun., mars 14 2016, Gregory CLEMENT <gregory.clement@xxxxxxxxxxxxxxxxxx> wrote:
> From: Marcin Wojtas <mw@xxxxxxxxxxxx>
>
> Some SRAM users may require non-bufferable access to the memory, which is
> impossible, because devm_ioremap_wc() is used for setting sram->virt_base.
>
> This commit adds optional flag 'no-memory-wc', which allow to choose remap
> method, using DT property. Documentation is updated accordingly.
>
> Signed-off-by: Marcin Wojtas <mw@xxxxxxxxxxxx>
> ---
> Documentation/devicetree/bindings/sram/sram.txt | 5 +++++
> drivers/misc/sram.c | 5 ++++-
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/sram/sram.txt b/Documentation/devicetree/bindings/sram/sram.txt
> index 42ee9438b771..227e3a341af1 100644
> --- a/Documentation/devicetree/bindings/sram/sram.txt
> +++ b/Documentation/devicetree/bindings/sram/sram.txt
> @@ -25,6 +25,11 @@ Required properties in the sram node:
> - ranges : standard definition, should translate from local addresses
> within the sram to bus addresses
>
> +Optional properties in the sram node:
> +
> +- no-memory-wc : the flag indicating, that SRAM memory region has not to
> + be remapped as write combining. WC is used by default.
> +
> Required properties in the area nodes:
>
> - reg : iomem address range, relative to the SRAM range
> diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c
> index 736dae715dbf..69cdabea9c03 100644
> --- a/drivers/misc/sram.c
> +++ b/drivers/misc/sram.c
> @@ -360,7 +360,10 @@ static int sram_probe(struct platform_device *pdev)
> return -EBUSY;
> }
>
> - sram->virt_base = devm_ioremap_wc(sram->dev, res->start, size);
> + if (of_property_read_bool(pdev->dev.of_node, "no-memory-wc"))
> + sram->virt_base = devm_ioremap(sram->dev, res->start, size);
> + else
> + sram->virt_base = devm_ioremap_wc(sram->dev, res->start, size);
> if (IS_ERR(sram->virt_base))
> return PTR_ERR(sram->virt_base);
>
> --
> 2.5.0
>
--
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com