Thread (1 message) 1 message, 1 author, 2017-05-22

Re: [PATCH v2 07/15] MIPS: lantiq: Convert the xbar driver to a platform_driver

From: Andy Shevchenko <hidden>
Date: 2017-05-22 06:05:53
Also in: linux-mips, linux-spi, linux-watchdog

On Sun, May 21, 2017 at 4:09 PM, Hauke Mehrtens [off-list ref] wrote:
From: Martin Blumenstingl <martin.blumenstingl-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>

This allows using the xbar driver on ARX300 based SoCs which require the
same xbar setup as the xRX200 chipsets because the xbar driver
initialization is not guarded by an xRX200 specific
of_machine_is_compatible condition anymore. Additionally the new driver
takes a syscon phandle to configure the XBAR endianness bits in RCU
(before this was done in arch/mips/lantiq/xway/reset.c and also
guarded by an VRX200 specific if-statement).
+#include <linux/ioport.h>
I'm not sure you need this.
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_platform.h>
+#include <linux/of_address.h>
And these lines are under question, see below.
+#include <linux/regmap.h>
+
+#include <lantiq_soc.h>
This rather should be "lantiq_soc.h"
+static int ltq_xbar_probe(struct platform_device *pdev)
+{
+       struct device *dev = &pdev->dev;
+       struct device_node *np = dev->of_node;
+       struct resource res_xbar;
+       struct regmap *rcu_regmap;
+       void __iomem *xbar_membase;
+       u32 rcu_ahb_endianness_reg_offset;
+       u32 rcu_ahb_endianness_val;
+       int ret;
+
+       ret = of_address_to_resource(np, 0, &res_xbar);
+       if (ret) {
+               dev_err(dev, "Failed to get xbar resources");
+               return ret;
+       }
+
+       if (!devm_request_mem_region(dev, res_xbar.start,
+                                    resource_size(&res_xbar),
+               res_xbar.name)) {
+               dev_err(dev, "Failed to get xbar resources");
+               return -ENODEV;
+       }
+
+       xbar_membase = devm_ioremap_nocache(dev, res_xbar.start,
+                                               resource_size(&res_xbar));
+       if (!xbar_membase) {
+               dev_err(dev, "Failed to remap xbar resources");
+               return -ENODEV;
+       }
And what's wrong with traditional pattern

y = platform_get_resource(IOMEM);
x = devm_ioremap_resource(y);
if (IS_ERR(x))
 return PTR_ERR(x);

?
+
+       /* RCU configuration is optional */
+       rcu_regmap = syscon_regmap_lookup_by_phandle(np, "lantiq,rcu-syscon");
+       if (!IS_ERR_OR_NULL(rcu_regmap)) {
+               if (of_property_read_u32_index(np, "lantiq,rcu-syscon", 1,
+                       &rcu_ahb_endianness_reg_offset)) {
device_property_*() ?
+                       dev_err(&pdev->dev, "Failed to get RCU reg offset\n");
+                       return -EINVAL;
+               }
+
+               if (of_device_is_big_endian(np))
Do we have common helper for this (I mean resource provider agnostic one)?
+                       rcu_ahb_endianness_val = RCU_VR9_BE_AHB1S;
+               else
+                       rcu_ahb_endianness_val = 0;
+
+               if (regmap_update_bits(rcu_regmap,
+                                       rcu_ahb_endianness_reg_offset,
+                                       RCU_VR9_BE_AHB1S,
+                                       rcu_ahb_endianness_val))
+                       dev_warn(&pdev->dev,
+                               "Failed to configure RCU AHB endianness\n");
+       }
+
+       /* disable fpi burst */
+       ltq_w32_mask(XBAR_FPI_BURST_EN, 0,
+                    xbar_membase + XBAR_ALWAYS_LAST);
+
+       return 0;
+}
+builtin_platform_driver(xbar_driver);
Why it can't be module?

-- 
With Best Regards,
Andy Shevchenko
--
To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help