pinctrl: rockchip: only map bank0-pull-region when pmu regmap missing
From: Heiko Stuebner <heiko@...> Date: Tue, 29 Apr 2014 10:57:18 +0200
Commit-Message
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@...>
Patch-Comment
drivers/pinctrl/pinctrl-rockchip.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-)
Statistics
- 19 lines added
- 11 lines removed
Changes
---------------------- drivers/pinctrl/pinctrl-rockchip.c ----------------------
index 11ad643..d6e2401 100644
@@ -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;
+ 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);
+ }
} else {
bank->bank_type = COMMON_BANK;