video: exynos_dp: Use the generic PHY driver
PATCH v4 4/4 video: exynos_dp: Use the generic PHY driver
Use the generic PHY API instead of the platform callback to control the DP PHY.
--- .../devicetree/bindings/video/exynos_dp.txt | 23 +++++--------------- drivers/video/exynos/exynos_dp_core.c | 16 ++++++++++---- drivers/video/exynos/exynos_dp_core.h | 2 ++ 3 files changed, 20 insertions(+), 21 deletions(-)
Documentation/devicetree/bindings/video/exynos_dp.txt +6 -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:
@@ -25,6 +14,10 @@ Required properties for dp-controller: from common clock binding: handle to dp clock. -clock-names: from common clock binding: Shall be "dp". + -phys: + from general PHY binding: the phandle for the PHY device. + -phy-names: + from general PHY binding: Should be "dp". -interrupt-parent: phandle to Interrupt combiner node. -samsung,color-space:
@@ -67,12 +60,8 @@ SOC specific portion: interrupt-parent = <&combiner>; clocks = <&clock 342>; clock-names = "dp"; - - dptx-phy { - reg = <0x10040720>; - samsung,enable-mask = <1>; - }; - + phys = <&dp_phy>; + phy-names = "dp"; }; Board Specific portion:
drivers/video/exynos/exynos_dp_core.c +12 -4
@@ -19,6 +19,7 @@#include <linux/interrupt.h> #include <linux/delay.h> #include <linux/of.h> +#include <linux/phy/phy.h> #include "exynos_dp_core.h"
@@ -960,8 +961,11 @@ static int exynos_dp_dt_parse_phydata(struct exynos_dp_device *dp) 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 ; + dp->phy =devm_phy_get (dp->dev,"dp" ); +if (IS_ERR (dp->phy)) +return PTR_ERR (dp->phy); +else +return 0 ; }if (of_property_read_u32 (dp_phy_node,"reg" , &phy_base)) {
@@ -992,7 +996,9 @@ err:static void exynos_dp_phy_init (struct exynos_dp_device *dp) { -if (dp->phy_addr) { +if (dp->phy) { +phy_power_on (dp->phy); + }else if (dp->phy_addr) {u32 reg; reg =__raw_readl (dp->phy_addr);
@@ -1003,7 +1009,9 @@ static void exynos_dp_phy_init(struct exynos_dp_device *dp)static void exynos_dp_phy_exit (struct exynos_dp_device *dp) { -if (dp->phy_addr) { +if (dp->phy) { +phy_power_off (dp->phy); + }else if (dp->phy_addr) {u32 reg; reg =__raw_readl (dp->phy_addr);
drivers/video/exynos/exynos_dp_core.h +2 -0
@@ -151,6 +151,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 */
Signature · 1 line
1.7.10.4
PATCH v4 4/4 video: exynos_dp: Use the generic PHY driver
Hi Jingoo,
Quoted 21 lines · On Tuesday 02 of July 2013 17:42:49 Jingoo Han wrote:
Use the generic PHY API instead of the platform callback to control the DP PHY.
Signed-off-by Jingoo Han <[email protected]>--- .../devicetree/bindings/video/exynos_dp.txt | 23 +++++--------------- drivers/video/exynos/exynos_dp_core.c | 16 ++++++++++---- drivers/video/exynos/exynos_dp_core.h | 2 ++ 3 files changed, 20 insertions(+), 21 deletions(-)(quoted diff) +0
-0
b/Documentation/devicetree/bindings/video/exynos_dp.txtindex 84f10c1..022f4b6 100644Documentation/devicetree/bindings/video/exynos_dp.txt +0
-1@@ -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:
Documentation/devicetree/bindings/video/exynos_dp.txt line 14
Quoted 10 lines
Documentation/devicetree/bindings/video/exynos_dp.txt +0
-10- -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. -
I wonder if this part shouldn't stay here, just marked as deprecated, because compatibility with old dtbs must be preserved (and rest of the patch looks like it is).
Quoted 84 lines
Documentation/devicetree/bindings/video/exynos_dp.txt +6
-6For the Panel initialization, we read data from dp-controller node. Required properties for dp-controller: -compatible:@@ -25,6 +14,10 @@ Required properties for dp-controller: from common clock binding: handle to dp clock. -clock-names: from common clock binding: Shall be "dp". + -phys: + from general PHY binding: the phandle for the PHY device. + -phy-names: + from general PHY binding: Should be "dp". -interrupt-parent: phandle to Interrupt combiner node. -samsung,color-space:@@ -67,12 +60,8 @@ SOC specific portion: interrupt-parent = <&combiner>; clocks = <&clock 342>; clock-names = "dp"; - - dptx-phy { - reg = <0x10040720>; - samsung,enable-mask = <1>; - }; - + phys = <&dp_phy>; + phy-names = "dp"; }; Board Specific portion:(quoted diff) +0
-0
b/drivers/video/exynos/exynos_dp_core.cindex 05fed7d..5e1a715 100644drivers/video/exynos/exynos_dp_core.c +6
-2@@ -19,6 +19,7 @@#include <linux/interrupt.h> #include <linux/delay.h> #include <linux/of.h> +#include <linux/phy/phy.h> #include "exynos_dp_core.h" @@ -960,8 +961,11 @@ static int exynos_dp_dt_parse_phydata(struct exynos_dp_device *dp) 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 ; + dp->phy =devm_phy_get (dp->dev,"dp" ); +if (IS_ERR (dp->phy)) +return PTR_ERR (dp->phy); +else +return 0 ; }drivers/video/exynos/exynos_dp_core.c +6
-2if (of_property_read_u32 (dp_phy_node,"reg" , &phy_base)) {@@ -992,7 +996,9 @@ err:static void exynos_dp_phy_init (struct exynos_dp_device *dp) { -if (dp->phy_addr) { +if (dp->phy) { +phy_power_on (dp->phy); + }else if (dp->phy_addr) {u32 reg; reg =__raw_readl (dp->phy_addr);@@ -1003,7 +1009,9 @@ static void exynos_dp_phy_init(struct exynos_dp_device *dp)static void exynos_dp_phy_exit (struct exynos_dp_device *dp) { -if (dp->phy_addr) { +if (dp->phy) { +phy_power_off (dp->phy); + }else if (dp->phy_addr) {u32 reg;drivers/video/exynos/exynos_dp_core.c +0
-0reg =__raw_readl (dp->phy_addr);(quoted diff) +0
-0
b/drivers/video/exynos/exynos_dp_core.hindex 56cfec8..87804b6 100644
drivers/video/exynos/exynos_dp_core.h struct exynos_dp_device { · line 154
Quoted 4 lines
drivers/video/exynos/exynos_dp_core.h +1
-0@@ -151,6 +151,8 @@ struct exynos_dp_device {struct video_info *video_info;struct link_train link_train;struct work_struct hotplug_work; +
nit: unnecessary blank line
drivers/video/exynos/exynos_dp_core.h struct exynos_dp_device { · line 158
Quoted 4 lines
drivers/video/exynos/exynos_dp_core.h +1
-0+struct phy *phy; };/* exynos_dp_reg.c */
Otherwise looks good.
Best regards,
Tomasz
PATCH v4 4/4 video: exynos_dp: Use the generic PHY driver
Quoted 24 lines · Tomasz Figa
Hi Jingoo,
Quoted 20 lines · On Tuesday 02 of July 2013 17:42:49 Jingoo Han wrote:
Use the generic PHY API instead of the platform callback to control the DP PHY.
Signed-off-by Jingoo Han <[email protected]>--- .../devicetree/bindings/video/exynos_dp.txt | 23 +++++--------------- drivers/video/exynos/exynos_dp_core.c | 16 ++++++++++---- drivers/video/exynos/exynos_dp_core.h | 2 ++ 3 files changed, 20 insertions(+), 21 deletions(-)(quoted diff) +0
-0
b/Documentation/devicetree/bindings/video/exynos_dp.txtindex 84f10c1..022f4b6 100644Documentation/devicetree/bindings/video/exynos_dp.txt +0
-0@@ -1,17 +1,6 @@ The Exynos display port interface should be configured based on the type of panel connected to it.
Quoted 15 lines
Documentation/devicetree/bindings/video/exynos_dp.txt line 14
Quoted 11 lines
Documentation/devicetree/bindings/video/exynos_dp.txt +0
-11-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. -I wonder if this part shouldn't stay here, just marked as deprecated, because compatibility with old dtbs must be preserved (and rest of the patch looks like it is).
I would like to remove these properties from Documentation. But, I will mark it as deprecated as you suggested..
Best regards,
Jingoo Han