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

From: Lizhi Hou
Date: Tue Oct 24 2023 - 12:19:12 EST



On 10/24/23 06:27, Arnd Bergmann wrote:
On Mon, Oct 23, 2023, at 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 IIO symbols that are selected here are library modules that
are legitimately used.

Fixes: 0ab13674a9bd ("media: pci: mgb4: Added Digiteq Automotive MGB4 driver")
Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
---
drivers/media/pci/mgb4/Kconfig | 4 ----
1 file changed, 4 deletions(-)

diff --git a/drivers/media/pci/mgb4/Kconfig b/drivers/media/pci/mgb4/Kconfig
index f2a05a1c8ffa..b90347c7f19b 100644
--- a/drivers/media/pci/mgb4/Kconfig
+++ b/drivers/media/pci/mgb4/Kconfig
@@ -6,10 +6,6 @@ config VIDEO_MGB4
select VIDEOBUF2_DMA_SG
select IIO_BUFFER
select IIO_TRIGGERED_BUFFER
- select I2C_XILINX
- select SPI_XILINX
- select MTD_SPI_NOR
- select XILINX_XDMA
Apparently, the XDMA reference was in fact needed, as MGB4
calls some exported symbols from that particular dmaengine
driver:

aarch64-linux-ld: drivers/media/pci/mgb4/mgb4_core.o: in function `init_i2c': mgb4_core.c:(.text+0x3ec): undefined reference to `xdma_get_user_irq'
aarch64-linux-ld: mgb4_core.c:(.text+0x404): undefined reference to `xdma_enable_user_irq'

I couldn't easily figure out what a 'user_irq' is here,
but I wonder if this is the expected way to use the DMA engine
layer. Maybe this should have been a nested irqchip instead,
or it should be encoded in the DMA request specifier?

Hi Arnd,

Here is a brief description of 'user_irq' and 'xdma_enable_user_irq'

The XDMA subsystem is used in conjunction with the PCIe IP block. Please see https://lwn.net/Articles/911496/ for the overall information.

XDMA can forward PCIe msi-x interrupt to/from user logic hardware (e.g. Digiteq device) which is connected to its user irq pin.  And XDMA has a register to enable/disabe interrupt forwarding for a specific user irq pin.

'xdma_enable_user_irq' and 'xdma_disable_user_irq' are provided for hardware driver which is designed to use XDMA to enable/disable its interrupt. And based on the previous discussion with Mark, Digiteq device does not use its own register to enable/disable interrupt but relies on XDMA.  Please see https://lore.kernel.org/lkml/daccee4a-ac3c-bfc1-4876-24e6ecf5bcf1@xxxxxxxxxx/

Thanks,

Lizhi


Arnd