The s6e8ax0 driver has a dependency on BACKLIGHT_CLASS_DEVICE,
which can be configured as a loadable module, so we have to
make the driver a tristate symbol as well, to avoid this error:
drivers/built-in.o: In function `s6e8ax0_probe':
:(.text+0x23a48): undefined reference to `devm_backlight_device_register'
This also means we get another error from a missing export, which
this fixes as well:
ERROR: "exynos_mipi_dsi_register_lcd_driver" [drivers/video/fbdev/exynos/s6e8ax0.ko] undefined!
The drivers are all written to be loadable modules already,
except the Kconfig options for that are missing, which makes
the patch really easy.
Finally, the EXYNOS_VIDEO option is turned into tristate as well
for good measure, as all framebuffer drivers should be configurable
as modules, though this change is not strictly necessary.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Krzysztof Kozlowski <redacted>
---
drivers/video/fbdev/exynos/Kconfig | 6 +++---
drivers/video/fbdev/exynos/Makefile | 6 ++++--
drivers/video/fbdev/exynos/exynos_mipi_dsi.c | 1 +
3 files changed, 8 insertions(+), 5 deletions(-)
v2: improved changelog after feedback from Paul Bolle
@@ -2,6 +2,8 @@# Makefile for the exynos video drivers.#-obj-$(CONFIG_EXYNOS_MIPI_DSI)+=exynos_mipi_dsi.oexynos_mipi_dsi_common.o\-exynos_mipi_dsi_lowlevel.o+obj-$(CONFIG_EXYNOS_MIPI_DSI)+=exynos-mipi-dsi-mod.o++exynos-mipi-dsi-mod-objs+=exynos_mipi_dsi.oexynos_mipi_dsi_common.o\+exynos_mipi_dsi_lowlevel.oobj-$(CONFIG_EXYNOS_LCD_S6E8AX0)+=s6e8ax0.o
From: Tomi Valkeinen <hidden> Date: 2016-02-29 16:13:35
Hi,
On 26/02/16 14:38, Arnd Bergmann wrote:
The s6e8ax0 driver has a dependency on BACKLIGHT_CLASS_DEVICE,
which can be configured as a loadable module, so we have to
make the driver a tristate symbol as well, to avoid this error:
drivers/built-in.o: In function `s6e8ax0_probe':
:(.text+0x23a48): undefined reference to `devm_backlight_device_register'
If a 'bool' Kconfig option depends on BACKLIGHT_CLASS_DEVICE, shouldn't
the Kconfig dependency take care of having BACKLIGHT_CLASS_DEVICE as
built-in?
This also means we get another error from a missing export, which
this fixes as well:
ERROR: "exynos_mipi_dsi_register_lcd_driver" [drivers/video/fbdev/exynos/s6e8ax0.ko] undefined!
The drivers are all written to be loadable modules already,
except the Kconfig options for that are missing, which makes
the patch really easy.
Looks and sound fine, except doesn't this tell that the drivers have
never been tested as modules? Did you or someone else actually test these?
@@ -2,6 +2,8 @@# Makefile for the exynos video drivers.#-obj-$(CONFIG_EXYNOS_MIPI_DSI)+=exynos_mipi_dsi.oexynos_mipi_dsi_common.o\-exynos_mipi_dsi_lowlevel.o+obj-$(CONFIG_EXYNOS_MIPI_DSI)+=exynos-mipi-dsi-mod.o++exynos-mipi-dsi-mod-objs+=exynos_mipi_dsi.oexynos_mipi_dsi_common.o\+exynos_mipi_dsi_lowlevel.o
On Monday 29 February 2016 18:12:45 Tomi Valkeinen wrote:
Hi,
On 26/02/16 14:38, Arnd Bergmann wrote:
quoted
The s6e8ax0 driver has a dependency on BACKLIGHT_CLASS_DEVICE,
which can be configured as a loadable module, so we have to
make the driver a tristate symbol as well, to avoid this error:
drivers/built-in.o: In function `s6e8ax0_probe':
:(.text+0x23a48): undefined reference to `devm_backlight_device_register'
If a 'bool' Kconfig option depends on BACKLIGHT_CLASS_DEVICE, shouldn't
the Kconfig dependency take care of having BACKLIGHT_CLASS_DEVICE as
built-in?
No, that's not how Kconfig interprets it. There are many bool option
that depend on tristate options but can be enabled if the dependency
is built-in.
Take this one for example:
config FIRMWARE_EDID
bool "Enable firmware EDID"
depends on FB
We clearly want to be able to turn this on even for FB=m.
quoted
This also means we get another error from a missing export, which
this fixes as well:
ERROR: "exynos_mipi_dsi_register_lcd_driver" [drivers/video/fbdev/exynos/s6e8ax0.ko] undefined!
The drivers are all written to be loadable modules already,
except the Kconfig options for that are missing, which makes
the patch really easy.
Looks and sound fine, except doesn't this tell that the drivers have
never been tested as modules? Did you or someone else actually test these?
No, this is not runtime tested. Generally there is very little that
can go wrong here though.
An alternative would be to change the dependency to
depends on BACKLIGHT_CLASS_DEVICE=y
which doesn't allow the driver to be turned on for the =m case.
However, no other framebuffer driver does this.
@@ -2,6 +2,8 @@# Makefile for the exynos video drivers.#-obj-$(CONFIG_EXYNOS_MIPI_DSI)+=exynos_mipi_dsi.oexynos_mipi_dsi_common.o\-exynos_mipi_dsi_lowlevel.o+obj-$(CONFIG_EXYNOS_MIPI_DSI)+=exynos-mipi-dsi-mod.o++exynos-mipi-dsi-mod-objs+=exynos_mipi_dsi.oexynos_mipi_dsi_common.o\+exynos_mipi_dsi_lowlevel.o
Hmm, why is this makefile change needed?
The original Makefile would link each file into a separate module, but that
cannot work, because they reference symbols from each other that are not
exported to other modules.
With my change, all the files get linked into a single module.
Arnd
From: Tomi Valkeinen <hidden> Date: 2016-02-29 16:56:22
On 29/02/16 18:39, Arnd Bergmann wrote:
On Monday 29 February 2016 18:12:45 Tomi Valkeinen wrote:
quoted
Hi,
On 26/02/16 14:38, Arnd Bergmann wrote:
quoted
The s6e8ax0 driver has a dependency on BACKLIGHT_CLASS_DEVICE,
which can be configured as a loadable module, so we have to
make the driver a tristate symbol as well, to avoid this error:
drivers/built-in.o: In function `s6e8ax0_probe':
:(.text+0x23a48): undefined reference to `devm_backlight_device_register'
If a 'bool' Kconfig option depends on BACKLIGHT_CLASS_DEVICE, shouldn't
the Kconfig dependency take care of having BACKLIGHT_CLASS_DEVICE as
built-in?
No, that's not how Kconfig interprets it. There are many bool option
that depend on tristate options but can be enabled if the dependency
is built-in.
Take this one for example:
config FIRMWARE_EDID
bool "Enable firmware EDID"
depends on FB
We clearly want to be able to turn this on even for FB=m.
Right.
quoted
quoted
This also means we get another error from a missing export, which
this fixes as well:
ERROR: "exynos_mipi_dsi_register_lcd_driver" [drivers/video/fbdev/exynos/s6e8ax0.ko] undefined!
The drivers are all written to be loadable modules already,
except the Kconfig options for that are missing, which makes
the patch really easy.
Looks and sound fine, except doesn't this tell that the drivers have
never been tested as modules? Did you or someone else actually test these?
No, this is not runtime tested. Generally there is very little that
can go wrong here though.
An alternative would be to change the dependency to
depends on BACKLIGHT_CLASS_DEVICE=y
which doesn't allow the driver to be turned on for the =m case.
However, no other framebuffer driver does this.
No, I think it's clearly better to make them tristate. I think all
drivers should be buildable as modules. It just makes me a bit
uncomfortable to enable code that has never been ran.
@@ -2,6 +2,8 @@# Makefile for the exynos video drivers.#-obj-$(CONFIG_EXYNOS_MIPI_DSI)+=exynos_mipi_dsi.oexynos_mipi_dsi_common.o\-exynos_mipi_dsi_lowlevel.o+obj-$(CONFIG_EXYNOS_MIPI_DSI)+=exynos-mipi-dsi-mod.o++exynos-mipi-dsi-mod-objs+=exynos_mipi_dsi.oexynos_mipi_dsi_common.o\+exynos_mipi_dsi_lowlevel.o
Hmm, why is this makefile change needed?
The original Makefile would link each file into a separate module, but that
cannot work, because they reference symbols from each other that are not
exported to other modules.
With my change, all the files get linked into a single module.