Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cba44bdd authored by Amit Nischal's avatar Amit Nischal Committed by Odelu Kukatla
Browse files

clk: qcom: Add GCC clock driver for SM6150



Add support for peripheral clocks controlled by
global clock controller.

Change-Id: Iaae6267de7b56f830a02eed054b134f207e26339
Signed-off-by: default avatarAmit Nischal <anischal@codeaurora.org>
parent ad957023
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ Required properties :
			"qcom,gcc-sdmshrike"
			"qcom,gcc-qcs405"
			"qcom,gcc-mdss-qcs405"
			"qcom,gcc-sm6150"

- reg : shall contain base register location and length
- #clock-cells : shall contain 1
+9 −0
Original line number Diff line number Diff line
@@ -341,3 +341,12 @@ config CLOCK_CPU_QCS405
	 based devices.
	 Say Y if you want to support CPU clock scaling using
	 CPUfreq drivers for dynamic power management.

config MSM_GCC_SM6150
	tristate "SM6150 Global Clock Controller"
	depends on COMMON_CLK_QCOM
	help
	  Support for the global clock controller on Qualcomm Technologies, Inc
	  SM6150 devices.
	  Say Y if you want to use peripheral devices such as UART, SPI, I2C,
	  USB, UFS, SD/eMMC, PCIe, etc.
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ obj-$(CONFIG_MSM_GCC_8960) += gcc-msm8960.o
obj-$(CONFIG_MSM_GCC_8974) += gcc-msm8974.o
obj-$(CONFIG_MSM_GCC_8994) += gcc-msm8994.o
obj-$(CONFIG_MSM_GCC_8996) += gcc-msm8996.o
obj-$(CONFIG_MSM_GCC_SM6150) += gcc-sm6150.o
obj-$(CONFIG_MSM_GCC_SM8150) += gcc-sm8150.o
obj-$(CONFIG_MSM_GCC_SDMSHRIKE) += gcc-sdmshrike.o
obj-$(CONFIG_MSM_GPUCC_SM8150) += gpucc-sm8150.o
+3501 −0

File added.

Preview size limit exceeded, changes collapsed.

+67 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef __DRIVERS_CLK_QCOM_VDD_LEVEL_SM6150_H
#define __DRIVERS_CLK_QCOM_VDD_LEVEL_SM6150_H

#include <linux/regulator/consumer.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>

enum vdd_mx_levels {
	VDD_MX_NONE,
	VDD_MX_MIN,		/* MIN SVS */
	VDD_MX_LOWER,		/* SVS2 */
	VDD_MX_LOW,		/* SVS */
	VDD_MX_LOW_L1,		/* SVSL1 */
	VDD_MX_NOMINAL,		/* NOM */
	VDD_MX_HIGH,		/* TURBO */
	VDD_MX_NUM,
};

static int vdd_mx_corner[] = {
	RPMH_REGULATOR_LEVEL_OFF,		/* VDD_NONE */
	RPMH_REGULATOR_LEVEL_MIN_SVS,		/* VDD_MIN */
	RPMH_REGULATOR_LEVEL_LOW_SVS,		/* VDD_LOWER */
	RPMH_REGULATOR_LEVEL_SVS,		/* VDD_LOW */
	RPMH_REGULATOR_LEVEL_SVS_L1,		/* VDD_LOW_L1 */
	RPMH_REGULATOR_LEVEL_NOM,		/* VDD_NOMINAL */
	RPMH_REGULATOR_LEVEL_TURBO,		/* VDD_HIGH */
};

enum vdd_levels {
	VDD_NONE,
	VDD_MIN,		/* MIN SVS */
	VDD_LOWER,		/* SVS2 */
	VDD_LOW,		/* SVS */
	VDD_LOW_L1,		/* SVSL1 */
	VDD_NOMINAL,		/* NOM */
	VDD_NOMINAL_L1,		/* NOM1 */
	VDD_HIGH,		/* TURBO */
	VDD_HIGH_L1,		/* TURBO1 */
	VDD_NUM,
};

static int vdd_corner[] = {
	RPMH_REGULATOR_LEVEL_OFF,	/* VDD_NONE */
	RPMH_REGULATOR_LEVEL_MIN_SVS,	/* VDD_MIN */
	RPMH_REGULATOR_LEVEL_LOW_SVS,	/* VDD_LOWER */
	RPMH_REGULATOR_LEVEL_SVS,	/* VDD_LOW */
	RPMH_REGULATOR_LEVEL_SVS_L1,	/* VDD_LOW_L1 */
	RPMH_REGULATOR_LEVEL_NOM,	/* VDD_NOMINAL */
	RPMH_REGULATOR_LEVEL_NOM_L1,	/* VDD_NOMINAL_L1 */
	RPMH_REGULATOR_LEVEL_TURBO,	/* VDD_HIGH */
	RPMH_REGULATOR_LEVEL_TURBO_L1,	/* VDD_HIGH_L1 */
	RPMH_REGULATOR_LEVEL_MAX,	/* VDD_MAX */
};

#endif
Loading