Skip to content
  • Arnd Bergmann's avatar
    spi: fix building SPI_PXA on MMP · 128345b1
    Arnd Bergmann authored and Mark Brown's avatar Mark Brown committed
    When the audio driver selects CONFIG_PXA_SSP on ARCH_MMP as a
    loadable module, and the PXA SPI driver is built-in, we get
    a link error in the SPI driver:
    
    drivers/spi/spi-pxa2xx.o: In function `pxa2xx_spi_remove':
    spi-pxa2xx.c:(.text+0x5f0): undefined reference to `pxa_ssp_free'
    drivers/spi/spi-pxa2xx.o: In function `pxa2xx_spi_probe':
    spi-pxa2xx.c:(.text+0xeac): undefined reference to `pxa_ssp_request'
    spi-pxa2xx.c:(.text+0x1468): undefined reference to `pxa_ssp_free'
    spi-pxa2xx.c:(.text+0x15bc): undefined reference to `pxa_ssp_free'
    
    The problem is that the PXA SPI driver only uses 'select SSP'
    specifically when building it for PXA, but we can also build it
    for PCI, which is meant for Intel x86 SoCs that use the same SPI
    block. When the sound driver forces the SSP to be a loadable
    module, the IS_ENABLED() check in include/linux/pxa2xx_ssp.h
    triggers but the spi driver can't reference the exported symbols.
    
    I had a different approach before, making the PCI case depend
    on X86, which fixed the problem by avoiding the MMP case.
    
    This goes a different route, making the driver select PXA_SSP
    also on MMP, which has an SSP that none of the boards in mainline
    Linux use for SPI. There is no harm in always enabling the build
    on MMP (PCI or not PCI), so I do that too, to document that this
    hardware is actually available on MMP.
    
    Link: https://patchwork.kernel.org/patch/8879921/
    
    
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    128345b1