Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751509AbdFGOvi (ORCPT ); Wed, 7 Jun 2017 10:51:38 -0400 Received: from mail-qt0-f173.google.com ([209.85.216.173]:32867 "EHLO mail-qt0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751382AbdFGOuS (ORCPT ); Wed, 7 Jun 2017 10:50:18 -0400 Date: Wed, 7 Jun 2017 10:50:14 -0400 From: Sean Paul To: Neil Armstrong Cc: airlied@linux.ie, daniel.vetter@ffwll.ch, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org Subject: Re: [PATCH] drm/meson: Fix driver bind when only CVBS is available Message-ID: <20170607145014.k3xjc3pwi43qvi5m@art_vandelay> References: <1496067352-8733-1-git-send-email-narmstrong@baylibre.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1496067352-8733-1-git-send-email-narmstrong@baylibre.com> User-Agent: NeoMutt/20170306-66-6ddb52-dirty (1.8.0) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2805 Lines: 85 On Mon, May 29, 2017 at 04:15:52PM +0200, Neil Armstrong wrote: > While introducing HDMI support, component matching on connectors node > were bypassed since no driver would actually bind on the DT node. > But when only a CVBS connector is present, only a single node is found > in the graph, but ignored and a NULL match table is given to the > component code. > > This code permits bypassing the components framework by binding directly > the DRM driver when no components needs to be loaded. > > Fixes: a41e82e6c457 ("drm/meson: Add support for components") > Signed-off-by: Neil Armstrong Hi Neil, Thanks for your patch, I've applied to drm-misc-fixes and will include it in this week's pull request. Sean > --- > drivers/gpu/drm/meson/meson_drv.c | 20 +++++++++++++++----- > 1 file changed, 15 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c > index 75382f5..10b227d 100644 > --- a/drivers/gpu/drm/meson/meson_drv.c > +++ b/drivers/gpu/drm/meson/meson_drv.c > @@ -152,7 +152,7 @@ static bool meson_vpu_has_available_connectors(struct device *dev) > .max_register = 0x1000, > }; > > -static int meson_drv_bind(struct device *dev) > +static int meson_drv_bind_master(struct device *dev, bool has_components) > { > struct platform_device *pdev = to_platform_device(dev); > struct meson_drm *priv; > @@ -233,10 +233,12 @@ static int meson_drv_bind(struct device *dev) > if (ret) > goto free_drm; > > - ret = component_bind_all(drm->dev, drm); > - if (ret) { > - dev_err(drm->dev, "Couldn't bind all components\n"); > - goto free_drm; > + if (has_components) { > + ret = component_bind_all(drm->dev, drm); > + if (ret) { > + dev_err(drm->dev, "Couldn't bind all components\n"); > + goto free_drm; > + } > } > > ret = meson_plane_create(priv); > @@ -276,6 +278,11 @@ static int meson_drv_bind(struct device *dev) > return ret; > } > > +static int meson_drv_bind(struct device *dev) > +{ > + return meson_drv_bind_master(dev, true); > +} > + > static void meson_drv_unbind(struct device *dev) > { > struct drm_device *drm = dev_get_drvdata(dev); > @@ -357,6 +364,9 @@ static int meson_drv_probe(struct platform_device *pdev) > count += meson_probe_remote(pdev, &match, np, remote); > } > > + if (count && !match) > + return meson_drv_bind_master(&pdev->dev, false); > + > /* If some endpoints were found, initialize the nodes */ > if (count) { > dev_info(&pdev->dev, "Queued %d outputs on vpu\n", count); > -- > 1.9.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Sean Paul, Software Engineer, Google / Chromium OS