clk: scmi: Add Kconfig option for SPL
authorJonas Karlman <jonas@kwiboo.se>
Mon, 17 Apr 2023 19:07:18 +0000 (19:07 +0000)
committerKever Yang <kever.yang@rock-chips.com>
Fri, 21 Apr 2023 07:16:01 +0000 (15:16 +0800)
Building U-Boot SPL with CLK_SCMI and SCMI_FIRMWARE Kconfig options
enabled and SPL_FIRMWARE disabled result in the following error.

  drivers/clk/clk_scmi.o: in function `scmi_clk_gate':
  drivers/clk/clk_scmi.c:84: undefined reference to `devm_scmi_process_msg'
  drivers/clk/clk_scmi.c:88: undefined reference to `scmi_to_linux_errno'
  drivers/clk/clk_scmi.o: in function `scmi_clk_get_rate':
  drivers/clk/clk_scmi.c:113: undefined reference to `devm_scmi_process_msg'
  drivers/clk/clk_scmi.c:117: undefined reference to `scmi_to_linux_errno'
  drivers/clk/clk_scmi.o: in function `scmi_clk_set_rate':
  drivers/clk/clk_scmi.c:139: undefined reference to `devm_scmi_process_msg'
  drivers/clk/clk_scmi.c:143: undefined reference to `scmi_to_linux_errno'
  drivers/clk/clk_scmi.o: in function `scmi_clk_probe':
  drivers/clk/clk_scmi.c:157: undefined reference to `devm_scmi_of_get_channel'
  make[1]: *** [scripts/Makefile.spl:527: spl/u-boot-spl] Error 1
  make: *** [Makefile:2043: spl/u-boot-spl] Error 2

Add Kconfig option so that CLK_SCMI can be disabled in SPL to fix this.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
drivers/clk/Kconfig
drivers/clk/Makefile
drivers/firmware/scmi/scmi_agent-uclass.c

index 42280cb..19269c7 100644 (file)
@@ -166,6 +166,14 @@ config CLK_SCMI
          by a SCMI agent based on SCMI clock protocol communication
          with a SCMI server.
 
+config SPL_CLK_SCMI
+       bool "Enable SCMI clock driver in SPL"
+       depends on SCMI_FIRMWARE && SPL_FIRMWARE
+       help
+         Enable this option if you want to support clock devices exposed
+         by a SCMI agent based on SCMI clock protocol communication
+         with a SCMI server in SPL.
+
 config CLK_HSDK
        bool "Enable cgu clock driver for HSDK boards"
        depends on CLK && TARGET_HSDK
index c274cda..c134777 100644 (file)
@@ -39,7 +39,7 @@ obj-$(CONFIG_CLK_MVEBU) += mvebu/
 obj-$(CONFIG_CLK_OCTEON) += clk_octeon.o
 obj-$(CONFIG_CLK_OWL) += owl/
 obj-$(CONFIG_CLK_RENESAS) += renesas/
-obj-$(CONFIG_CLK_SCMI) += clk_scmi.o
+obj-$(CONFIG_$(SPL_TPL_)CLK_SCMI) += clk_scmi.o
 obj-$(CONFIG_CLK_SIFIVE) += sifive/
 obj-$(CONFIG_CLK_UNIPHIER) += uniphier/
 obj-$(CONFIG_CLK_VERSACLOCK) += clk_versaclock.o
index 9a32678..54d563d 100644 (file)
@@ -75,7 +75,7 @@ static int scmi_bind_protocols(struct udevice *dev)
                name = ofnode_get_name(node);
                switch (protocol_id) {
                case SCMI_PROTOCOL_ID_CLOCK:
-                       if (IS_ENABLED(CONFIG_CLK_SCMI))
+                       if (CONFIG_IS_ENABLED(CLK_SCMI))
                                drv = DM_DRIVER_GET(scmi_clock);
                        break;
                case SCMI_PROTOCOL_ID_RESET_DOMAIN: