Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Heiko Stuebner and committed by
Kishon Vijay Abraham I
332184ad 0311c76e

+15 -8
+11 -7
Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
··· 3 3 4 4 Required properties: 5 5 - compatible: rockchip,rk3399-emmc-phy 6 - - rockchip,grf : phandle to the syscon managing the "general 7 - register files" 8 6 - #phy-cells: must be 0 9 7 - reg: PHY configure reg address offset in "general 10 8 register files" 11 9 12 10 Example: 13 11 14 - emmcphy: phy { 15 - compatible = "rockchip,rk3399-emmc-phy"; 16 - rockchip,grf = <&grf>; 17 - reg = <0xf780>; 18 - #phy-cells = <0>; 12 + 13 + grf: syscon@ff770000 { 14 + compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd"; 15 + 16 + ... 17 + 18 + emmcphy: phy@f780 { 19 + compatible = "rockchip,rk3399-emmc-phy"; 20 + reg = <0xf780>; 21 + #phy-cells = <0>; 22 + }; 19 23 };
+4 -1
drivers/phy/phy-rockchip-emmc.c
··· 176 176 struct regmap *grf; 177 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 183 if (IS_ERR(grf)) { 181 184 dev_err(dev, "Missing rockchip,grf property\n"); 182 185 return PTR_ERR(grf);