From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751698AbdCPJQv (ORCPT ); Thu, 16 Mar 2017 05:16:51 -0400 Received: from regular1.263xmail.com ([211.150.99.139]:48147 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751279AbdCPJQs (ORCPT ); Thu, 16 Mar 2017 05:16:48 -0400 X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-RL-SENDER: jeffy.chen@rock-chips.com X-FST-TO: heiko@sntech.de X-SENDER-IP: 103.29.142.67 X-LOGIN-NAME: jeffy.chen@rock-chips.com X-UNIQUE-TAG: <4d9a040d67e07d756fff800ba16ee30d> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Message-ID: <58CA57C5.2040009@rock-chips.com> Date: Thu, 16 Mar 2017 17:15:49 +0800 From: jeffy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20130126 Thunderbird/19.0 MIME-Version: 1.0 To: Heiko Stuebner 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. References: <1489629956-32285-1-git-send-email-jeffy.chen@rock-chips.com> <4477033.icEzZGFJNF@phil> In-Reply-To: <4477033.icEzZGFJNF@phil> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Heiko, On 03/16/2017 04:20 PM, Heiko Stuebner wrote: > 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! > > > > > oops, sorry again...thanx for testing it, i should be more careful(porting it from my local 4.4 kernel).