All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ajay kumar <ajaynumb@gmail.com>
To: Jingoo Han <jg1.han@samsung.com>
Cc: "linux-samsung-soc@vger.kernel.org"
	<linux-samsung-soc@vger.kernel.org>,
	Sean Paul <seanpaul@google.com>,
	abrestic@chromium.org, sunil joshi <joshi@samsung.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	a.hajda@samsung.com, Kyungmin Park <kyungmin.park@samsung.com>,
	treding@nvidia.com, Prashanth G <prashanth.g@samsung.com>,
	Ajay Kumar <ajaykumar.rs@samsung.com>,
	Rahul Sharma <rahul.sharma@samsung.com>
Subject: Re: [PATCH 7/7] drm/bridge: ptn3460: add drm_panel controls
Date: Sat, 19 Apr 2014 01:25:27 +0530	[thread overview]
Message-ID: <CAEC9eQOxePZtQwCF=17rKDFFFgXSQxVUM_y2P1pFwYGC1tiyjA@mail.gmail.com> (raw)
In-Reply-To: <000501cf5ae8$27f19510$77d4bf30$%han@samsung.com>


[-- Attachment #1.1: Type: text/plain, Size: 7081 bytes --]

Hi Jingoo,

On Fri, Apr 18, 2014 at 2:55 PM, Jingoo Han <jg1.han@samsung.com> wrote:

> On Wednesday, April 16, 2014 11:33 PM, Ajay Kumar wrote:
> >
> > attach ptn3460 connector to drm_panel and support drm_panel routines,
> > if a valid drm_panel object is passed to ptn3460_init.
> >
> > Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
> > ---
> >  drivers/gpu/drm/bridge/Kconfig          |  1 +
> >  drivers/gpu/drm/bridge/ptn3460.c        | 17 ++++++++++++++++-
> >  drivers/gpu/drm/exynos/exynos_dp_core.c | 15 +++++++++++----
> >  include/drm/bridge/ptn3460.h            |  6 ++++--
> >  4 files changed, 32 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/bridge/Kconfig
> b/drivers/gpu/drm/bridge/Kconfig
> > index 884923f..3bc6845 100644
> > --- a/drivers/gpu/drm/bridge/Kconfig
> > +++ b/drivers/gpu/drm/bridge/Kconfig
> > @@ -2,4 +2,5 @@ config DRM_PTN3460
> >       tristate "PTN3460 DP/LVDS bridge"
> >       depends on DRM
> >       select DRM_KMS_HELPER
> > +     select DRM_PANEL
> >       ---help---
> > diff --git a/drivers/gpu/drm/bridge/ptn3460.c
> b/drivers/gpu/drm/bridge/ptn3460.c
> > index f1d2afc..736c7a8 100644
> > --- a/drivers/gpu/drm/bridge/ptn3460.c
> > +++ b/drivers/gpu/drm/bridge/ptn3460.c
> > @@ -24,6 +24,7 @@
> >  #include "drm_edid.h"
> >  #include "drm_crtc.h"
> >  #include "drm_crtc_helper.h"
> > +#include <drm/drm_panel.h>
>
> Move '<drm/drm_panel.h>' as below.
>
> #include <linux/gpio.h>
> #include <linux/delay.h>
> +#include <drm/drm_panel.h>
>
> #include "drmP.h"
>
>
> >
> >  #include "bridge/ptn3460.h"
> >
> > @@ -38,6 +39,7 @@ struct ptn3460_bridge {
> >       struct i2c_client *client;
> >       struct drm_encoder *encoder;
> >       struct drm_bridge *bridge;
> > +     struct drm_panel *panel;
> >       struct edid *edid;
> >       int gpio_pd_n;
> >       int gpio_rst_n;
> > @@ -126,6 +128,8 @@ static void ptn3460_pre_enable(struct drm_bridge
> *bridge)
> >               gpio_set_value(ptn_bridge->gpio_rst_n, 1);
> >       }
> >
> > +     drm_panel_pre_enable(ptn_bridge->panel);
> > +
> >       /*
> >        * There's a bug in the PTN chip where it falsely asserts hotplug
> before
> >        * it is fully functional. We're forced to wait for the maximum
> start up
> > @@ -142,6 +146,9 @@ static void ptn3460_pre_enable(struct drm_bridge
> *bridge)
> >
> >  static void ptn3460_enable(struct drm_bridge *bridge)
> >  {
> > +     struct ptn3460_bridge *ptn_bridge = bridge->driver_private;
> > +
> > +     drm_panel_enable(ptn_bridge->panel);
> >  }
> >
> >  static void ptn3460_disable(struct drm_bridge *bridge)
> > @@ -153,6 +160,8 @@ static void ptn3460_disable(struct drm_bridge
> *bridge)
> >
> >       ptn_bridge->enabled = false;
> >
> > +     drm_panel_disable(ptn_bridge->panel);
> > +
> >       if (gpio_is_valid(ptn_bridge->gpio_rst_n))
> >               gpio_set_value(ptn_bridge->gpio_rst_n, 1);
> >
> > @@ -265,7 +274,8 @@ struct drm_connector_funcs ptn3460_connector_funcs =
> {
> >  };
> >
> >  int ptn3460_init(struct drm_device *dev, struct drm_encoder *encoder,
> > -             struct i2c_client *client, struct device_node *node)
> > +             struct i2c_client *client, struct device_node *node,
> > +             struct drm_panel *panel)
> >  {
> >       int ret;
> >       struct drm_bridge *bridge;
> > @@ -324,6 +334,11 @@ int ptn3460_init(struct drm_device *dev, struct
> drm_encoder *encoder,
> >               goto err;
> >       }
> >
> > +     if (panel) {
> > +             ptn_bridge->panel = panel;
> > +             drm_panel_attach(ptn_bridge->panel,
> &ptn_bridge->connector);
> > +     }
> > +
> >       bridge->driver_private = ptn_bridge;
> >       encoder->bridge = bridge;
> >       ptn_bridge->connector.polled = DRM_CONNECTOR_POLL_HPD;
> > diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c
> b/drivers/gpu/drm/exynos/exynos_dp_core.c
> > index 6beeab6..7f550b6 100644
> > --- a/drivers/gpu/drm/exynos/exynos_dp_core.c
> > +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c
> > @@ -989,13 +989,14 @@ static bool find_bridge(const char *compat, struct
> bridge_init *bridge)
> >
> >  /* returns the number of bridges attached */
> >  static int exynos_drm_attach_lcd_bridge(struct drm_device *dev,
> > -             struct drm_encoder *encoder)
> > +             struct drm_encoder *encoder, struct drm_panel *panel)
> >  {
> >       struct bridge_init bridge;
> >       int ret;
> >
> >       if (find_bridge("nxp,ptn3460", &bridge)) {
> > -             ret = ptn3460_init(dev, encoder, bridge.client,
> bridge.node);
> > +             ret = ptn3460_init(dev, encoder, bridge.client,
> bridge.node,
> > +
> panel);
>
> 'panel' is too far. Please fix it as below.
>
>         if (find_bridge("nxp,ptn3460", &bridge)) {
>                 ret = ptn3460_init(dev, encoder, bridge.client,
> bridge.node,
>                                    panel);
>
> Ok.

>
> >               if (!ret)
> >                       return 1;
> >       }
> > @@ -1012,9 +1013,15 @@ static int exynos_dp_create_connector(struct
> exynos_drm_display *display,
> >       dp->encoder = encoder;
> >
> >       /* Pre-empt DP connector creation if there's a bridge */
> > -     ret = exynos_drm_attach_lcd_bridge(dp->drm_dev, encoder);
> > -     if (ret)
> > +     ret = exynos_drm_attach_lcd_bridge(dp->drm_dev, encoder,
> dp->drm_panel);
> > +     if (ret) {
> > +             /* Also set "dp->drm_panel = NULL" so that we don't end up
> > +              * controlling panel power both in exynos_dp and bridge
> > +              * DPMS routines.
> > +              */
>
> Please fix it as below.
>
>  +              /*
>  +               * Also set "dp->drm_panel = NULL" so that we don't end up
>  +               * controlling panel power both in exynos_dp and bridge
>  +               * DPMS routines.
>  +               */
>
> Right. I used wrong style for commenting!


> Best regards,
> Jingoo Han
>
> > +             dp->drm_panel = NULL;
> >               return 0;
> > +     }
> >
> >       connector->polled = DRM_CONNECTOR_POLL_HPD;
> >
> > diff --git a/include/drm/bridge/ptn3460.h b/include/drm/bridge/ptn3460.h
> > index ff62344..570cebb 100644
> > --- a/include/drm/bridge/ptn3460.h
> > +++ b/include/drm/bridge/ptn3460.h
> > @@ -18,16 +18,18 @@ struct drm_device;
> >  struct drm_encoder;
> >  struct i2c_client;
> >  struct device_node;
> > +struct drm_panel;
> >
> >  #if defined(CONFIG_DRM_PTN3460) || defined(CONFIG_DRM_PTN3460_MODULE)
> >
> >  int ptn3460_init(struct drm_device *dev, struct drm_encoder *encoder,
> > -             struct i2c_client *client, struct device_node *node);
> > +             struct i2c_client *client, struct device_node *node,
> > +             struct drm_panel *panel);
> >  #else
> >
> >  static inline int ptn3460_init(struct drm_device *dev,
> >               struct drm_encoder *encoder, struct i2c_client *client,
> > -             struct device_node *node)
> > +             struct device_node *node, struct drm_panel *panel)
> >  {
> >       return 0;
> >  }
> > --
> > 1.8.1.2
>
>
Thanks and regards,
Ajay Kumar

[-- Attachment #1.2: Type: text/html, Size: 9746 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

      reply	other threads:[~2014-04-18 19:55 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-16 14:32 [PATCH 0/7] drm: exynos: few patches to enhance bridge chip support Ajay Kumar
2014-04-16 14:33 ` [PATCH 1/7] drm/exynos: dp: support hotplug detection via GPIO Ajay Kumar
2014-04-18  8:23   ` Jingoo Han
2014-04-18 19:33     ` Ajay kumar
2014-04-16 14:33 ` [PATCH 2/7] drm/panel: add pre_enable routine to drm panel Ajay Kumar
2014-04-16 14:33 ` [PATCH 3/7] drm/panel: Add driver for exynos_dp based panels Ajay Kumar
2014-04-18  8:47   ` Jingoo Han
2014-04-18 19:42     ` Ajay kumar
2014-04-21  0:34       ` Jingoo Han
2014-04-16 14:33 ` [PATCH 4/7] drm/exynos: add exynos_dp_panel driver registration to drm driver Ajay Kumar
2014-04-18  8:57   ` Jingoo Han
2014-04-18 19:50     ` Ajay kumar
2014-04-21  0:29       ` Jingoo Han
2014-04-16 14:33 ` [PATCH 5/7] drm/exynos: dp: modify driver to support drm_panel Ajay Kumar
2014-04-18  9:08   ` Jingoo Han
2014-04-18 19:52     ` Ajay kumar
2014-04-16 14:33 ` [PATCH 6/7] drm/bridge: ptn3460: enable polling based detection Ajay Kumar
2014-04-16 14:33 ` [PATCH 7/7] drm/bridge: ptn3460: add drm_panel controls Ajay Kumar
2014-04-18  9:25   ` Jingoo Han
2014-04-18 19:55     ` Ajay kumar [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEC9eQOxePZtQwCF=17rKDFFFgXSQxVUM_y2P1pFwYGC1tiyjA@mail.gmail.com' \
    --to=ajaynumb@gmail.com \
    --cc=a.hajda@samsung.com \
    --cc=abrestic@chromium.org \
    --cc=ajaykumar.rs@samsung.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jg1.han@samsung.com \
    --cc=joshi@samsung.com \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=prashanth.g@samsung.com \
    --cc=rahul.sharma@samsung.com \
    --cc=seanpaul@google.com \
    --cc=treding@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.