123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- From dfcc0395f5e838c0b5c3fb93c9335b6a8892178a Mon Sep 17 00:00:00 2001
- From: Eugen Hristev <[email protected]>
- Date: Mon, 5 Jul 2021 14:57:08 +0200
- Subject: [PATCH 190/247] media: atmel: fix build when ISC=m and XISC=y
- Building VIDEO_ATMEL_ISC as module and VIDEO_ATMEL_XISC as built-in
- (or viceversa) causes build errors:
- or1k-linux-ld: drivers/media/platform/atmel/atmel-isc-base.o: in function `isc_async_complete':
- atmel-isc-base.c:(.text+0x40d0): undefined reference to `__this_module'
- or1k-linux-ld: atmel-isc-base.c:(.text+0x40f0): undefined reference to `__this_module'
- or1k-linux-ld: drivers/media/platform/atmel/atmel-isc-base.o:(.rodata+0x390): undefined reference to `__this_module'
- or1k-linux-ld: drivers/media/platform/atmel/atmel-isc-base.o:(__param+0x4): undefined reference to `__this_module'
- or1k-linux-ld: drivers/media/platform/atmel/atmel-isc-base.o:(__param+0x18): undefined reference to `__this_module'
- This is caused by the file atmel-isc-base.c which is common code between
- the two drivers.
- The solution is to create another Kconfig symbol that is automatically
- selected and generates the module atmel-isc-base.ko. This module can be
- loaded when both drivers are modules, or built-in when at least one of them
- is built-in.
- Reported-by: kernel test robot <[email protected]>
- Fixes: c9aa973884a1 ("media: atmel: atmel-isc: add microchip-xisc driver")
- Signed-off-by: Eugen Hristev <[email protected]>
- Signed-off-by: Hans Verkuil <[email protected]>
- Signed-off-by: Mauro Carvalho Chehab <[email protected]>
- ---
- drivers/media/platform/atmel/Kconfig | 8 ++++++++
- drivers/media/platform/atmel/Makefile | 5 +++--
- drivers/media/platform/atmel/atmel-isc-base.c | 11 +++++++++++
- 3 files changed, 22 insertions(+), 2 deletions(-)
- --- a/drivers/media/platform/atmel/Kconfig
- +++ b/drivers/media/platform/atmel/Kconfig
- @@ -8,6 +8,7 @@ config VIDEO_ATMEL_ISC
- select VIDEOBUF2_DMA_CONTIG
- select REGMAP_MMIO
- select V4L2_FWNODE
- + select VIDEO_ATMEL_ISC_BASE
- help
- This module makes the ATMEL Image Sensor Controller available
- as a v4l2 device.
- @@ -19,10 +20,17 @@ config VIDEO_ATMEL_XISC
- select VIDEOBUF2_DMA_CONTIG
- select REGMAP_MMIO
- select V4L2_FWNODE
- + select VIDEO_ATMEL_ISC_BASE
- help
- This module makes the ATMEL eXtended Image Sensor Controller
- available as a v4l2 device.
-
- +config VIDEO_ATMEL_ISC_BASE
- + tristate
- + default n
- + help
- + ATMEL ISC and XISC common code base.
- +
- config VIDEO_ATMEL_ISI
- tristate "ATMEL Image Sensor Interface (ISI) support"
- depends on VIDEO_V4L2 && OF
- --- a/drivers/media/platform/atmel/Makefile
- +++ b/drivers/media/platform/atmel/Makefile
- @@ -1,7 +1,8 @@
- # SPDX-License-Identifier: GPL-2.0-only
- -atmel-isc-objs = atmel-sama5d2-isc.o atmel-isc-base.o
- -atmel-xisc-objs = atmel-sama7g5-isc.o atmel-isc-base.o
- +atmel-isc-objs = atmel-sama5d2-isc.o
- +atmel-xisc-objs = atmel-sama7g5-isc.o
-
- obj-$(CONFIG_VIDEO_ATMEL_ISI) += atmel-isi.o
- +obj-$(CONFIG_VIDEO_ATMEL_ISC_BASE) += atmel-isc-base.o
- obj-$(CONFIG_VIDEO_ATMEL_ISC) += atmel-isc.o
- obj-$(CONFIG_VIDEO_ATMEL_XISC) += atmel-xisc.o
- --- a/drivers/media/platform/atmel/atmel-isc-base.c
- +++ b/drivers/media/platform/atmel/atmel-isc-base.c
- @@ -378,6 +378,7 @@ int isc_clk_init(struct isc_device *isc)
-
- return 0;
- }
- +EXPORT_SYMBOL_GPL(isc_clk_init);
-
- void isc_clk_cleanup(struct isc_device *isc)
- {
- @@ -392,6 +393,7 @@ void isc_clk_cleanup(struct isc_device *
- clk_unregister(isc_clk->clk);
- }
- }
- +EXPORT_SYMBOL_GPL(isc_clk_cleanup);
-
- static int isc_queue_setup(struct vb2_queue *vq,
- unsigned int *nbuffers, unsigned int *nplanes,
- @@ -1575,6 +1577,7 @@ irqreturn_t isc_interrupt(int irq, void
-
- return ret;
- }
- +EXPORT_SYMBOL_GPL(isc_interrupt);
-
- static void isc_hist_count(struct isc_device *isc, u32 *min, u32 *max)
- {
- @@ -2209,6 +2212,7 @@ const struct v4l2_async_notifier_operati
- .unbind = isc_async_unbind,
- .complete = isc_async_complete,
- };
- +EXPORT_SYMBOL_GPL(isc_async_ops);
-
- void isc_subdev_cleanup(struct isc_device *isc)
- {
- @@ -2221,6 +2225,7 @@ void isc_subdev_cleanup(struct isc_devic
-
- INIT_LIST_HEAD(&isc->subdev_entities);
- }
- +EXPORT_SYMBOL_GPL(isc_subdev_cleanup);
-
- int isc_pipeline_init(struct isc_device *isc)
- {
- @@ -2261,6 +2266,7 @@ int isc_pipeline_init(struct isc_device
-
- return 0;
- }
- +EXPORT_SYMBOL_GPL(isc_pipeline_init);
-
- /* regmap configuration */
- #define ATMEL_ISC_REG_MAX 0xd5c
- @@ -2270,4 +2276,9 @@ const struct regmap_config isc_regmap_co
- .val_bits = 32,
- .max_register = ATMEL_ISC_REG_MAX,
- };
- +EXPORT_SYMBOL_GPL(isc_regmap_config);
-
- +MODULE_AUTHOR("Songjun Wu");
- +MODULE_AUTHOR("Eugen Hristev");
- +MODULE_DESCRIPTION("Atmel ISC common code base");
- +MODULE_LICENSE("GPL v2");
|