• Arnd BergmannArnd Bergmann's avatar
    media: ipu3-cio2: allow ipu_bridge to be a module again · 2545a2c0
    Arnd BergmannArnd Bergmann authored
    This code was previously part of the VIDEO_IPU3_CIO2 driver, which could
    be built-in or a loadable module, but after the move it turned into a
    builtin-only driver. This fails to link when the I2C subsystem is a
    module:
    
    x86_64-linux-ld: drivers/media/pci/intel/ipu-bridge.o: in function `ipu_bridge_unregister_sensors':
    ipu-bridge.c:(.text+0x50): undefined reference to `i2c_unregister_device'
    x86_64-linux-ld: drivers/media/pci/intel/ipu-bridge.o: in function `ipu_bridge_init':
    ipu-bridge.c:(.text+0x9c9): undefined reference to `i2c_acpi_new_device_by_fwnode'
    
    In general, drivers should not have to be built-in, so change the option
    to a tristate with the corresponding dependency. This in turn opens a
    new problem with the dependency, as the IPU bridge can be a loadable module
    while the ipu3 driver itself is built-in, producing a new link failure:
    
    86_64-linux-ld: drivers/media/pci/intel/ipu3/ipu3-cio2.o: in function `cio2_pci_probe':
    ipu3-cio2.c:(.text+0x197e): undefined reference to `ipu_bridge_init'
    
    In order to fix this, restore the old Kconfig option that controlled
    the ipu bridge driver before it was split out, but make it select a
    hidden symbol that now corresponds to the bridge driver.
    
    When other drivers get added that share ipu-bridge, this should cover
    all corner cases, and allow any combination of them to be built-in
    or modular.
    
    Link: https://lore.kernel.org/linux-media/20230727122331.2421453-1-arnd@kernel.org
    
    Fixes: 881ca259 ("media: ipu3-cio2: rename cio2 bridge to ipu bridge and move out of ipu3")'
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
    2545a2c0
Kconfig 330 Bytes