Re: [PATCH 2/2] media: pci: mgb4: remove bogus 'select' statements

From: Arnd Bergmann
Date: Wed Nov 08 2023 - 11:13:41 EST


On Fri, Oct 27, 2023, at 16:17, Martin Tůma wrote:
>
> On 23. 10. 23 18:05, Arnd Bergmann wrote:
>> From: Arnd Bergmann <arnd@xxxxxxxx>
>>
>> As this is just a regular device driver, it has no business force-enabling
>> other drivers in the system, it should be entirely independent of the
>> implementation of the spi-nor layer or the specific DMA engine.
>>
>
> The drivers are required for IP cores that are used on the card (in the
> FPGA). Without I2C_XILINX and XILINX_XDMA the card won't work at all.
> Without SPI_XILINX the access to the card's FLASH (used e.g. for FW
> changes) won't be possible.
>
> A change to "depend" instead of "select" is thus possible if it makes
> more sense to you, but removing it would make the module not compile or
> not work at runtime (there is no symbol dependency to I2C_XILINX and
> SPI_XILINX, but both need to be present and are loaded using
> request_module() at runtime).

Sorry for the delay at getting back to you here.

I don't think there is a good answer here, though I normally
try to only list the minimal dependencies that are required
at build time. E.g. for on-chip devices we don't require the
use of a particular clock/irq/pin/gpio/... controller even if
we know exactly which of those are used on a given chip.

Since this is a PCI device, it's a bit different, so maybe
something like this would work to correctly document which
dependencies are required at build time vs run time:

--- a/drivers/media/pci/mgb4/Kconfig
+++ b/drivers/media/pci/mgb4/Kconfig
@@ -1,15 +1,13 @@
# SPDX-License-Identifier: GPL-2.0-only
config VIDEO_MGB4
tristate "Digiteq Automotive MGB4 support"
- depends on VIDEO_DEV && PCI && I2C && DMADEVICES && SPI && MTD && IIO
+ depends on VIDEO_DEV && PCI && I2C && SPI && MTD && IIO
depends on COMMON_CLK
+ depends on XILINX_XDMA
+ depends on (I2C_XILINX && SPI_XILINX) || COMPILE_TEST
select VIDEOBUF2_DMA_SG
select IIO_BUFFER
select IIO_TRIGGERED_BUFFER
- select I2C_XILINX
- select SPI_XILINX
- select MTD_SPI_NOR
- select XILINX_XDMA
help
This is a video4linux driver for Digiteq Automotive MGB4 grabber
cards.

Arnd