misc: sram: add optional ioremap without write combining
authorMarcin Wojtas <mw@semihalf.com>
Mon, 14 Mar 2016 08:38:56 +0000 (09:38 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Mar 2016 16:19:45 +0000 (12:19 -0400)
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@semihalf.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/devicetree/bindings/sram/sram.txt
drivers/misc/sram.c

index 42ee9438b77162ea8e9c5eb4b38468c88c92258e..227e3a341af1e2b525a4c59a3bc842041ddff1c3 100644 (file)
@@ -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
index 736dae715dbf751c4b03eeaae1cd629c422aba96..69cdabea9c03de62adc593c1b33a6d7f32543e4d 100644 (file)
@@ -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);