pinctrl: rockchip: only map bank0-pull-region when pmu regmap missing
authorHeiko Stübner <heiko@sntech.de>
Mon, 5 May 2014 11:59:30 +0000 (13:59 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 9 May 2014 09:15:46 +0000 (11:15 +0200)
When the pmu registers are supplied through a syscon regmap we do not need
to map the registers ourself.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Max Schwarz <max.schwarz@online.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-rockchip.c

index 11ad6433034a3544c4b445c3f4a1432cc8ec5680..d6e240193e7e7709c0f2ceac84f1869c58289de6 100644 (file)
@@ -1464,21 +1464,29 @@ static int rockchip_get_bank_data(struct rockchip_pin_bank *bank,
         */
        if (of_device_is_compatible(bank->of_node,
                                    "rockchip,rk3188-gpio-bank0")) {
+               struct device_node *node;
 
                bank->bank_type = RK3188_BANK0;
 
-               if (of_address_to_resource(bank->of_node, 1, &res)) {
-                       dev_err(info->dev, "cannot find IO resource for bank\n");
-                       return -ENOENT;
-               }
+               node = of_parse_phandle(bank->of_node->parent,
+                                       "rockchip,pmu", 0);
+               if (!node) {
+                       if (of_address_to_resource(bank->of_node, 1, &res)) {
+                               dev_err(info->dev, "cannot find IO resource for bank\n");
+                               return -ENOENT;
+                       }
 
-               base = devm_ioremap_resource(info->dev, &res);
-               if (IS_ERR(base))
-                       return PTR_ERR(base);
-               rockchip_regmap_config.max_register = resource_size(&res) - 4;
-               rockchip_regmap_config.name = "rockchip,rk3188-gpio-bank0-pull";
-               bank->regmap_pull = devm_regmap_init_mmio(info->dev, base,
-                                                 &rockchip_regmap_config);
+                       base = devm_ioremap_resource(info->dev, &res);
+                       if (IS_ERR(base))
+                               return PTR_ERR(base);
+                       rockchip_regmap_config.max_register =
+                                                   resource_size(&res) - 4;
+                       rockchip_regmap_config.name =
+                                           "rockchip,rk3188-gpio-bank0-pull";
+                       bank->regmap_pull = devm_regmap_init_mmio(info->dev,
+                                                   base,
+                                                   &rockchip_regmap_config);
+               }
 
        } else {
                bank->bank_type = COMMON_BANK;