From: Aswin Murugan <[email protected]> Make Qualcomm clock-driver selection phase-aware so SPL builds only the drivers it needs, reducing the SPL image size.
Signed-off-by: Abhilash V <[email protected]> Signed-off-by: Aswin Murugan <[email protected]> --- drivers/clk/qcom/Kconfig | 208 ++++++++++++++++++++++++++++++++++++++ drivers/clk/qcom/Makefile | 48 ++++----- 2 files changed, 232 insertions(+), 24 deletions(-) diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig index aff3f5418a0..899f44cb8dc 100644 --- a/drivers/clk/qcom/Kconfig +++ b/drivers/clk/qcom/Kconfig @@ -5,6 +5,11 @@ config CLK_QCOM depends on CLK && DM_RESET && POWER_DOMAIN def_bool n +config SPL_CLK_QCOM + bool + depends on SPL_CLK && SPL_DM_RESET && SPL_POWER_DOMAIN + def_bool n + menu "Qualcomm clock drivers" config CLK_QCOM_APQ8016 @@ -15,6 +20,14 @@ config CLK_QCOM_APQ8016 on the Snapdragon APQ8016 SoC. This driver supports the clocks and resets exposed by the GCC hardware block. +config SPL_CLK_QCOM_APQ8016 + bool "Qualcomm APQ8016 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + SPL variant of CLK_QCOM_APQ8016. + See the help of CLK_QCOM_APQ8016 for details. + config CLK_QCOM_APQ8096 bool "Qualcomm APQ8096 GCC" select CLK_QCOM @@ -23,6 +36,14 @@ config CLK_QCOM_APQ8096 on the Snapdragon APQ8096 SoC. This driver supports the clocks and resets exposed by the GCC hardware block. +config SPL_CLK_QCOM_APQ8096 + bool "Qualcomm APQ8096 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + SPL variant of CLK_QCOM_APQ8096. + See the help of CLK_QCOM_APQ8096 for details. + config CLK_QCOM_IPQ4019 bool "Qualcomm IPQ4019 GCC" select CLK_QCOM @@ -206,6 +227,193 @@ config CLK_QCOM_X1E80100 on the Snapdragon X1E80100 SoC. This driver supports the clocks and resets exposed by the GCC hardware block. +config SPL_CLK_QCOM_IPQ4019 + bool "Qualcomm IPQ4019 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm IPQ4019 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_IPQ5210 + bool "Qualcomm IPQ5210 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm IPQ5210 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_IPQ5424 + bool "Qualcomm IPQ5424 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm IPQ5424 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_IPQ9574 + bool "Qualcomm IPQ9574 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm IPQ9574 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_MILOS + bool "Qualcomm Milos GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm Milos Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_QCM2290 + bool "Qualcomm QCM2290 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm QCM2290 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_QCS404 + bool "Qualcomm QCS404 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm QCS404 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_QCS615 + bool "Qualcomm QCS615 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm QCS615 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_QCS8300 + bool "Qualcomm QCS8300 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm QCS8300 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_RPMH + bool "Qualcomm RPMh clock driver in SPL" + depends on SPL_CLK + help + Enable the Qualcomm RPMh clock driver in SPL. + This provides RPMh-managed clocks needed during early boot. + +config SPL_CLK_QCOM_SA8775P + bool "Qualcomm SA8775 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + select SPL_CLK_QCOM_RPMH + help + Enable the Qualcomm SA8775P Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SDM845 + bool "Qualcomm SDM845 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm SDM845 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SHIKRA + bool "Qualcomm Shikra GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm Shikra Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SM6115 + bool "Qualcomm SM6115 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm SM6115 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SM6125 + bool "Qualcomm SM6125 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm SM6125 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SM6350 + bool "Qualcomm SM6350 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm SM6350 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SM7150 + bool "Qualcomm SM7150 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm SM7150 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SM8150 + bool "Qualcomm SM8150 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm SM8150 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SM8250 + bool "Qualcomm SM8250 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm SM8250 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SM8550 + bool "Qualcomm SM8550 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + select SPL_CLK_QCOM_RPMH + help + Enable the Qualcomm SM8550 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SM8650 + bool "Qualcomm SM8650 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + select SPL_CLK_QCOM_RPMH + help + Enable the Qualcomm SM8650 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_SC7280 + bool "Qualcomm SC7280 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + select SPL_CLK_QCOM_RPMH + help + Enable the Qualcomm SC7280 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + +config SPL_CLK_QCOM_X1E80100 + bool "Qualcomm X1E80100 GCC in SPL" + depends on SPL_CLK + select SPL_CLK_QCOM + help + Enable the Qualcomm X1E80100 Global Clock Controller in SPL. + This includes only the clock driver needed during early boot. + endmenu endif diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile index 8da2ff7e73e..7c4db9986d1 100644 --- a/drivers/clk/qcom/Makefile +++ b/drivers/clk/qcom/Makefile @@ -3,28 +3,28 @@ # (C) Copyright 2023 Linaro obj-y += clock-qcom.o -obj-$(CONFIG_CLK_QCOM_SDM845) += clock-sdm845.o -obj-$(CONFIG_CLK_QCOM_APQ8016) += clock-apq8016.o -obj-$(CONFIG_CLK_QCOM_APQ8096) += clock-apq8096.o -obj-$(CONFIG_CLK_QCOM_IPQ4019) += clock-ipq4019.o -obj-$(CONFIG_CLK_QCOM_IPQ5210) += clock-ipq5210.o -obj-$(CONFIG_CLK_QCOM_IPQ5424) += clock-ipq5424.o -obj-$(CONFIG_CLK_QCOM_IPQ9574) += clock-ipq9574.o -obj-$(CONFIG_CLK_QCOM_MILOS) += clock-milos.o -obj-$(CONFIG_CLK_QCOM_QCM2290) += clock-qcm2290.o -obj-$(CONFIG_CLK_QCOM_QCS404) += clock-qcs404.o -obj-$(CONFIG_CLK_QCOM_QCS8300) += clock-qcs8300.o -obj-$(CONFIG_CLK_QCOM_QCS615) += clock-qcs615.o -obj-$(CONFIG_CLK_QCOM_SA8775P) += clock-sa8775p.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SDM845) += clock-sdm845.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_APQ8016) += clock-apq8016.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_APQ8096) += clock-apq8096.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_IPQ4019) += clock-ipq4019.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_IPQ5210) += clock-ipq5210.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_IPQ5424) += clock-ipq5424.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_IPQ9574) += clock-ipq9574.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_MILOS) += clock-milos.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_QCM2290) += clock-qcm2290.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_QCS404) += clock-qcs404.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_QCS8300) += clock-qcs8300.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_QCS615) += clock-qcs615.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SA8775P) += clock-sa8775p.o obj-$(CONFIG_CLK_QCOM_SC7180) += clock-sc7180.o -obj-$(CONFIG_CLK_QCOM_SC7280) += clock-sc7280.o -obj-$(CONFIG_CLK_QCOM_SHIKRA) += clock-shikra.o -obj-$(CONFIG_CLK_QCOM_SM6115) += clock-sm6115.o -obj-$(CONFIG_CLK_QCOM_SM6125) += clock-sm6125.o -obj-$(CONFIG_CLK_QCOM_SM6350) += clock-sm6350.o -obj-$(CONFIG_CLK_QCOM_SM7150) += clock-sm7150.o -obj-$(CONFIG_CLK_QCOM_SM8150) += clock-sm8150.o -obj-$(CONFIG_CLK_QCOM_SM8250) += clock-sm8250.o -obj-$(CONFIG_CLK_QCOM_SM8550) += clock-sm8550.o -obj-$(CONFIG_CLK_QCOM_SM8650) += clock-sm8650.o -obj-$(CONFIG_CLK_QCOM_X1E80100) += clock-x1e80100.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SC7280) += clock-sc7280.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SHIKRA) += clock-shikra.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SM6115) += clock-sm6115.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SM6125) += clock-sm6125.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SM6350) += clock-sm6350.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SM7150) += clock-sm7150.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SM8150) += clock-sm8150.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SM8250) += clock-sm8250.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SM8550) += clock-sm8550.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_SM8650) += clock-sm8650.o +obj-$(CONFIG_$(PHASE_)CLK_QCOM_X1E80100) += clock-x1e80100.o -- 2.34.1
