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