Re: [PATCH V4 4/4] video: exynos_dp: Use the generic PHY driver

2013-07-07 Thread Jingoo Han
On Saturday, July 06, 2013 8:04 AM, Tomasz Figa wrote:
 
 Hi Jingoo,
 
 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 jg1@samsung.com
  ---
   .../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(-)
 
  diff --git a/Documentation/devicetree/bindings/video/exynos_dp.txt
  b/Documentation/devicetree/bindings/video/exynos_dp.txt index
  84f10c1..022f4b6 100644
  --- a/Documentation/devicetree/bindings/video/exynos_dp.txt
  +++ b/Documentation/devicetree/bindings/video/exynos_dp.txt
  @@ -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.
  -
 
 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


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V4 4/4] video: exynos_dp: Use the generic PHY driver

2013-07-05 Thread Tomasz Figa
Hi Jingoo,

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 jg1@samsung.com
 ---
  .../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(-)
 
 diff --git a/Documentation/devicetree/bindings/video/exynos_dp.txt
 b/Documentation/devicetree/bindings/video/exynos_dp.txt index
 84f10c1..022f4b6 100644
 --- a/Documentation/devicetree/bindings/video/exynos_dp.txt
 +++ b/Documentation/devicetree/bindings/video/exynos_dp.txt
 @@ -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.
 -

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).

  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:
 diff --git a/drivers/video/exynos/exynos_dp_core.c
 b/drivers/video/exynos/exynos_dp_core.c index 05fed7d..5e1a715 100644
 --- a/drivers/video/exynos/exynos_dp_core.c
 +++ b/drivers/video/exynos/exynos_dp_core.c
 @@ -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);
 diff --git a/drivers/video/exynos/exynos_dp_core.h
 b/drivers/video/exynos/exynos_dp_core.h index 56cfec8..87804b6 100644
 --- a/drivers/video/exynos/exynos_dp_core.h
 +++ b/drivers/video/exynos/exynos_dp_core.h
 @@ -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

 + struct phy  *phy;
  };
 
  /* exynos_dp_reg.c */

Otherwise looks good.

Reviewed-by: Tomasz Figa t.f...@samsung.com

Best regards,
Tomasz

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH V4 4/4] video: exynos_dp: Use the generic PHY driver

2013-07-02 Thread Jingoo Han
Use the generic PHY API instead of the platform callback to control
the DP PHY.

Signed-off-by: Jingoo Han jg1@samsung.com
---
 .../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(-)

diff --git a/Documentation/devicetree/bindings/video/exynos_dp.txt 
b/Documentation/devicetree/bindings/video/exynos_dp.txt
index 84f10c1..022f4b6 100644
--- a/Documentation/devicetree/bindings/video/exynos_dp.txt
+++ b/Documentation/devicetree/bindings/video/exynos_dp.txt
@@ -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:
diff --git a/drivers/video/exynos/exynos_dp_core.c 
b/drivers/video/exynos/exynos_dp_core.c
index 05fed7d..5e1a715 100644
--- a/drivers/video/exynos/exynos_dp_core.c
+++ b/drivers/video/exynos/exynos_dp_core.c
@@ -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);
diff --git a/drivers/video/exynos/exynos_dp_core.h 
b/drivers/video/exynos/exynos_dp_core.h
index 56cfec8..87804b6 100644
--- a/drivers/video/exynos/exynos_dp_core.h
+++ b/drivers/video/exynos/exynos_dp_core.h
@@ -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 */
-- 
1.7.10.4


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html