[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200820160649.54741194@coco.lan>
Date: Thu, 20 Aug 2020 16:06:49 +0200
From: Mauro Carvalho Chehab <mchehab+huawei@...nel.org>
To: Sam Ravnborg <sam@...nborg.org>
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Neil Armstrong <narmstrong@...libre.com>,
Xinliang Liu <xinliang.liu@...aro.org>,
Wanchun Zheng <zhengwanchun@...ilicon.com>,
linuxarm@...wei.com, dri-devel <dri-devel@...ts.freedesktop.org>,
Andrzej Hajda <a.hajda@...sung.com>,
Laurent Pinchart <laurent.pinchart@...asonboard.com>,
devel@...verdev.osuosl.org, Daniel Borkmann <daniel@...earbox.net>,
John Fastabend <john.fastabend@...il.com>,
Xiubin Zhang <zhangxiubin1@...wei.com>,
Wei Xu <xuwei5@...ilicon.com>, David Airlie <airlied@...ux.ie>,
Xinwei Kong <kong.kongxinwei@...ilicon.com>,
Tomi Valkeinen <tomi.valkeinen@...com>,
Bogdan Togorean <bogdan.togorean@...log.com>,
Laurentiu Palcu <laurentiu.palcu@....com>,
linux-media@...r.kernel.org, devicetree@...r.kernel.org,
Liwei Cai <cailiwei@...ilicon.com>,
Jesper Dangaard Brouer <hawk@...nel.org>,
Manivannan Sadhasivam <mani@...nel.org>,
Chen Feng <puck.chen@...ilicon.com>,
Alexei Starovoitov <ast@...nel.org>,
linaro-mm-sig@...ts.linaro.org, Rob Herring <robh+dt@...nel.org>,
Jakub Kicinski <kuba@...nel.org>, mauro.chehab@...wei.com,
Rob Clark <robdclark@...omium.org>,
linux-arm-kernel@...ts.infradead.org, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, Liuyao An <anliuyao@...wei.com>,
Rongrong Zou <zourongrong@...il.com>, bpf@...r.kernel.org,
"David S. Miller" <davem@...emloft.net>
Subject: Re: [PATCH 00/49] DRM driver for Hikey 970
Em Wed, 19 Aug 2020 19:35:58 +0200
Sam Ravnborg <sam@...nborg.org> escreveu:
I'm already handling the other comments from your review (I'll send a
more complete comment about them after finishing), but I have a doubt
what you meant about this:
> +static int kirin_drm_bind(struct device *dev)
> > +{
> > + struct drm_driver *driver = &kirin_drm_driver;
> > + struct drm_device *drm_dev;
> > + struct kirin_drm_private *priv;
> > + int ret;
> > +
> > + drm_dev = drm_dev_alloc(driver, dev);
> > + if (!drm_dev)
> > + return -ENOMEM;
> > +
> > + ret = kirin_drm_kms_init(drm_dev);
> > + if (ret)
> > + goto err_drm_dev_unref;
> > +
> > + ret = drm_dev_register(drm_dev, 0);
> There is better ways to do this. See drm_drv.c for the code example.
Not sure if I understood your comment here. The drm_drv.c example also calls
drm_dev_register().
The only difference is that it calls it inside driver_probe(), while
on this driver, it uses:
static const struct component_master_ops kirin_drm_ops = {
.bind = kirin_drm_bind,
.unbind = kirin_drm_unbind,
};
static int kirin_drm_platform_probe(struct platform_device *pdev)
{
...
drm_of_component_match_add(dev, &match, compare_of, remote);
...
return component_master_add_with_match(dev, &kirin_drm_ops, match);
}
Are you meaning that I should get rid of this component API and call
kirin_drm_bind() from kirin_drm_platform_probe()?
Thanks,
Mauro
Powered by blists - more mailing lists