From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Stuebner Subject: Re: [PATCH v4] drm/rockchip: Refactor the component match logic. Date: Thu, 16 Mar 2017 09:20:13 +0100 Message-ID: <4477033.icEzZGFJNF@phil> References: <1489629956-32285-1-git-send-email-jeffy.chen@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1489629956-32285-1-git-send-email-jeffy.chen@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jeffy Chen Cc: linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Brian Norris , Douglas Anderson , dri-devel@lists.freedesktop.org, Tomasz Figa , Guenter Roeck , linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org SGkgSmVmZnksCgpBbSBEb25uZXJzdGFnLCAxNi4gTcOkcnogMjAxNywgMTA6MDU6NTYgQ0VUIHNj aHJpZWIgSmVmZnkgQ2hlbjoKPiBDdXJyZW50bHkgd2UgYXJlIGFkZGluZyBhbGwgY29tcG9uZW50 cyBmcm9tIHRoZSBkdHMsIGlmIG9uZSBvZiB0aGVpcgo+IGRyaXZlcnMgYmVlbiBkaXNhYmxlZCwg d2Ugd291bGQgbm90IGJlIGFibGUgdG8gYnJpbmcgdXAgb3RoZXJzLgo+IAo+IFJlZmFjdG9yIGNv bXBvbmVudCBtYXRjaCBsb2dpYywgZm9sbG93IGV4eW5vcyBkcm0uCj4gCj4gU2lnbmVkLW9mZi1i eTogSmVmZnkgQ2hlbiA8amVmZnkuY2hlbkByb2NrLWNoaXBzLmNvbT4KPiBSZXZpZXdlZC1ieTog QW5kcnplaiBIYWpkYSA8YS5oYWpkYUBzYW1zdW5nLmNvbT4KClsuLi5dCgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2Rydi5jCj4gYi9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2Rydi5jIGluZGV4IGIzNjBlNjIuLjUxNDMz ZGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9k cnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZHJ2LmMK PiBAQCAtMzU2LDM0ICszNTYsNDIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHJv Y2tjaGlwX2RybV9wbV9vcHMgPSB7Cj4gcm9ja2NoaXBfZHJtX3N5c19yZXN1bWUpCj4gIH07Cj4g Cj4gLXN0YXRpYyBpbnQgY29tcGFyZV9vZihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEp Cj4gLXsKPiAtCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkYXRhOwo+ICsjZGVmaW5lIE1BWF9S T0NLQ0hJUF9EUk1fRFJWUyAxNgo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqcm9j a2NoaXBfZHJtX2RydnNbTUFYX1JPQ0tDSElQX0RSTV9EUlZTXTsKPiArc3RhdGljIGludCByb2Nr Y2hpcF9kcm1fZHJ2c19jbnQ7Cj4gCj4gLQlyZXR1cm4gZGV2LT5vZl9ub2RlID09IG5wOwo+ICsj ZGVmaW5lIFJPQ0tDSElQX0RSTV9EUlYoZHJ2LCBjb25kKSB7IFwKPiArCWlmIChJU19FTkFCTEVE KGNvbmQpKSBcCj4gKwkJcm9ja2NoaXBfZHJtX2RydnNbcm9ja2NoaXBfZHJtX2RydnNfY250Kytd ID0gJmRydjsgXAo+ICB9CgpbLi4uXQoKPiArc3RhdGljIGludCBfX2luaXQgcm9ja2NoaXBfZHJt X2luaXQodm9pZCkKPiArewo+ICsJaW50IHJldDsKPiArCj4gKwlyb2NrY2hpcF9kcm1fZHJ2c19j bnQgPSAwOwo+ICsJUk9DS0NISVBfRFJNX0RSVih2b3BfcGxhdGZvcm1fZHJpdmVyLCBDT05GSUdf RFJNX1JPQ0tDSElQKTsKPiArCVJPQ0tDSElQX0RSTV9EUlYocm9ja2NoaXBfZHBfZHJpdmVyLCBD T05GSUdfUk9DS0NISVBfQU5BTE9HSVhfRFApOwo+ICsJUk9DS0NISVBfRFJNX0RSVihjZG5fZHBf ZHJpdmVyLCBDT05GSUdfUk9DS0NISVBfQ0ROX0RQKTsKPiArCVJPQ0tDSElQX0RSTV9EUlYoZHdf aGRtaV9yb2NrY2hpcF9wbHRmbV9kcml2ZXIsCj4gKwkJCSBDT05GSUdfUk9DS0NISVBfRFdfSERN SSk7Cj4gKwlST0NLQ0hJUF9EUk1fRFJWKGR3X21pcGlfZHNpX2RyaXZlciwgQ09ORklHX1JPQ0tD SElQX0RXX01JUElfRFNJKTsKPiArCVJPQ0tDSElQX0RSTV9EUlYoaW5ub19oZG1pX2RyaXZlciwg Q09ORklHX1JPQ0tDSElQX0lOTk9fSERNSSk7Cj4gKwo+ICsJcmV0ID0gcGxhdGZvcm1fcmVnaXN0 ZXJfZHJpdmVycyhyb2NrY2hpcF9kcm1fZHJ2cywKPiArCQkJCQlyb2NrY2hpcF9kcm1fZHJ2c19j bnQpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0OwoKV2l0aCB0aGUgZm9sbG93aW5nIGNv bmZpZyBzbmlwcGV0CgpDT05GSUdfRFJNX1JPQ0tDSElQPW0KQ09ORklHX1JPQ0tDSElQX0FOQUxP R0lYX0RQPXkKIyBDT05GSUdfUk9DS0NISVBfQ0ROX0RQIGlzIG5vdCBzZXQKQ09ORklHX1JPQ0tD SElQX0RXX0hETUk9eQpDT05GSUdfUk9DS0NISVBfRFdfTUlQSV9EU0k9eQpDT05GSUdfUk9DS0NI SVBfSU5OT19IRE1JPXkKCkkgZ2V0IHRoZXNlIGZhdWx0cyBvbiBhcm0zMiAoMSB3YXJuaW5nLCAx IGxpbmtlciBlcnJvcik6CgogIENDIFtNXSAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2RybV9kcnYubwogIENDIFtNXSAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2RybV9mYi5vCiAgQ0MgW01dICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJt X2dlbS5vCiAgQ0MgW01dICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bz ci5vCiAgQ0MgW01dICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5v CiAgQ0MgW01dICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5vCi4u L2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmM6NDA3OjMxOiB3YXJu aW5nOiDigJh2b3BfcGxhdGZvcm1fZHJpdmVy4oCZIGRlZmluZWQgYnV0IG5vdCB1c2VkIFstV3Vu dXNlZC12YXJpYWJsZV0KIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHZvcF9wbGF0Zm9y bV9kcml2ZXIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+ fn5+fn5+CiAgQ0MgW01dICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2Zi ZGV2Lm8KICBDQyBbTV0gIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2Nr Y2hpcC5vCiAgQ0MgW01dICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHdfaGRtaS1yb2NrY2hp cC5vCiAgQ0MgW01dICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kubwogIEND IFtNXSAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2lubm9faGRtaS5vCiAgTEQgW01dICBkcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBkcm0ubwogIEJ1aWxkaW5nIG1vZHVsZXMsIHN0 YWdlIDIuCiAgTU9EUE9TVCAzNTIgbW9kdWxlcwpFUlJPUjogInZvcF9wbGF0Zm9ybV9kcml2ZXIi IFtkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBkcm0ua29dIHVuZGVmaW5lZCEKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: heiko@sntech.de (Heiko Stuebner) Date: Thu, 16 Mar 2017 09:20:13 +0100 Subject: [PATCH v4] drm/rockchip: Refactor the component match logic. In-Reply-To: <1489629956-32285-1-git-send-email-jeffy.chen@rock-chips.com> References: <1489629956-32285-1-git-send-email-jeffy.chen@rock-chips.com> Message-ID: <4477033.icEzZGFJNF@phil> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Jeffy, Am Donnerstag, 16. M?rz 2017, 10:05:56 CET schrieb Jeffy Chen: > Currently we are adding all components from the dts, if one of their > drivers been disabled, we would not be able to bring up others. > > Refactor component match logic, follow exynos drm. > > Signed-off-by: Jeffy Chen > Reviewed-by: Andrzej Hajda [...] > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index b360e62..51433da 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > @@ -356,34 +356,42 @@ static const struct dev_pm_ops rockchip_drm_pm_ops = { > rockchip_drm_sys_resume) > }; > > -static int compare_of(struct device *dev, void *data) > -{ > - struct device_node *np = data; > +#define MAX_ROCKCHIP_DRM_DRVS 16 > +static struct platform_driver *rockchip_drm_drvs[MAX_ROCKCHIP_DRM_DRVS]; > +static int rockchip_drm_drvs_cnt; > > - return dev->of_node == np; > +#define ROCKCHIP_DRM_DRV(drv, cond) { \ > + if (IS_ENABLED(cond)) \ > + rockchip_drm_drvs[rockchip_drm_drvs_cnt++] = &drv; \ > } [...] > +static int __init rockchip_drm_init(void) > +{ > + int ret; > + > + rockchip_drm_drvs_cnt = 0; > + ROCKCHIP_DRM_DRV(vop_platform_driver, CONFIG_DRM_ROCKCHIP); > + ROCKCHIP_DRM_DRV(rockchip_dp_driver, CONFIG_ROCKCHIP_ANALOGIX_DP); > + ROCKCHIP_DRM_DRV(cdn_dp_driver, CONFIG_ROCKCHIP_CDN_DP); > + ROCKCHIP_DRM_DRV(dw_hdmi_rockchip_pltfm_driver, > + CONFIG_ROCKCHIP_DW_HDMI); > + ROCKCHIP_DRM_DRV(dw_mipi_dsi_driver, CONFIG_ROCKCHIP_DW_MIPI_DSI); > + ROCKCHIP_DRM_DRV(inno_hdmi_driver, CONFIG_ROCKCHIP_INNO_HDMI); > + > + ret = platform_register_drivers(rockchip_drm_drvs, > + rockchip_drm_drvs_cnt); > + if (ret) > + return ret; With the following config snippet CONFIG_DRM_ROCKCHIP=m CONFIG_ROCKCHIP_ANALOGIX_DP=y # CONFIG_ROCKCHIP_CDN_DP is not set CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_DW_MIPI_DSI=y CONFIG_ROCKCHIP_INNO_HDMI=y I get these faults on arm32 (1 warning, 1 linker error): CC [M] drivers/gpu/drm/rockchip/rockchip_drm_drv.o CC [M] drivers/gpu/drm/rockchip/rockchip_drm_fb.o CC [M] drivers/gpu/drm/rockchip/rockchip_drm_gem.o CC [M] drivers/gpu/drm/rockchip/rockchip_drm_psr.o CC [M] drivers/gpu/drm/rockchip/rockchip_drm_vop.o CC [M] drivers/gpu/drm/rockchip/rockchip_vop_reg.o ../drivers/gpu/drm/rockchip/rockchip_vop_reg.c:407:31: warning: ?vop_platform_driver? defined but not used [-Wunused-variable] static struct platform_driver vop_platform_driver = { ^~~~~~~~~~~~~~~~~~~ CC [M] drivers/gpu/drm/rockchip/rockchip_drm_fbdev.o CC [M] drivers/gpu/drm/rockchip/analogix_dp-rockchip.o CC [M] drivers/gpu/drm/rockchip/dw_hdmi-rockchip.o CC [M] drivers/gpu/drm/rockchip/dw-mipi-dsi.o CC [M] drivers/gpu/drm/rockchip/inno_hdmi.o LD [M] drivers/gpu/drm/rockchip/rockchipdrm.o Building modules, stage 2. MODPOST 352 modules ERROR: "vop_platform_driver" [drivers/gpu/drm/rockchip/rockchipdrm.ko] undefined! From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752270AbdCPJAB convert rfc822-to-8bit (ORCPT ); Thu, 16 Mar 2017 05:00:01 -0400 Received: from gloria.sntech.de ([95.129.55.99]:33732 "EHLO gloria.sntech.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752240AbdCPI77 (ORCPT ); Thu, 16 Mar 2017 04:59:59 -0400 From: Heiko Stuebner To: Jeffy Chen Cc: Mark Yao , Andrzej Hajda , Guenter Roeck , Brian Norris , Tomasz Figa , Douglas Anderson , Sean Paul , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, David Airlie , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v4] drm/rockchip: Refactor the component match logic. Date: Thu, 16 Mar 2017 09:20:13 +0100 Message-ID: <4477033.icEzZGFJNF@phil> User-Agent: KMail/5.2.3 (Linux/4.9.0-1-amd64; KDE/5.27.0; x86_64; ; ) In-Reply-To: <1489629956-32285-1-git-send-email-jeffy.chen@rock-chips.com> References: <1489629956-32285-1-git-send-email-jeffy.chen@rock-chips.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jeffy, Am Donnerstag, 16. März 2017, 10:05:56 CET schrieb Jeffy Chen: > Currently we are adding all components from the dts, if one of their > drivers been disabled, we would not be able to bring up others. > > Refactor component match logic, follow exynos drm. > > Signed-off-by: Jeffy Chen > Reviewed-by: Andrzej Hajda [...] > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index b360e62..51433da 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > @@ -356,34 +356,42 @@ static const struct dev_pm_ops rockchip_drm_pm_ops = { > rockchip_drm_sys_resume) > }; > > -static int compare_of(struct device *dev, void *data) > -{ > - struct device_node *np = data; > +#define MAX_ROCKCHIP_DRM_DRVS 16 > +static struct platform_driver *rockchip_drm_drvs[MAX_ROCKCHIP_DRM_DRVS]; > +static int rockchip_drm_drvs_cnt; > > - return dev->of_node == np; > +#define ROCKCHIP_DRM_DRV(drv, cond) { \ > + if (IS_ENABLED(cond)) \ > + rockchip_drm_drvs[rockchip_drm_drvs_cnt++] = &drv; \ > } [...] > +static int __init rockchip_drm_init(void) > +{ > + int ret; > + > + rockchip_drm_drvs_cnt = 0; > + ROCKCHIP_DRM_DRV(vop_platform_driver, CONFIG_DRM_ROCKCHIP); > + ROCKCHIP_DRM_DRV(rockchip_dp_driver, CONFIG_ROCKCHIP_ANALOGIX_DP); > + ROCKCHIP_DRM_DRV(cdn_dp_driver, CONFIG_ROCKCHIP_CDN_DP); > + ROCKCHIP_DRM_DRV(dw_hdmi_rockchip_pltfm_driver, > + CONFIG_ROCKCHIP_DW_HDMI); > + ROCKCHIP_DRM_DRV(dw_mipi_dsi_driver, CONFIG_ROCKCHIP_DW_MIPI_DSI); > + ROCKCHIP_DRM_DRV(inno_hdmi_driver, CONFIG_ROCKCHIP_INNO_HDMI); > + > + ret = platform_register_drivers(rockchip_drm_drvs, > + rockchip_drm_drvs_cnt); > + if (ret) > + return ret; With the following config snippet CONFIG_DRM_ROCKCHIP=m CONFIG_ROCKCHIP_ANALOGIX_DP=y # CONFIG_ROCKCHIP_CDN_DP is not set CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_DW_MIPI_DSI=y CONFIG_ROCKCHIP_INNO_HDMI=y I get these faults on arm32 (1 warning, 1 linker error): CC [M] drivers/gpu/drm/rockchip/rockchip_drm_drv.o CC [M] drivers/gpu/drm/rockchip/rockchip_drm_fb.o CC [M] drivers/gpu/drm/rockchip/rockchip_drm_gem.o CC [M] drivers/gpu/drm/rockchip/rockchip_drm_psr.o CC [M] drivers/gpu/drm/rockchip/rockchip_drm_vop.o CC [M] drivers/gpu/drm/rockchip/rockchip_vop_reg.o ../drivers/gpu/drm/rockchip/rockchip_vop_reg.c:407:31: warning: ‘vop_platform_driver’ defined but not used [-Wunused-variable] static struct platform_driver vop_platform_driver = { ^~~~~~~~~~~~~~~~~~~ CC [M] drivers/gpu/drm/rockchip/rockchip_drm_fbdev.o CC [M] drivers/gpu/drm/rockchip/analogix_dp-rockchip.o CC [M] drivers/gpu/drm/rockchip/dw_hdmi-rockchip.o CC [M] drivers/gpu/drm/rockchip/dw-mipi-dsi.o CC [M] drivers/gpu/drm/rockchip/inno_hdmi.o LD [M] drivers/gpu/drm/rockchip/rockchipdrm.o Building modules, stage 2. MODPOST 352 modules ERROR: "vop_platform_driver" [drivers/gpu/drm/rockchip/rockchipdrm.ko] undefined!