On Friday, June 28, 2013 6:27 PM, Kishon Vijay Abraham I wrote: > > Hi, > > On Friday 28 June 2013 11:34 AM, Jingoo Han wrote: > > On Friday, June 28, 2013 2:58 PM, Kishon Vijay Abraham I wrote: > >> > >> Hi, > >> > >> On Friday 28 June 2013 10:54 AM, Jingoo Han wrote: > >>> 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 <jg1.han@xxxxxxxxxxx> > >>> --- > >>> .../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(-) > >>> > >>> diff --git a/Documentation/devicetree/bindings/video/exynos_dp.txt > >> b/Documentation/devicetree/bindings/video/exynos_dp.txt > >>> index 84f10c1..a8320e3 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: > >>> @@ -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: > >>> diff --git a/drivers/video/exynos/exynos_dp_core.c b/drivers/video/exynos/exynos_dp_core.c > >>> index 12bbede..bac515b 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 <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; > >>> - > >>> - 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"; > >> > >> In the case of non-dt boot, this phy_label should have ideally come from > >> platform code. > > > > No, this is NOT the case of non-dt. > > > > 'pd->phy_label = "dp";' is included in exynos_dp_dt_parse_pdata(), > > not exynos_dp_phy_exit(). > > Also, exynos_dp_dt_parse_pdata() is called in the case of dt. > > ah.. right. Do you support non-dt boot. I dont see any modifications in > the platform code? Platform code for non-DT has not been added; thus, there is no modification in the platform code. Best regards, Jingoo Han > > Thanks > Kishon -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html