diff mbox

drm/exynos: Fix PTN3460 dependency

Message ID 20140520111525.3a62e25d@endymion.delvare (mailing list archive)
State New, archived
Headers show

Commit Message

Jean Delvare May 20, 2014, 9:15 a.m. UTC
The following configuration options combination:

CONFIG_DRM_EXYNOS_DP=y
CONFIG_DRM_PTN3460=m

currently leads to the following linker failure:

drivers/built-in.o: In function `exynos_drm_attach_lcd_bridge':
.../drivers/gpu/drm/exynos/exynos_dp_core.c:1004:
undefined reference to `ptn3460_init'

This is because ptn3460_init can't be implemented in a module while
its caller is built into the kernel. So add the proper dependency in
Kconfig so that the above can't happen.

I moved DRM_PTN3460 earlier in Kconfig, next to the I2C helper module
section, so that the user has a chance to select it before moving to
the Exynos-specific section.

IMHO the proper way to solve the problem would be to turn ptn3460 into
a clean I2C driver, similar to the other I2C helper chip drivers. It's
the only way to not sink into impossible-to-guess dependencies. Then
ptn3460 could even be moved together with the other I2C helper chip
drivers.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: David Airlie <airlied@linux.ie>
Cc: Joonyoung Shim <jy0922.shim@samsung.com>
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
---
 drivers/gpu/drm/Kconfig        |    4 ++--
 drivers/gpu/drm/exynos/Kconfig |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

Comments

Thierry Reding May 21, 2014, 3:51 p.m. UTC | #1
On Tue, May 20, 2014 at 11:15:25AM +0200, Jean Delvare wrote:
> The following configuration options combination:
> 
> CONFIG_DRM_EXYNOS_DP=y
> CONFIG_DRM_PTN3460=m
> 
> currently leads to the following linker failure:
> 
> drivers/built-in.o: In function `exynos_drm_attach_lcd_bridge':
> .../drivers/gpu/drm/exynos/exynos_dp_core.c:1004:
> undefined reference to `ptn3460_init'
> 
> This is because ptn3460_init can't be implemented in a module while
> its caller is built into the kernel. So add the proper dependency in
> Kconfig so that the above can't happen.
> 
> I moved DRM_PTN3460 earlier in Kconfig, next to the I2C helper module
> section, so that the user has a chance to select it before moving to
> the Exynos-specific section.
> 
> IMHO the proper way to solve the problem would be to turn ptn3460 into
> a clean I2C driver, similar to the other I2C helper chip drivers. It's
> the only way to not sink into impossible-to-guess dependencies. Then
> ptn3460 could even be moved together with the other I2C helper chip
> drivers.

FWIW, various ideas have been discussed to solve this problem. The most
recent agreement I think was to create a registry for bridge drivers to
register DRM bridge objects against and allow drivers to look them up.
That way we can get rid of the various *_init() functions that currently
need to be called directly from within DRM drivers.

I'm not aware of anybody working on this currently, hence I think this
is an appropriate fix in the meantime:

Reviewed-by: Thierry Reding <treding@nvidia.com>
Inki Dae May 22, 2014, 11:27 a.m. UTC | #2
On 2014? 05? 22? 00:51, Thierry Reding wrote:
> On Tue, May 20, 2014 at 11:15:25AM +0200, Jean Delvare wrote:
>> The following configuration options combination:
>>
>> CONFIG_DRM_EXYNOS_DP=y
>> CONFIG_DRM_PTN3460=m
>>
>> currently leads to the following linker failure:
>>
>> drivers/built-in.o: In function `exynos_drm_attach_lcd_bridge':
>> .../drivers/gpu/drm/exynos/exynos_dp_core.c:1004:
>> undefined reference to `ptn3460_init'
>>
>> This is because ptn3460_init can't be implemented in a module while
>> its caller is built into the kernel. So add the proper dependency in
>> Kconfig so that the above can't happen.
>>
>> I moved DRM_PTN3460 earlier in Kconfig, next to the I2C helper module
>> section, so that the user has a chance to select it before moving to
>> the Exynos-specific section.
>>
>> IMHO the proper way to solve the problem would be to turn ptn3460 into
>> a clean I2C driver, similar to the other I2C helper chip drivers. It's
>> the only way to not sink into impossible-to-guess dependencies. Then
>> ptn3460 could even be moved together with the other I2C helper chip
>> drivers.
> 
> FWIW, various ideas have been discussed to solve this problem. The most
> recent agreement I think was to create a registry for bridge drivers to
> register DRM bridge objects against and allow drivers to look them up.
> That way we can get rid of the various *_init() functions that currently
> need to be called directly from within DRM drivers.
> 

I tend to prefer integrated drm_bridge based on drm_panel infrastructure
so that bridge drivers can use Linux driver-model. But it seems not easy
to reach a consensus on it.

picked it up.

Thanks,
Inki Dae

> I'm not aware of anybody working on this currently, hence I think this
> is an appropriate fix in the meantime:
> 
> Reviewed-by: Thierry Reding <treding@nvidia.com>
> 
> 
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
diff mbox

Patch

--- linux-3.15-rc5.orig/drivers/gpu/drm/Kconfig	2014-04-14 09:42:29.689070224 +0200
+++ linux-3.15-rc5/drivers/gpu/drm/Kconfig	2014-05-19 14:47:02.872050099 +0200
@@ -83,6 +83,8 @@  config DRM_KMS_CMA_HELPER
 
 source "drivers/gpu/drm/i2c/Kconfig"
 
+source "drivers/gpu/drm/bridge/Kconfig"
+
 config DRM_TDFX
 	tristate "3dfx Banshee/Voodoo3+"
 	depends on DRM && PCI
@@ -199,5 +201,3 @@  source "drivers/gpu/drm/msm/Kconfig"
 source "drivers/gpu/drm/tegra/Kconfig"
 
 source "drivers/gpu/drm/panel/Kconfig"
-
-source "drivers/gpu/drm/bridge/Kconfig"
--- linux-3.15-rc5.orig/drivers/gpu/drm/exynos/Kconfig	2014-04-14 09:42:29.698070438 +0200
+++ linux-3.15-rc5/drivers/gpu/drm/exynos/Kconfig	2014-05-19 15:23:18.867919528 +0200
@@ -50,7 +50,7 @@  config DRM_EXYNOS_DSI
 
 config DRM_EXYNOS_DP
 	bool "EXYNOS DRM DP driver support"
-	depends on DRM_EXYNOS && ARCH_EXYNOS
+	depends on DRM_EXYNOS && ARCH_EXYNOS && (DRM_PTN3460=n || DRM_PTN3460=y || DRM_PTN3460=DRM_EXYNOS)
 	default DRM_EXYNOS
 	help
 	  This enables support for DP device.