devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Shawn Guo <shawnguo@kernel.org>
To: Gustavo Padovan <gustavo@padovan.org>, Shawn Guo <shawn.guo@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	Baoyou Xie <xie.baoyou@zte.com.cn>,
	Emil Velikov <emil.l.velikov@gmail.com>,
	dri-devel@lists.freedesktop.org, Rob Herring <robh+dt@kernel.org>,
	Jun Nie <jun.nie@linaro.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 2/3] drm: zte: add initial vou drm driver
Date: Thu, 27 Oct 2016 23:32:54 +0800	[thread overview]
Message-ID: <20161027153128.GS30578@tiger> (raw)
In-Reply-To: <20161020122958.GC10198@joana>

Hi Gustavo,

Thanks for looking at the patch.

> 2016-10-20 Shawn Guo <shawn.guo@linaro.org>:
> 
> > It adds the initial ZTE VOU display controller DRM driver.  There are
> > still some features to be added, like overlay plane, scaling, and more
> > output devices support.  But it's already useful with dual CRTCs and
> > HDMI monitor working.
> >
> > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>

<snip>

> > +static void zx_hdmi_connector_destroy(struct drm_connector *connector)
> > +{
> > +     drm_connector_unregister(connector);
> 
> drm_connector_unregister() is not needed anymore. DRM core will call it
> for you.
> 
> > +     drm_connector_cleanup(connector);
> > +}
> > +
> > +static const struct drm_connector_funcs zx_hdmi_connector_funcs = {
> > +     .dpms = drm_atomic_helper_connector_dpms,
> > +     .fill_modes = drm_helper_probe_single_connector_modes,
> > +     .detect = zx_hdmi_connector_detect,
> > +     .destroy = zx_hdmi_connector_destroy,
> 
> Then here you can use drm_connector_cleanup() directly.

Okay, will do.

> > +     .reset = drm_atomic_helper_connector_reset,
> > +     .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> > +     .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> > +};

<snip>

> > +static void zx_crtc_atomic_begin(struct drm_crtc *crtc,
> > +                              struct drm_crtc_state *state)
> > +{
> > +     struct drm_pending_vblank_event *event = crtc->state->event;
> > +
> > +     if (!event)
> > +             return;
> > +
> > +     crtc->state->event = NULL;
> > +
> > +     spin_lock_irq(&crtc->dev->event_lock);
> > +     if (drm_crtc_vblank_get(crtc) == 0)
> > +             drm_crtc_arm_vblank_event(crtc, event);
> > +     else
> > +             drm_crtc_send_vblank_event(crtc, event);
> > +     spin_unlock_irq(&crtc->dev->event_lock);
> 
> I think you may want to send the vblank event to userspace after you
> commit your planes, and not before.

I guess you are suggesting that the code should be implemented in
.atomic_flush hook instead, right?

> > +}
> > +
> > +static const struct drm_crtc_helper_funcs zx_crtc_helper_funcs = {
> > +     .enable = zx_crtc_enable,
> > +     .disable = zx_crtc_disable,
> > +     .atomic_begin = zx_crtc_atomic_begin,
> > +};
> > +
> > +static const struct drm_crtc_funcs zx_crtc_funcs = {
> > +     .destroy = drm_crtc_cleanup,
> > +     .set_config = drm_atomic_helper_set_config,
> > +     .page_flip = drm_atomic_helper_page_flip,
> > +     .reset = drm_atomic_helper_crtc_reset,
> > +     .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
> > +     .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
> > +};
> > +
> > +static int zx_crtc_init(struct drm_device *drm, struct zx_vou_hw *vou,
> > +                     enum vou_chn_type chn_type)
> > +{
> > +     struct device *dev = vou->dev;
> > +     struct zx_layer_data data;
> > +     struct zx_crtc *zcrtc;
> > +     int ret;
> > +
> > +     zcrtc = devm_kzalloc(dev, sizeof(*zcrtc), GFP_KERNEL);
> > +     if (!zcrtc)
> > +             return -ENOMEM;
> > +
> > +     zcrtc->vou = vou;
> > +     zcrtc->chn_type = chn_type;
> > +
> > +     if (chn_type == VOU_CHN_MAIN) {
> > +             data.layer = vou->osd + MAIN_GL_OFFSET;
> > +             data.csc = vou->osd + MAIN_CSC_OFFSET;
> > +             data.hbsc = vou->osd + MAIN_HBSC_OFFSET;
> > +             data.rsz = vou->otfppu + MAIN_RSZ_OFFSET;
> > +             zcrtc->chnreg = vou->osd + OSD_MAIN_CHN;
> > +             zcrtc->regs = &main_crtc_regs;
> > +             zcrtc->bits = &main_crtc_bits;
> > +     } else {
> > +             data.layer = vou->osd + AUX_GL_OFFSET;
> > +             data.csc = vou->osd + AUX_CSC_OFFSET;
> > +             data.hbsc = vou->osd + AUX_HBSC_OFFSET;
> > +             data.rsz = vou->otfppu + AUX_RSZ_OFFSET;
> > +             zcrtc->chnreg = vou->osd + OSD_AUX_CHN;
> > +             zcrtc->regs = &aux_crtc_regs;
> > +             zcrtc->bits = &aux_crtc_bits;
> > +     }
> > +
> > +     zcrtc->pixclk = devm_clk_get(dev, (chn_type == VOU_CHN_MAIN) ?
> > +                                       "main_wclk" : "aux_wclk");
> > +     if (IS_ERR(zcrtc->pixclk)) {
> > +             ret = PTR_ERR(zcrtc->pixclk);
> > +             dev_err(dev, "failed to get pix clk: %d\n", ret);
> 
> DRM_ERROR() - here and in other places in your patch

I will follow Sean's suggestion to use DRM_DEV_* for these messages.

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

  reply	other threads:[~2016-10-27 15:32 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-20  7:30 [PATCH v3 0/3] Add initial ZTE VOU DRM/KMS driver Shawn Guo
2016-10-20  7:30 ` [PATCH v3 1/3] dt-bindings: add bindings doc for ZTE VOU display controller Shawn Guo
2016-10-20  7:30 ` [PATCH v3 2/3] drm: zte: add initial vou drm driver Shawn Guo
2016-10-20 12:29   ` Gustavo Padovan
2016-10-27 15:32     ` Shawn Guo [this message]
2016-10-20 13:58   ` Sean Paul
2016-10-27 14:42     ` Shawn Guo
     [not found] ` <1476948625-8521-1-git-send-email-shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-10-20  7:30   ` [PATCH v3 3/3] MAINTAINERS: add an entry for ZTE ZX DRM driver Shawn Guo

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=20161027153128.GS30578@tiger \
    --to=shawnguo@kernel.org \
    --cc=daniel.vetter@ffwll.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emil.l.velikov@gmail.com \
    --cc=gustavo@padovan.org \
    --cc=jun.nie@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=shawn.guo@linaro.org \
    --cc=xie.baoyou@zte.com.cn \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).