• Arnd Bergmann's avatar
    qcom_scm: hide Kconfig symbol · 424953cf
    Arnd Bergmann authored
    Now that SCM can be a loadable module, we have to add another
    dependency to avoid link failures when ipa or adreno-gpu are
    built-in:
    
    aarch64-linux-ld: drivers/net/ipa/ipa_main.o: in function `ipa_probe':
    ipa_main.c:(.text+0xfc4): undefined reference to `qcom_scm_is_available'
    
    ld.lld: error: undefined symbol: qcom_scm_is_available
    >>> referenced by adreno_gpu.c
    >>>               gpu/drm/msm/adreno/adreno_gpu.o:(adreno_zap_shader_load) in archive drivers/built-in.a
    
    This can happen when CONFIG_ARCH_QCOM is disabled and we don't select
    QCOM_MDT_LOADER, but some other module selects QCOM_SCM. Ideally we'd
    use a similar dependency here to what we have for QCOM_RPROC_COMMON,
    but that causes dependency loops from other things selecting QCOM_SCM.
    
    This appears to be an endless problem, so try something different this
    time:
    
     - CONFIG_QCOM_SCM becomes a hidden symbol that nothing 'depends on'
       but that is simply selected by all of its users
    
     - All the stubs in include/linux/qcom_scm.h can go away
    
     - arm-smccc.h needs to provide a stub for __arm_smccc_smc() to
       allow compile-testing QCOM_SCM on all architectures.
    
     - To avoid a circular dependency chain involving RESET_CONTROLLER
       and PINCTRL_SUNXI, drop the 'select RESET_CONTROLLER' statement.
       According to my testing this still builds fine, and the QCOM
       platform selects this symbol already.
    Acked-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Acked-by: default avatarAlex Elder <elder@linaro.org>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    424953cf
Kconfig 33.2 KB