• Arnd Bergmann's avatar
    iio: stm32: fix adc/trigger link error · 6d745ee8
    Arnd Bergmann authored
    The ADC driver can trigger on either the timer or the lptim
    trigger, but it only uses a Kconfig 'select' statement
    to ensure that the first of the two is present. When the lptim
    trigger is enabled as a loadable module, and the adc driver
    is built-in, we now get a link error:
    
    drivers/iio/adc/stm32-adc.o: In function `stm32_adc_get_trig_extsel':
    stm32-adc.c:(.text+0x4e0): undefined reference to `is_stm32_lptim_trigger'
    
    We could use a second 'select' statement and always have both
    trigger drivers enabled when the adc driver is, but it seems that
    the lptimer trigger was intentionally left optional, so it seems
    better to keep it that way.
    
    This adds a hack to use 'IS_REACHABLE()' rather than 'IS_ENABLED()',
    which avoids the link error, but instead leads to the lptimer trigger
    not being used in the broken configuration. I've added a runtime
    warning for this case to help users figure out what they did wrong
    if this should ever be done by accident.
    
    Fixes: f0b638a7 ("iio: adc: stm32: add support for lptimer triggers")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    6d745ee8
stm32-lptim-trigger.h 714 Bytes