clk/qcom: move from mach-snapdragon

Clock drivers don't belong here, move them to the right place and
declutter mach-snapdragon a bit.

To de-couple these drivers from specific "target" platforms, add
additional config options to enable each clock driver gated behind a
common CLK_QCOM option and enable them by default for the respective
targets. This will make future work easier as we move towards a generic
Qualcomm target.

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
This commit is contained in:
Caleb Connolly 2023-11-07 12:40:59 +00:00
parent 697758e7c8
commit a623c14f43
No known key found for this signature in database
GPG key ID: 7930459FB9303217
13 changed files with 66 additions and 10 deletions

View file

@ -575,6 +575,7 @@ M: Neil Armstrong <neil.armstrong@linaro.org>
R: Sumit Garg <sumit.garg@linaro.org> R: Sumit Garg <sumit.garg@linaro.org>
S: Maintained S: Maintained
F: arch/arm/mach-snapdragon/ F: arch/arm/mach-snapdragon/
F: drivers/clk/qcom/
F: drivers/gpio/msm_gpio.c F: drivers/gpio/msm_gpio.c
F: drivers/mmc/msm_sdhci.c F: drivers/mmc/msm_sdhci.c
F: drivers/phy/msm8916-usbh-phy.c F: drivers/phy/msm8916-usbh-phy.c

View file

@ -15,6 +15,7 @@ config SPL_SYS_MALLOC_F_LEN
config SDM845 config SDM845
bool "Qualcomm Snapdragon 845 SoC" bool "Qualcomm Snapdragon 845 SoC"
select LINUX_KERNEL_IMAGE_HEADER select LINUX_KERNEL_IMAGE_HEADER
imply CLK_QCOM_SDM845
config LNX_KRNL_IMG_TEXT_OFFSET_BASE config LNX_KRNL_IMG_TEXT_OFFSET_BASE
default 0x80000000 default 0x80000000
@ -26,6 +27,7 @@ config TARGET_DRAGONBOARD410C
bool "96Boards Dragonboard 410C" bool "96Boards Dragonboard 410C"
select BOARD_LATE_INIT select BOARD_LATE_INIT
select ENABLE_ARM_SOC_BOOT0_HOOK select ENABLE_ARM_SOC_BOOT0_HOOK
imply CLK_QCOM_APQ8016
help help
Support for 96Boards Dragonboard 410C. This board complies with Support for 96Boards Dragonboard 410C. This board complies with
96Board Open Platform Specifications. Features: 96Board Open Platform Specifications. Features:
@ -39,6 +41,7 @@ config TARGET_DRAGONBOARD410C
config TARGET_DRAGONBOARD820C config TARGET_DRAGONBOARD820C
bool "96Boards Dragonboard 820C" bool "96Boards Dragonboard 820C"
imply CLK_QCOM_APQ8096
help help
Support for 96Boards Dragonboard 820C. This board complies with Support for 96Boards Dragonboard 820C. This board complies with
96Board Open Platform Specifications. Features: 96Board Open Platform Specifications. Features:
@ -72,6 +75,7 @@ config TARGET_STARQLTECHN
config TARGET_QCS404EVB config TARGET_QCS404EVB
bool "Qualcomm Technologies, Inc. QCS404 EVB" bool "Qualcomm Technologies, Inc. QCS404 EVB"
select LINUX_KERNEL_IMAGE_HEADER select LINUX_KERNEL_IMAGE_HEADER
imply CLK_QCOM_QCS404
help help
Support for Qualcomm Technologies, Inc. QCS404 evaluation board. Support for Qualcomm Technologies, Inc. QCS404 evaluation board.
Features: Features:

View file

@ -2,20 +2,15 @@
# #
# (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com> # (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
obj-$(CONFIG_SDM845) += clock-sdm845.o
obj-$(CONFIG_SDM845) += sysmap-sdm845.o obj-$(CONFIG_SDM845) += sysmap-sdm845.o
obj-$(CONFIG_SDM845) += init_sdm845.o obj-$(CONFIG_SDM845) += init_sdm845.o
obj-$(CONFIG_TARGET_DRAGONBOARD820C) += clock-apq8096.o
obj-$(CONFIG_TARGET_DRAGONBOARD820C) += sysmap-apq8096.o obj-$(CONFIG_TARGET_DRAGONBOARD820C) += sysmap-apq8096.o
obj-$(CONFIG_TARGET_DRAGONBOARD410C) += clock-apq8016.o
obj-$(CONFIG_TARGET_DRAGONBOARD410C) += sysmap-apq8016.o obj-$(CONFIG_TARGET_DRAGONBOARD410C) += sysmap-apq8016.o
obj-y += misc.o obj-y += misc.o
obj-y += clock-snapdragon.o
obj-y += dram.o obj-y += dram.o
obj-y += pinctrl-snapdragon.o obj-y += pinctrl-snapdragon.o
obj-y += pinctrl-apq8016.o obj-y += pinctrl-apq8016.o
obj-y += pinctrl-apq8096.o obj-y += pinctrl-apq8096.o
obj-y += pinctrl-qcs404.o obj-y += pinctrl-qcs404.o
obj-y += pinctrl-sdm845.o obj-y += pinctrl-sdm845.o
obj-$(CONFIG_TARGET_QCS404EVB) += clock-qcs404.o
obj-$(CONFIG_TARGET_QCS404EVB) += sysmap-qcs404.o obj-$(CONFIG_TARGET_QCS404EVB) += sysmap-qcs404.o

View file

@ -254,6 +254,7 @@ source "drivers/clk/meson/Kconfig"
source "drivers/clk/microchip/Kconfig" source "drivers/clk/microchip/Kconfig"
source "drivers/clk/mvebu/Kconfig" source "drivers/clk/mvebu/Kconfig"
source "drivers/clk/owl/Kconfig" source "drivers/clk/owl/Kconfig"
source "drivers/clk/qcom/Kconfig"
source "drivers/clk/renesas/Kconfig" source "drivers/clk/renesas/Kconfig"
source "drivers/clk/sunxi/Kconfig" source "drivers/clk/sunxi/Kconfig"
source "drivers/clk/sifive/Kconfig" source "drivers/clk/sifive/Kconfig"

View file

@ -39,6 +39,7 @@ obj-$(CONFIG_CLK_MPFS) += microchip/
obj-$(CONFIG_CLK_MVEBU) += mvebu/ obj-$(CONFIG_CLK_MVEBU) += mvebu/
obj-$(CONFIG_CLK_OCTEON) += clk_octeon.o obj-$(CONFIG_CLK_OCTEON) += clk_octeon.o
obj-$(CONFIG_CLK_OWL) += owl/ obj-$(CONFIG_CLK_OWL) += owl/
obj-$(CONFIG_CLK_QCOM) += qcom/
obj-$(CONFIG_CLK_RENESAS) += renesas/ obj-$(CONFIG_CLK_RENESAS) += renesas/
obj-$(CONFIG_$(SPL_TPL_)CLK_SCMI) += clk_scmi.o obj-$(CONFIG_$(SPL_TPL_)CLK_SCMI) += clk_scmi.o
obj-$(CONFIG_CLK_SIFIVE) += sifive/ obj-$(CONFIG_CLK_SIFIVE) += sifive/

44
drivers/clk/qcom/Kconfig Normal file
View file

@ -0,0 +1,44 @@
if ARCH_SNAPDRAGON || ARCH_IPQ40XX
config CLK_QCOM
bool
depends on CLK && DM_RESET
def_bool n
menu "Qualcomm clock drivers"
config CLK_QCOM_APQ8016
bool "Qualcomm APQ8016 GCC"
select CLK_QCOM
help
Say Y here to enable support for the Global Clock Controller
on the Snapdragon APQ8016 SoC. This driver supports the clocks
and resets exposed by the GCC hardware block.
config CLK_QCOM_APQ8096
bool "Qualcomm APQ8096 GCC"
select CLK_QCOM
help
Say Y here to enable support for the Global Clock Controller
on the Snapdragon APQ8096 SoC. This driver supports the clocks
and resets exposed by the GCC hardware block.
config CLK_QCOM_QCS404
bool "Qualcomm QCS404 GCC"
select CLK_QCOM
help
Say Y here to enable support for the Global Clock Controller
on the Snapdragon QCS404 SoC. This driver supports the clocks
and resets exposed by the GCC hardware block.
config CLK_QCOM_SDM845
bool "Qualcomm SDM845 GCC"
select CLK_QCOM
help
Say Y here to enable support for the Global Clock Controller
on the Snapdragon 845 SoC. This driver supports the clocks
and resets exposed by the GCC hardware block.
endmenu
endif

View file

@ -0,0 +1,9 @@
# SPDX-License-Identifier: GPL-2.0+
#
# (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_QCS404) += clock-qcs404.o

View file

@ -13,7 +13,7 @@
#include <errno.h> #include <errno.h>
#include <asm/io.h> #include <asm/io.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include "clock-snapdragon.h" #include "clock-qcom.h"
/* GPLL0 clock control registers */ /* GPLL0 clock control registers */
#define GPLL0_STATUS_ACTIVE BIT(17) #define GPLL0_STATUS_ACTIVE BIT(17)

View file

@ -13,7 +13,8 @@
#include <errno.h> #include <errno.h>
#include <asm/io.h> #include <asm/io.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include "clock-snapdragon.h"
#include "clock-qcom.h"
/* GPLL0 clock control registers */ /* GPLL0 clock control registers */
#define GPLL0_STATUS_ACTIVE BIT(30) #define GPLL0_STATUS_ACTIVE BIT(30)

View file

@ -13,7 +13,7 @@
#include <errno.h> #include <errno.h>
#include <asm/io.h> #include <asm/io.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include "clock-snapdragon.h" #include "clock-qcom.h"
/* CBCR register fields */ /* CBCR register fields */
#define CBCR_BRANCH_ENABLE_BIT BIT(0) #define CBCR_BRANCH_ENABLE_BIT BIT(0)

View file

@ -11,7 +11,7 @@
#include <errno.h> #include <errno.h>
#include <asm/io.h> #include <asm/io.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include "clock-snapdragon.h" #include "clock-qcom.h"
#include <dt-bindings/clock/qcom,gcc-qcs404.h> #include <dt-bindings/clock/qcom,gcc-qcs404.h>

View file

@ -15,7 +15,7 @@
#include <asm/io.h> #include <asm/io.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <dt-bindings/clock/qcom,gcc-sdm845.h> #include <dt-bindings/clock/qcom,gcc-sdm845.h>
#include "clock-snapdragon.h" #include "clock-qcom.h"
#define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) } #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }