aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Stuebner <heiko@sntech.de>2016-03-24 17:29:02 -0400
committerKishon Vijay Abraham I <kishon@ti.com>2016-04-13 09:03:05 -0400
commit332184adff50de9596f03735496c545e8bccc73e (patch)
tree70dbaab2e4ef99b7f7b874ad217fa6c532fd9520
parent0311c76e4722b8d6e5fa47eaee63c6552bcc74f5 (diff)
phy: rockchip-emmc: should be a child device of the GRF
The emmc-phy is fully enclosed in the general register files (GRF). Therefore as seen from the device-tree it shouldn't be a separate platform- device but instead a sub-device of the GRF - using the simply-mfd mechanism. The driver entered the kernel in the current merge-window, so we can still adapt the binding without needing a fallback, as the binding hasn't been released with a full kernel yet. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Rob Herring <robh@kernel.org> Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
-rw-r--r--Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt18
-rw-r--r--drivers/phy/phy-rockchip-emmc.c5
2 files changed, 15 insertions, 8 deletions
diff --git a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt b/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
index 61916f15a949..461e9580aa45 100644
--- a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
+++ b/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
@@ -3,17 +3,21 @@ Rockchip EMMC PHY
3 3
4Required properties: 4Required properties:
5 - compatible: rockchip,rk3399-emmc-phy 5 - compatible: rockchip,rk3399-emmc-phy
6 - rockchip,grf : phandle to the syscon managing the "general
7 register files"
8 - #phy-cells: must be 0 6 - #phy-cells: must be 0
9 - reg: PHY configure reg address offset in "general 7 - reg: PHY configure reg address offset in "general
10 register files" 8 register files"
11 9
12Example: 10Example:
13 11
14emmcphy: phy { 12
15 compatible = "rockchip,rk3399-emmc-phy"; 13grf: syscon@ff770000 {
16 rockchip,grf = <&grf>; 14 compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
17 reg = <0xf780>; 15
18 #phy-cells = <0>; 16...
17
18 emmcphy: phy@f780 {
19 compatible = "rockchip,rk3399-emmc-phy";
20 reg = <0xf780>;
21 #phy-cells = <0>;
22 };
19}; 23};
diff --git a/drivers/phy/phy-rockchip-emmc.c b/drivers/phy/phy-rockchip-emmc.c
index 887b4c27195f..6ebcf3e41c46 100644
--- a/drivers/phy/phy-rockchip-emmc.c
+++ b/drivers/phy/phy-rockchip-emmc.c
@@ -176,7 +176,10 @@ static int rockchip_emmc_phy_probe(struct platform_device *pdev)
176 struct regmap *grf; 176 struct regmap *grf;
177 unsigned int reg_offset; 177 unsigned int reg_offset;
178 178
179 grf = syscon_regmap_lookup_by_phandle(dev->of_node, "rockchip,grf"); 179 if (!dev->parent || !dev->parent->of_node)
180 return -ENODEV;
181
182 grf = syscon_node_to_regmap(dev->parent->of_node);
180 if (IS_ERR(grf)) { 183 if (IS_ERR(grf)) {
181 dev_err(dev, "Missing rockchip,grf property\n"); 184 dev_err(dev, "Missing rockchip,grf property\n");
182 return PTR_ERR(grf); 185 return PTR_ERR(grf);