Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1e747e59 authored by Heiko Stübner's avatar Heiko Stübner Committed by Linus Walleij
Browse files

pinctrl: rockchip: base regmap supplied by a syscon



This allows the basic registers of the general register files to be supplied
by a syscon instead of being mapped locally.

The GRF registers contain a lot more than pinctrl functions like dma, usb-phy
and general soc control and status registers, intermixed with the iomux, pull
and drive-strength registers.

Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
Tested-by: default avatarMax Schwarz <max.schwarz@online.de>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent a658efaa
Loading
Loading
Loading
Loading
+28 −19
Original line number Diff line number Diff line
@@ -1574,6 +1574,12 @@ static int rockchip_pinctrl_probe(struct platform_device *pdev)
	}
	info->ctrl = ctrl;

	node = of_parse_phandle(np, "rockchip,grf", 0);
	if (node) {
		info->regmap_base = syscon_node_to_regmap(node);
		if (IS_ERR(info->regmap_base))
			return PTR_ERR(info->regmap_base);
	} else {
		res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
		base = devm_ioremap_resource(&pdev->dev, res);
		if (IS_ERR(base))
@@ -1594,11 +1600,14 @@ static int rockchip_pinctrl_probe(struct platform_device *pdev)
			if (IS_ERR(base))
				return PTR_ERR(base);

		rockchip_regmap_config.max_register = resource_size(res) - 4;
			rockchip_regmap_config.max_register =
							resource_size(res) - 4;
			rockchip_regmap_config.name = "rockchip,pinctrl-pull";
		info->regmap_pull = devm_regmap_init_mmio(&pdev->dev, base,
			info->regmap_pull = devm_regmap_init_mmio(&pdev->dev,
						    base,
						    &rockchip_regmap_config);
		}
	}

	/* try to find the optional reference to the pmu syscon */
	node = of_parse_phandle(np, "rockchip,pmu", 0);