video: exynos_dp: Use the generic PHY driver
PATCH v2 3/3 video: exynos_dp: Use the generic PHY driver
Use the generic PHY API instead of the platform callback to control the DP PHY. The 'phy_label' field is added to the platform data structure to allow PHY lookup on non-dt platforms.
--- .../devicetree/bindings/video/exynos_dp.txt | 17 --- drivers/video/exynos/exynos_dp_core.c | 118 ++------------------ drivers/video/exynos/exynos_dp_core.h | 2 + include/video/exynos_dp.h | 6 +- 4 files changed, 15 insertions(+), 128 deletions(-)
Documentation/devicetree/bindings/video/exynos_dp.txt +0 -17
@@ -1,17 +1,6 @@ The Exynos display port interface should be configured based on the type of panel connected to it. -We use two nodes: - -dp-controller node - -dptx-phy node(defined inside dp-controller node) - -For the DP-PHY initialization, we use the dptx-phy node. -Required properties for dptx-phy: - -reg: - Base address of DP PHY register. - -samsung,enable-mask: - The bit-mask used to enable/disable DP PHY. - For the Panel initialization, we read data from dp-controller node. Required properties for dp-controller: -compatible:
@@ -67,12 +56,6 @@ SOC specific portion: interrupt-parent = <&combiner>; clocks = <&clock 342>; clock-names = "dp"; - - dptx-phy { - reg = <0x10040720>; - samsung,enable-mask = <1>; - }; - }; Board Specific portion:
drivers/video/exynos/exynos_dp_core.c +11 -107
188 lines not on this page · raw message
drivers/video/exynos/exynos_dp_core.h +2 -0
@@ -42,6 +42,8 @@ struct exynos_dp_device {struct video_info *video_info;struct link_train link_train;struct work_struct hotplug_work; + +struct phy *phy; };/* exynos_dp_reg.c */
include/video/exynos_dp.h +2 -4
@@ -122,10 +122,8 @@ struct video_info { };struct exynos_dp_platdata { -struct video_info *video_info; - -void (*phy_init)(void ); -void (*phy_exit)(void ); +struct video_info *video_info; +const char *phy_label; };#endif /* _EXYNOS_DP_H */
Signature · 1 line
1.7.10.4
PATCH v2 3/3 video: exynos_dp: Use the generic PHY driver
Quoted 107 lines · Jingoo Han
Use the generic PHY API instead of the platform callback to control the DP PHY. The '
phy_label' field is added to the platform data structure to allow PHY lookup on non-dt platforms.Signed-off-by Jingoo Han <[email protected]>--- .../devicetree/bindings/video/exynos_dp.txt | 17 --- drivers/video/exynos/exynos_dp_core.c | 118 ++------------------ drivers/video/exynos/exynos_dp_core.h | 2 + include/video/exynos_dp.h | 6 +- 4 files changed, 15 insertions(+), 128 deletions(-)Documentation/devicetree/bindings/video/exynos_dp.txt +0
-17@@ -1,17 +1,6 @@ The Exynos display port interface should be configured based on the type of panel connected to it. -We use two nodes: - -dp-controller node - -dptx-phy node(defined inside dp-controller node) - -For the DP-PHY initialization, we use the dptx-phy node. -Required properties for dptx-phy: - -reg: - Base address of DP PHY register. - -samsung,enable-mask: - The bit-mask used to enable/disable DP PHY. - For the Panel initialization, we read data from dp-controller node. Required properties for dp-controller: -compatible:@@ -67,12 +56,6 @@ SOC specific portion: interrupt-parent = <&combiner>; clocks = <&clock 342>; clock-names = "dp"; - - dptx-phy { - reg = <0x10040720>; - samsung,enable-mask = <1>; - }; - }; Board Specific portion:drivers/video/exynos/exynos_dp_core.c +1
-44@@ -19,6 +19,7 @@#include <linux/interrupt.h> #include <linux/delay.h> #include <linux/of.h> +#include <linux/phy/phy.h> #include <video/exynos_dp.h> @@ -960,84 +961,15 @@ static struct exynos_dp_platdata *exynos_dp_dt_parse_pdata(struct device *dev)return ERR_PTR (-EINVAL ); } -return pd; -} - -static int exynos_dp_dt_parse_phydata (struct exynos_dp_device *dp) -{ -struct device_node *dp_phy_node =of_node_get (dp->dev->of_node); -u32 phy_base; -int ret =0 ; - - dp_phy_node =of_find_node_by_name (dp_phy_node,"dptx-phy" ); -if (!dp_phy_node) { -dev_err (dp->dev,"could not find dptx-phy node\n" ); -return -ENODEV ; - } - -if (of_property_read_u32 (dp_phy_node,"reg" , &phy_base)) { -dev_err (dp->dev,"failed to get reg for dptx-phy\n" ); - ret = -EINVAL ; - goto err; - } - -if (of_property_read_u32 (dp_phy_node,"samsung,enable-mask" , - &dp->enable_mask)) { -dev_err (dp->dev,"failed to get enable-mask for dptx-phy\n" ); - ret = -EINVAL ; - goto err; - } - - dp->phy_addr =ioremap (phy_base,SZ_4 ); -if (!dp->phy_addr) { -dev_err (dp->dev,"failed to ioremap dp-phy\n" ); - ret = -ENOMEM ; - goto err; - } - -err: -of_node_put (dp_phy_node); - -return ret; -} - -static void exynos_dp_phy_init (struct exynos_dp_device *dp) -{ -u32 reg;
drivers/video/exynos/exynos_dp_core.c static struct exynos_dp_platdata *exynos_dp_dt_parse_pdata(struct device *dev) · line 964
Quoted 10 lines
drivers/video/exynos/exynos_dp_core.c +1
-9- - reg =__raw_readl (dp->phy_addr); - reg |= dp->enable_mask; -__raw_writel (reg, dp->phy_addr); -} - -static void exynos_dp_phy_exit (struct exynos_dp_device *dp) -{ -u32 reg; + pd->phy_label ="dp" ;
only the label, which I would use 'display-port'. Other than that:
Signature · 8 lines
balbi -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130628/149b1753/attachment.sig>
PATCH v2 3/3 video: exynos_dp: Use the generic PHY driver
Quoted 36 lines · Felipe Balbi
Quoted 35 lines · Jingoo Han
Use the generic PHY API instead of the platform callback to control the DP PHY. The '
phy_label' field is added to the platform data structure to allow PHY lookup on non-dt platforms.Signed-off-by Jingoo Han <[email protected]>--- .../devicetree/bindings/video/exynos_dp.txt | 17 --- drivers/video/exynos/exynos_dp_core.c | 118 ++------------------ drivers/video/exynos/exynos_dp_core.h | 2 + include/video/exynos_dp.h | 6 +- 4 files changed, 15 insertions(+), 128 deletions(-)Documentation/devicetree/bindings/video/exynos_dp.txt +0
-11@@ -1,17 +1,6 @@ The Exynos display port interface should be configured based on the type of panel connected to it. -We use two nodes: - -dp-controller node - -dptx-phy node(defined inside dp-controller node) - -For the DP-PHY initialization, we use the dptx-phy node. -Required properties for dptx-phy: - -reg: - Base address of DP PHY register. - -samsung,enable-mask: - The bit-mask used to enable/disable DP PHY. - For the Panel initialization, we read data from dp-controller node. Required properties for dp-controller: -compatible:@@ -67,12 +56,6 @@ SOC specific portion:
Quoted 8 lines
Documentation/devicetree/bindings/video/exynos_dp.txt SOC specific portion: · line 74
Quoted 8 lines
Documentation/devicetree/bindings/video/exynos_dp.txt +0
-5interrupt-parent = <&combiner>; clocks = <&clock 342>; clock-names = "dp"; - - dptx-phy { - reg = <0x10040720>; - samsung,enable-mask = <1>; - };
I've an issue here you break dt compatibilty
Best Regards,
J.
PATCH v2 3/3 video: exynos_dp: Use the generic PHY driver
Hi,
Quoted 8 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 7 lines · Felipe Balbi
Quoted 7 lines · Jingoo Han
Quoted 6 lines
Quoted 6 lines
Use the generic PHY API instead of the platform callback to control the DP PHY. The '
phy_label' field is added to the platform data structure to allow PHY lookup on non-dt platforms.Signed-off-by Jingoo Han <[email protected]>---
[...]
Quoted 25 lines
Quoted 25 lines
Quoted 25 lines
Quoted 25 lines
Quoted 25 lines
Documentation/devicetree/bindings/video/exynos_dp.txt +0
-11@@ -1,17 +1,6 @@ The Exynos display port interface should be configured based on the type of panel connected to it. -We use two nodes: - -dp-controller node - -dptx-phy node(defined inside dp-controller node) - -For the DP-PHY initialization, we use the dptx-phy node. -Required properties for dptx-phy: - -reg: - Base address of DP PHY register. - -samsung,enable-mask: - The bit-mask used to enable/disable DP PHY. - For the Panel initialization, we read data from dp-controller node. Required properties for dp-controller: -compatible:@@ -67,12 +56,6 @@ SOC specific portion: interrupt-parent = <&combiner>; clocks = <&clock 342>;
Quoted 8 lines
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines
Documentation/devicetree/bindings/video/exynos_dp.txt SOC specific portion: · line 74
Quoted 6 lines
Documentation/devicetree/bindings/video/exynos_dp.txt +0
-5clock-names = "dp"; - - dptx-phy { - reg = <0x10040720>; - samsung,enable-mask = <1>; - };I've an issue here you break dt compatibilty
Indeed. Ideally the PHYs should be detachable from the controllers. I'd assume such a change could be acceptable, given that the driver still supports the original binding.
--
Thanks,
Sylwester