mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 12:58:12 -04:00
Merge "bindings: clock: qcom: Update the GPU CC clock IDs"
This commit is contained in:
commit
2f20b6b85e
3 changed files with 86 additions and 33 deletions
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2013, 2016-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013, 2016-2020, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
|
|
@ -11,6 +11,7 @@
|
|||
#include <linux/clk.h>
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/clk/qcom.h>
|
||||
|
||||
#include "clk-branch.h"
|
||||
#include "clk-debug.h"
|
||||
|
|
@ -199,6 +200,10 @@ static void clk_branch2_init(struct clk_hw *hw)
|
|||
}
|
||||
|
||||
const struct clk_ops clk_branch2_ops = {
|
||||
.prepare = clk_prepare_regmap,
|
||||
.unprepare = clk_unprepare_regmap,
|
||||
.pre_rate_change = clk_pre_change_regmap,
|
||||
.post_rate_change = clk_post_change_regmap,
|
||||
.enable = clk_branch2_enable,
|
||||
.disable = clk_branch2_disable,
|
||||
.is_enabled = clk_is_enabled_regmap,
|
||||
|
|
@ -272,3 +277,55 @@ const struct clk_ops clk_branch_simple_ops = {
|
|||
.is_enabled = clk_is_enabled_regmap,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(clk_branch_simple_ops);
|
||||
|
||||
int qcom_clk_set_flags(struct clk *clk, unsigned long flags)
|
||||
{
|
||||
struct clk_hw *hw;
|
||||
struct clk_branch *br;
|
||||
u32 cbcr_val = 0, cbcr_mask;
|
||||
int ret;
|
||||
|
||||
if (IS_ERR_OR_NULL(clk))
|
||||
return 0;
|
||||
|
||||
hw = __clk_get_hw(clk);
|
||||
if (IS_ERR_OR_NULL(hw))
|
||||
return -EINVAL;
|
||||
|
||||
switch (flags) {
|
||||
case CLKFLAG_PERIPH_OFF_SET:
|
||||
cbcr_val = cbcr_mask = BIT(12);
|
||||
break;
|
||||
case CLKFLAG_PERIPH_OFF_CLEAR:
|
||||
cbcr_mask = BIT(12);
|
||||
break;
|
||||
case CLKFLAG_RETAIN_PERIPH:
|
||||
cbcr_val = cbcr_mask = BIT(13);
|
||||
break;
|
||||
case CLKFLAG_NORETAIN_PERIPH:
|
||||
cbcr_mask = BIT(13);
|
||||
break;
|
||||
case CLKFLAG_RETAIN_MEM:
|
||||
cbcr_val = cbcr_mask = BIT(14);
|
||||
break;
|
||||
case CLKFLAG_NORETAIN_MEM:
|
||||
cbcr_mask = BIT(14);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
br = to_clk_branch(hw);
|
||||
ret = regmap_update_bits(br->clkr.regmap, br->halt_reg, cbcr_mask,
|
||||
cbcr_val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Make sure power is enabled/disabled before returning. */
|
||||
mb();
|
||||
|
||||
udelay(1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(qcom_clk_set_flags);
|
||||
|
|
|
|||
|
|
@ -7,38 +7,24 @@
|
|||
#define _DT_BINDINGS_CLK_QCOM_GPU_CC_HOLI_H
|
||||
|
||||
/* GPU_CC clocks */
|
||||
#define GPU_CC_PLL0 0
|
||||
#define GPU_CC_PLL1 1
|
||||
#define GPU_CC_ACD_AHB_CLK 2
|
||||
#define GPU_CC_ACD_CXO_CLK 3
|
||||
#define GPU_CC_AHB_CLK 4
|
||||
#define GPU_CC_CRC_AHB_CLK 5
|
||||
#define GPU_CC_CX_APB_CLK 6
|
||||
#define GPU_CC_CX_GFX3D_CLK 7
|
||||
#define GPU_CC_CX_GFX3D_SLV_CLK 8
|
||||
#define GPU_CC_CX_GMU_CLK 9
|
||||
#define GPU_CC_CX_SNOC_DVM_CLK 10
|
||||
#define GPU_CC_CXO_AON_CLK 11
|
||||
#define GPU_CC_CXO_CLK 12
|
||||
#define GPU_CC_GMU_CLK_SRC 13
|
||||
#define GPU_CC_GX_CXO_CLK 14
|
||||
#define GPU_CC_GX_GFX3D_CLK 15
|
||||
#define GPU_CC_GX_GMU_CLK 16
|
||||
#define GPU_CC_GX_QDSS_TSCTR_CLK 17
|
||||
#define GPU_CC_GX_VSENSE_CLK 18
|
||||
#define GPU_CC_SLEEP_CLK 19
|
||||
#define GPU_CC_PLL0 0
|
||||
#define GPU_CC_PLL1 1
|
||||
#define GPU_CC_AHB_CLK 2
|
||||
#define GPU_CC_CX_GFX3D_CLK 3
|
||||
#define GPU_CC_CX_GFX3D_SLV_CLK 4
|
||||
#define GPU_CC_CX_GMU_CLK 5
|
||||
#define GPU_CC_CX_SNOC_DVM_CLK 6
|
||||
#define GPU_CC_CXO_AON_CLK 7
|
||||
#define GPU_CC_CXO_CLK 8
|
||||
#define GPU_CC_GMU_CLK_SRC 9
|
||||
#define GPU_CC_GX_CXO_CLK 10
|
||||
#define GPU_CC_GX_GFX3D_CLK 11
|
||||
#define GPU_CC_GX_GFX3D_CLK_SRC 12
|
||||
#define GPU_CC_GX_GMU_CLK 13
|
||||
#define GPU_CC_SLEEP_CLK 14
|
||||
|
||||
/* GPU_CC power domains */
|
||||
#define CX_GDSC 0
|
||||
#define GX_GDSC 1
|
||||
|
||||
/* GPU_CC resets */
|
||||
#define GPUCC_GPU_CC_ACD_BCR 0
|
||||
#define GPUCC_GPU_CC_CX_BCR 1
|
||||
#define GPUCC_GPU_CC_GFX3D_AON_BCR 2
|
||||
#define GPUCC_GPU_CC_GMU_BCR 3
|
||||
#define GPUCC_GPU_CC_GX_BCR 4
|
||||
#define GPUCC_GPU_CC_RBCPR_BCR 5
|
||||
#define GPUCC_GPU_CC_XO_BCR 6
|
||||
#define CX_GDSC 0
|
||||
#define GX_GDSC 1
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_CLK_QCOM_H_
|
||||
|
|
@ -8,6 +8,16 @@
|
|||
|
||||
#include <linux/clk-provider.h>
|
||||
|
||||
enum branch_mem_flags {
|
||||
CLKFLAG_RETAIN_PERIPH,
|
||||
CLKFLAG_NORETAIN_PERIPH,
|
||||
CLKFLAG_RETAIN_MEM,
|
||||
CLKFLAG_NORETAIN_MEM,
|
||||
CLKFLAG_PERIPH_OFF_SET,
|
||||
CLKFLAG_PERIPH_OFF_CLEAR,
|
||||
};
|
||||
|
||||
int qcom_clk_get_voltage(struct clk *clk, unsigned long rate);
|
||||
int qcom_clk_set_flags(struct clk *clk, unsigned long flags);
|
||||
|
||||
#endif /* __LINUX_CLK_QCOM_H_ */
|
||||
|
|
|
|||
Loading…
Reference in a new issue