Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
f85c6edf
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f85c6edf
编写于
2月 02, 2015
作者:
M
Michael Turquette
浏览文件
操作
浏览文件
下载
差异文件
Merge tag 'tegra-clk-3.20' of
git://nv-tegra.nvidia.com/user/pdeschrijver/linux
into clk-next
Tegra clock fixes for 3.20
上级
54eea32f
b270491e
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
532 addition
and
396 deletion
+532
-396
Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt
...ntation/devicetree/bindings/clock/nvidia,tegra124-car.txt
+6
-4
arch/arm/mach-tegra/tegra.c
arch/arm/mach-tegra/tegra.c
+0
-2
drivers/clk/tegra/Makefile
drivers/clk/tegra/Makefile
+1
-0
drivers/clk/tegra/clk-id.h
drivers/clk/tegra/clk-id.h
+0
-2
drivers/clk/tegra/clk-pll.c
drivers/clk/tegra/clk-pll.c
+11
-7
drivers/clk/tegra/clk-tegra-periph.c
drivers/clk/tegra/clk-tegra-periph.c
+8
-10
drivers/clk/tegra/clk-tegra114.c
drivers/clk/tegra/clk-tegra114.c
+8
-2
drivers/clk/tegra/clk-tegra124.c
drivers/clk/tegra/clk-tegra124.c
+139
-29
drivers/clk/tegra/clk.c
drivers/clk/tegra/clk.c
+5
-2
include/dt-bindings/clock/tegra124-car-common.h
include/dt-bindings/clock/tegra124-car-common.h
+345
-0
include/dt-bindings/clock/tegra124-car.h
include/dt-bindings/clock/tegra124-car.h
+9
-336
include/linux/clk/tegra.h
include/linux/clk/tegra.h
+0
-2
未找到文件。
Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt
浏览文件 @
f85c6edf
NVIDIA Tegra124 Clock And Reset Controller
NVIDIA Tegra124
and Tegra132
Clock And Reset Controller
This binding uses the common clock binding:
Documentation/devicetree/bindings/clock/clock-bindings.txt
...
...
@@ -7,14 +7,16 @@ The CAR (Clock And Reset) Controller on Tegra is the HW module responsible
for muxing and gating Tegra's clocks, and setting their rates.
Required properties :
- compatible : Should be "nvidia,tegra124-car"
- compatible : Should be "nvidia,tegra124-car"
or "nvidia,tegra132-car"
- reg : Should contain CAR registers location and length
- clocks : Should contain phandle and clock specifiers for two clocks:
the 32 KHz "32k_in", and the board-specific oscillator "osc".
- #clock-cells : Should be 1.
In clock consumers, this cell represents the clock ID exposed by the
CAR. The assignments may be found in header file
<dt-bindings/clock/tegra124-car.h>.
CAR. The assignments may be found in the header files
<dt-bindings/clock/tegra124-car-common.h> (which covers IDs common
to Tegra124 and Tegra132) and <dt-bindings/clock/tegra124-car.h>
(for Tegra124-specific clocks).
- #reset-cells : Should be 1.
In clock consumers, this cell represents the bit number in the CAR's
array of CLK_RST_CONTROLLER_RST_DEVICES_* registers.
...
...
arch/arm/mach-tegra/tegra.c
浏览文件 @
f85c6edf
...
...
@@ -91,8 +91,6 @@ static void __init tegra_dt_init(void)
struct
soc_device
*
soc_dev
;
struct
device
*
parent
=
NULL
;
tegra_clocks_apply_init_table
();
soc_dev_attr
=
kzalloc
(
sizeof
(
*
soc_dev_attr
),
GFP_KERNEL
);
if
(
!
soc_dev_attr
)
goto
out
;
...
...
drivers/clk/tegra/Makefile
浏览文件 @
f85c6edf
...
...
@@ -15,3 +15,4 @@ obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += clk-tegra20.o
obj-$(CONFIG_ARCH_TEGRA_3x_SOC)
+=
clk-tegra30.o
obj-$(CONFIG_ARCH_TEGRA_114_SOC)
+=
clk-tegra114.o
obj-$(CONFIG_ARCH_TEGRA_124_SOC)
+=
clk-tegra124.o
obj-$(CONFIG_ARCH_TEGRA_132_SOC)
+=
clk-tegra124.o
drivers/clk/tegra/clk-id.h
浏览文件 @
f85c6edf
...
...
@@ -64,10 +64,8 @@ enum clk_id {
tegra_clk_disp2
,
tegra_clk_dp2
,
tegra_clk_dpaux
,
tegra_clk_dsia
,
tegra_clk_dsialp
,
tegra_clk_dsia_mux
,
tegra_clk_dsib
,
tegra_clk_dsiblp
,
tegra_clk_dsib_mux
,
tegra_clk_dtv
,
...
...
drivers/clk/tegra/clk-pll.c
浏览文件 @
f85c6edf
...
...
@@ -816,7 +816,9 @@ const struct clk_ops tegra_clk_plle_ops = {
.
enable
=
clk_plle_enable
,
};
#if defined(CONFIG_ARCH_TEGRA_114_SOC) || defined(CONFIG_ARCH_TEGRA_124_SOC)
#if defined(CONFIG_ARCH_TEGRA_114_SOC) || \
defined(CONFIG_ARCH_TEGRA_124_SOC) || \
defined(CONFIG_ARCH_TEGRA_132_SOC)
static
int
_pll_fixed_mdiv
(
struct
tegra_clk_pll_params
*
pll_params
,
unsigned
long
parent_rate
)
...
...
@@ -1505,7 +1507,9 @@ struct clk *tegra_clk_register_plle(const char *name, const char *parent_name,
return
clk
;
}
#if defined(CONFIG_ARCH_TEGRA_114_SOC) || defined(CONFIG_ARCH_TEGRA_124_SOC)
#if defined(CONFIG_ARCH_TEGRA_114_SOC) || \
defined(CONFIG_ARCH_TEGRA_124_SOC) || \
defined(CONFIG_ARCH_TEGRA_132_SOC)
static
const
struct
clk_ops
tegra_clk_pllxc_ops
=
{
.
is_enabled
=
clk_pll_is_enabled
,
.
enable
=
clk_pll_iddq_enable
,
...
...
@@ -1565,7 +1569,7 @@ struct clk *tegra_clk_register_pllxc(const char *name, const char *parent_name,
parent
=
__clk_lookup
(
parent_name
);
if
(
!
parent
)
{
WARN
(
1
,
"parent clk %s of %s must be registered first
\n
"
,
name
,
parent_
name
);
parent_name
,
name
);
return
ERR_PTR
(
-
EINVAL
);
}
...
...
@@ -1665,7 +1669,7 @@ struct clk *tegra_clk_register_pllm(const char *name, const char *parent_name,
parent
=
__clk_lookup
(
parent_name
);
if
(
!
parent
)
{
WARN
(
1
,
"parent clk %s of %s must be registered first
\n
"
,
name
,
parent_
name
);
parent_name
,
name
);
return
ERR_PTR
(
-
EINVAL
);
}
...
...
@@ -1706,7 +1710,7 @@ struct clk *tegra_clk_register_pllc(const char *name, const char *parent_name,
parent
=
__clk_lookup
(
parent_name
);
if
(
!
parent
)
{
WARN
(
1
,
"parent clk %s of %s must be registered first
\n
"
,
name
,
parent_
name
);
parent_name
,
name
);
return
ERR_PTR
(
-
EINVAL
);
}
...
...
@@ -1802,7 +1806,7 @@ struct clk *tegra_clk_register_plle_tegra114(const char *name,
}
#endif
#if
def CONFIG_ARCH_TEGRA_124_SOC
#if
defined(CONFIG_ARCH_TEGRA_124_SOC) || defined(CONFIG_ARCH_TEGRA_132_SOC)
static
const
struct
clk_ops
tegra_clk_pllss_ops
=
{
.
is_enabled
=
clk_pll_is_enabled
,
.
enable
=
clk_pll_iddq_enable
,
...
...
@@ -1830,7 +1834,7 @@ struct clk *tegra_clk_register_pllss(const char *name, const char *parent_name,
parent
=
__clk_lookup
(
parent_name
);
if
(
!
parent
)
{
WARN
(
1
,
"parent clk %s of %s must be registered first
\n
"
,
name
,
parent_
name
);
parent_name
,
name
);
return
ERR_PTR
(
-
EINVAL
);
}
...
...
drivers/clk/tegra/clk-tegra-periph.c
浏览文件 @
f85c6edf
...
...
@@ -434,10 +434,10 @@ static struct tegra_periph_init_data periph_clks[] = {
MUX
(
"hda"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_HDA
,
125
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_hda
),
MUX
(
"hda2codec_2x"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_HDA2CODEC_2X
,
111
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_hda2codec_2x
),
MUX
(
"vfir"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_VFIR
,
7
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_vfir
),
MUX
(
"sdmmc1"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_SDMMC1
,
14
,
0
,
tegra_clk_sdmmc1
),
MUX
(
"sdmmc2"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_SDMMC2
,
9
,
0
,
tegra_clk_sdmmc2
),
MUX
(
"sdmmc3"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_SDMMC3
,
69
,
0
,
tegra_clk_sdmmc3
),
MUX
(
"sdmmc4"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_SDMMC4
,
15
,
0
,
tegra_clk_sdmmc4
),
MUX
(
"sdmmc1"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_SDMMC1
,
14
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sdmmc1
),
MUX
(
"sdmmc2"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_SDMMC2
,
9
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sdmmc2
),
MUX
(
"sdmmc3"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_SDMMC3
,
69
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sdmmc3
),
MUX
(
"sdmmc4"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_SDMMC4
,
15
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sdmmc4
),
MUX
(
"la"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_LA
,
76
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_la
),
MUX
(
"trace"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_TRACE
,
77
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_trace
),
MUX
(
"owr"
,
mux_pllp_pllc_pllm_clkm
,
CLK_SOURCE_OWR
,
71
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_owr
),
...
...
@@ -470,10 +470,10 @@ static struct tegra_periph_init_data periph_clks[] = {
MUX
(
"adx1"
,
mux_plla_pllc_pllp_clkm
,
CLK_SOURCE_ADX1
,
180
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_adx1
),
MUX
(
"amx1"
,
mux_plla_pllc_pllp_clkm
,
CLK_SOURCE_AMX1
,
185
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_amx1
),
MUX
(
"vi_sensor2"
,
mux_pllm_pllc2_c_c3_pllp_plla
,
CLK_SOURCE_VI_SENSOR2
,
165
,
TEGRA_PERIPH_NO_RESET
,
tegra_clk_vi_sensor2
),
MUX8
(
"sdmmc1"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SDMMC1
,
14
,
0
,
tegra_clk_sdmmc1_8
),
MUX8
(
"sdmmc2"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SDMMC2
,
9
,
0
,
tegra_clk_sdmmc2_8
),
MUX8
(
"sdmmc3"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SDMMC3
,
69
,
0
,
tegra_clk_sdmmc3_8
),
MUX8
(
"sdmmc4"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SDMMC4
,
15
,
0
,
tegra_clk_sdmmc4_8
),
MUX8
(
"sdmmc1"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SDMMC1
,
14
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sdmmc1_8
),
MUX8
(
"sdmmc2"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SDMMC2
,
9
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sdmmc2_8
),
MUX8
(
"sdmmc3"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SDMMC3
,
69
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sdmmc3_8
),
MUX8
(
"sdmmc4"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SDMMC4
,
15
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sdmmc4_8
),
MUX8
(
"sbc1"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SBC1
,
41
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sbc1_8
),
MUX8
(
"sbc2"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SBC2
,
44
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sbc2_8
),
MUX8
(
"sbc3"
,
mux_pllp_pllc2_c_c3_pllm_clkm
,
CLK_SOURCE_SBC3
,
46
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sbc3_8
),
...
...
@@ -537,8 +537,6 @@ static struct tegra_periph_init_data gate_clks[] = {
GATE
(
"xusb_host"
,
"xusb_host_src"
,
89
,
0
,
tegra_clk_xusb_host
,
0
),
GATE
(
"xusb_ss"
,
"xusb_ss_src"
,
156
,
0
,
tegra_clk_xusb_ss
,
0
),
GATE
(
"xusb_dev"
,
"xusb_dev_src"
,
95
,
0
,
tegra_clk_xusb_dev
,
0
),
GATE
(
"dsia"
,
"dsia_mux"
,
48
,
0
,
tegra_clk_dsia
,
0
),
GATE
(
"dsib"
,
"dsib_mux"
,
82
,
0
,
tegra_clk_dsib
,
0
),
GATE
(
"emc"
,
"emc_mux"
,
57
,
0
,
tegra_clk_emc
,
CLK_IGNORE_UNUSED
),
GATE
(
"sata_cold"
,
"clk_m"
,
129
,
TEGRA_PERIPH_ON_APB
,
tegra_clk_sata_cold
,
0
),
GATE
(
"ispb"
,
"clk_m"
,
3
,
0
,
tegra_clk_ispb
,
0
),
...
...
drivers/clk/tegra/clk-tegra114.c
浏览文件 @
f85c6edf
...
...
@@ -715,7 +715,6 @@ static struct tegra_clk tegra114_clks[tegra_clk_max] __initdata = {
[
tegra_clk_sbc2_8
]
=
{
.
dt_id
=
TEGRA114_CLK_SBC2
,
.
present
=
true
},
[
tegra_clk_sbc3_8
]
=
{
.
dt_id
=
TEGRA114_CLK_SBC3
,
.
present
=
true
},
[
tegra_clk_i2c5
]
=
{
.
dt_id
=
TEGRA114_CLK_I2C5
,
.
present
=
true
},
[
tegra_clk_dsia
]
=
{
.
dt_id
=
TEGRA114_CLK_DSIA
,
.
present
=
true
},
[
tegra_clk_mipi
]
=
{
.
dt_id
=
TEGRA114_CLK_MIPI
,
.
present
=
true
},
[
tegra_clk_hdmi
]
=
{
.
dt_id
=
TEGRA114_CLK_HDMI
,
.
present
=
true
},
[
tegra_clk_csi
]
=
{
.
dt_id
=
TEGRA114_CLK_CSI
,
.
present
=
true
},
...
...
@@ -739,7 +738,6 @@ static struct tegra_clk tegra114_clks[tegra_clk_max] __initdata = {
[
tegra_clk_dtv
]
=
{
.
dt_id
=
TEGRA114_CLK_DTV
,
.
present
=
true
},
[
tegra_clk_ndspeed
]
=
{
.
dt_id
=
TEGRA114_CLK_NDSPEED
,
.
present
=
true
},
[
tegra_clk_i2cslow
]
=
{
.
dt_id
=
TEGRA114_CLK_I2CSLOW
,
.
present
=
true
},
[
tegra_clk_dsib
]
=
{
.
dt_id
=
TEGRA114_CLK_DSIB
,
.
present
=
true
},
[
tegra_clk_tsec
]
=
{
.
dt_id
=
TEGRA114_CLK_TSEC
,
.
present
=
true
},
[
tegra_clk_xusb_host
]
=
{
.
dt_id
=
TEGRA114_CLK_XUSB_HOST
,
.
present
=
true
},
[
tegra_clk_msenc
]
=
{
.
dt_id
=
TEGRA114_CLK_MSENC
,
.
present
=
true
},
...
...
@@ -1224,6 +1222,14 @@ static __init void tegra114_periph_clk_init(void __iomem *clk_base,
clk_base
+
PLLD2_BASE
,
25
,
1
,
0
,
&
pll_d2_lock
);
clks
[
TEGRA114_CLK_DSIB_MUX
]
=
clk
;
clk
=
tegra_clk_register_periph_gate
(
"dsia"
,
"dsia_mux"
,
0
,
clk_base
,
0
,
48
,
periph_clk_enb_refcnt
);
clks
[
TEGRA114_CLK_DSIA
]
=
clk
;
clk
=
tegra_clk_register_periph_gate
(
"dsib"
,
"dsib_mux"
,
0
,
clk_base
,
0
,
82
,
periph_clk_enb_refcnt
);
clks
[
TEGRA114_CLK_DSIB
]
=
clk
;
/* emc mux */
clk
=
clk_register_mux
(
NULL
,
"emc_mux"
,
mux_pllmcp_clkm
,
ARRAY_SIZE
(
mux_pllmcp_clkm
),
...
...
drivers/clk/tegra/clk-tegra124.c
浏览文件 @
f85c6edf
/*
* Copyright (c) 2012
, 2013,
NVIDIA CORPORATION. All rights reserved.
* Copyright (c) 2012
-2014
NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
...
...
@@ -28,6 +28,14 @@
#include "clk.h"
#include "clk-id.h"
/*
* TEGRA124_CAR_BANK_COUNT: the number of peripheral clock register
* banks present in the Tegra124/132 CAR IP block. The banks are
* identified by single letters, e.g.: L, H, U, V, W, X. See
* periph_regs[] in drivers/clk/tegra/clk.c
*/
#define TEGRA124_CAR_BANK_COUNT 6
#define CLK_SOURCE_CSITE 0x1d4
#define CLK_SOURCE_EMC 0x19c
...
...
@@ -128,7 +136,6 @@ static unsigned long osc_freq;
static
unsigned
long
pll_ref_freq
;
static
DEFINE_SPINLOCK
(
pll_d_lock
);
static
DEFINE_SPINLOCK
(
pll_d2_lock
);
static
DEFINE_SPINLOCK
(
pll_e_lock
);
static
DEFINE_SPINLOCK
(
pll_re_lock
);
static
DEFINE_SPINLOCK
(
pll_u_lock
);
...
...
@@ -145,11 +152,6 @@ static unsigned long tegra124_input_freq[] = {
[
12
]
=
260000000
,
};
static
const
char
*
mux_plld_out0_plld2_out0
[]
=
{
"pll_d_out0"
,
"pll_d2_out0"
,
};
#define mux_plld_out0_plld2_out0_idx NULL
static
const
char
*
mux_pllmcp_clkm
[]
=
{
"pll_m"
,
"pll_c"
,
"pll_p"
,
"clk_m"
,
"pll_m_ud"
,
"pll_c2"
,
"pll_c3"
,
};
...
...
@@ -783,7 +785,6 @@ static struct tegra_clk tegra124_clks[tegra_clk_max] __initdata = {
[
tegra_clk_sbc2
]
=
{
.
dt_id
=
TEGRA124_CLK_SBC2
,
.
present
=
true
},
[
tegra_clk_sbc3
]
=
{
.
dt_id
=
TEGRA124_CLK_SBC3
,
.
present
=
true
},
[
tegra_clk_i2c5
]
=
{
.
dt_id
=
TEGRA124_CLK_I2C5
,
.
present
=
true
},
[
tegra_clk_dsia
]
=
{
.
dt_id
=
TEGRA124_CLK_DSIA
,
.
present
=
true
},
[
tegra_clk_mipi
]
=
{
.
dt_id
=
TEGRA124_CLK_MIPI
,
.
present
=
true
},
[
tegra_clk_hdmi
]
=
{
.
dt_id
=
TEGRA124_CLK_HDMI
,
.
present
=
true
},
[
tegra_clk_csi
]
=
{
.
dt_id
=
TEGRA124_CLK_CSI
,
.
present
=
true
},
...
...
@@ -809,7 +810,6 @@ static struct tegra_clk tegra124_clks[tegra_clk_max] __initdata = {
[
tegra_clk_soc_therm
]
=
{
.
dt_id
=
TEGRA124_CLK_SOC_THERM
,
.
present
=
true
},
[
tegra_clk_dtv
]
=
{
.
dt_id
=
TEGRA124_CLK_DTV
,
.
present
=
true
},
[
tegra_clk_i2cslow
]
=
{
.
dt_id
=
TEGRA124_CLK_I2CSLOW
,
.
present
=
true
},
[
tegra_clk_dsib
]
=
{
.
dt_id
=
TEGRA124_CLK_DSIB
,
.
present
=
true
},
[
tegra_clk_tsec
]
=
{
.
dt_id
=
TEGRA124_CLK_TSEC
,
.
present
=
true
},
[
tegra_clk_xusb_host
]
=
{
.
dt_id
=
TEGRA124_CLK_XUSB_HOST
,
.
present
=
true
},
[
tegra_clk_msenc
]
=
{
.
dt_id
=
TEGRA124_CLK_MSENC
,
.
present
=
true
},
...
...
@@ -949,8 +949,6 @@ static struct tegra_clk tegra124_clks[tegra_clk_max] __initdata = {
[
tegra_clk_clk_out_1_mux
]
=
{
.
dt_id
=
TEGRA124_CLK_CLK_OUT_1_MUX
,
.
present
=
true
},
[
tegra_clk_clk_out_2_mux
]
=
{
.
dt_id
=
TEGRA124_CLK_CLK_OUT_2_MUX
,
.
present
=
true
},
[
tegra_clk_clk_out_3_mux
]
=
{
.
dt_id
=
TEGRA124_CLK_CLK_OUT_3_MUX
,
.
present
=
true
},
[
tegra_clk_dsia_mux
]
=
{
.
dt_id
=
TEGRA124_CLK_DSIA_MUX
,
.
present
=
true
},
[
tegra_clk_dsib_mux
]
=
{
.
dt_id
=
TEGRA124_CLK_DSIB_MUX
,
.
present
=
true
},
};
static
struct
tegra_devclk
devclks
[]
__initdata
=
{
...
...
@@ -1112,17 +1110,17 @@ static __init void tegra124_periph_clk_init(void __iomem *clk_base,
1
,
2
);
clks
[
TEGRA124_CLK_XUSB_SS_DIV2
]
=
clk
;
/* dsia mux */
clk
=
clk_register_mux
(
NULL
,
"dsia_mux"
,
mux_plld_out0_plld2_out0
,
ARRAY_SIZE
(
mux_plld_out0_plld2_out0
),
0
,
clk_base
+
PLLD_BASE
,
25
,
1
,
0
,
&
pll_d_lock
);
clks
[
TEGRA124_CLK_DSIA_MUX
]
=
clk
;
clk
=
clk_register_gate
(
NULL
,
"plld_dsi"
,
"plld_out0"
,
0
,
clk_base
+
PLLD_MISC
,
30
,
0
,
&
pll_d_lock
);
clks
[
TEGRA124_CLK_PLLD_DSI
]
=
clk
;
clk
=
tegra_clk_register_periph_gate
(
"dsia"
,
"plld_dsi"
,
0
,
clk_base
,
0
,
48
,
periph_clk_enb_refcnt
);
clks
[
TEGRA124_CLK_DSIA
]
=
clk
;
/* dsib mux */
clk
=
clk_register_mux
(
NULL
,
"dsib_mux"
,
mux_plld_out0_plld2_out0
,
ARRAY_SIZE
(
mux_plld_out0_plld2_out0
),
0
,
clk_base
+
PLLD2_BASE
,
25
,
1
,
0
,
&
pll_d2_lock
);
clks
[
TEGRA124_CLK_DSIB_MUX
]
=
clk
;
clk
=
tegra_clk_register_periph_gate
(
"dsib"
,
"plld_dsi"
,
0
,
clk_base
,
0
,
82
,
periph_clk_enb_refcnt
);
clks
[
TEGRA124_CLK_DSIB
]
=
clk
;
/* emc mux */
clk
=
clk_register_mux
(
NULL
,
"emc_mux"
,
mux_pllmcp_clkm
,
...
...
@@ -1351,7 +1349,7 @@ static const struct of_device_id pmc_match[] __initconst = {
{},
};
static
struct
tegra_clk_init_table
init_table
[]
__initdata
=
{
static
struct
tegra_clk_init_table
common_
init_table
[]
__initdata
=
{
{
TEGRA124_CLK_UARTA
,
TEGRA124_CLK_PLL_P
,
408000000
,
0
},
{
TEGRA124_CLK_UARTB
,
TEGRA124_CLK_PLL_P
,
408000000
,
0
},
{
TEGRA124_CLK_UARTC
,
TEGRA124_CLK_PLL_P
,
408000000
,
0
},
...
...
@@ -1368,6 +1366,8 @@ static struct tegra_clk_init_table init_table[] __initdata = {
{
TEGRA124_CLK_I2S4
,
TEGRA124_CLK_PLL_A_OUT0
,
11289600
,
0
},
{
TEGRA124_CLK_VDE
,
TEGRA124_CLK_PLL_P
,
0
,
0
},
{
TEGRA124_CLK_HOST1X
,
TEGRA124_CLK_PLL_P
,
136000000
,
1
},
{
TEGRA124_CLK_DSIALP
,
TEGRA124_CLK_PLL_P
,
68000000
,
0
},
{
TEGRA124_CLK_DSIBLP
,
TEGRA124_CLK_PLL_P
,
68000000
,
0
},
{
TEGRA124_CLK_SCLK
,
TEGRA124_CLK_PLL_P_OUT2
,
102000000
,
1
},
{
TEGRA124_CLK_DFLL_SOC
,
TEGRA124_CLK_PLL_P
,
51000000
,
1
},
{
TEGRA124_CLK_DFLL_REF
,
TEGRA124_CLK_PLL_P
,
51000000
,
1
},
...
...
@@ -1385,27 +1385,73 @@ static struct tegra_clk_init_table init_table[] __initdata = {
{
TEGRA124_CLK_SATA
,
TEGRA124_CLK_PLL_P
,
104000000
,
0
},
{
TEGRA124_CLK_SATA_OOB
,
TEGRA124_CLK_PLL_P
,
204000000
,
0
},
{
TEGRA124_CLK_EMC
,
TEGRA124_CLK_CLK_MAX
,
0
,
1
},
{
TEGRA124_CLK_CCLK_G
,
TEGRA124_CLK_CLK_MAX
,
0
,
1
},
{
TEGRA124_CLK_MSELECT
,
TEGRA124_CLK_CLK_MAX
,
0
,
1
},
{
TEGRA124_CLK_CSITE
,
TEGRA124_CLK_CLK_MAX
,
0
,
1
},
{
TEGRA124_CLK_TSENSOR
,
TEGRA124_CLK_CLK_M
,
400000
,
0
},
/* This MUST be the last entry. */
{
TEGRA124_CLK_CLK_MAX
,
TEGRA124_CLK_CLK_MAX
,
0
,
0
},
};
static
struct
tegra_clk_init_table
tegra124_init_table
[]
__initdata
=
{
{
TEGRA124_CLK_SOC_THERM
,
TEGRA124_CLK_PLL_P
,
51000000
,
0
},
{
TEGRA124_CLK_CCLK_G
,
TEGRA124_CLK_CLK_MAX
,
0
,
1
},
/* This MUST be the last entry. */
{
TEGRA124_CLK_CLK_MAX
,
TEGRA124_CLK_CLK_MAX
,
0
,
0
},
};
/* Tegra132 requires the SOC_THERM clock to remain active */
static
struct
tegra_clk_init_table
tegra132_init_table
[]
__initdata
=
{
{
TEGRA124_CLK_SOC_THERM
,
TEGRA124_CLK_PLL_P
,
51000000
,
1
},
/* This MUST be the last entry. */
{
TEGRA124_CLK_CLK_MAX
,
TEGRA124_CLK_CLK_MAX
,
0
,
0
},
};
/**
* tegra124_clock_apply_init_table - initialize clocks on Tegra124 SoCs
*
* Program an initial clock rate and enable or disable clocks needed
* by the rest of the kernel, for Tegra124 SoCs. It is intended to be
* called by assigning a pointer to it to tegra_clk_apply_init_table -
* this will be called as an arch_initcall. No return value.
*/
static
void
__init
tegra124_clock_apply_init_table
(
void
)
{
tegra_init_from_table
(
init_table
,
clks
,
TEGRA124_CLK_CLK_MAX
);
tegra_init_from_table
(
common_init_table
,
clks
,
TEGRA124_CLK_CLK_MAX
);
tegra_init_from_table
(
tegra124_init_table
,
clks
,
TEGRA124_CLK_CLK_MAX
);
}
static
void
__init
tegra124_clock_init
(
struct
device_node
*
np
)
/**
* tegra132_clock_apply_init_table - initialize clocks on Tegra132 SoCs
*
* Program an initial clock rate and enable or disable clocks needed
* by the rest of the kernel, for Tegra132 SoCs. It is intended to be
* called by assigning a pointer to it to tegra_clk_apply_init_table -
* this will be called as an arch_initcall. No return value.
*/
static
void
__init
tegra132_clock_apply_init_table
(
void
)
{
tegra_init_from_table
(
common_init_table
,
clks
,
TEGRA124_CLK_CLK_MAX
);
tegra_init_from_table
(
tegra132_init_table
,
clks
,
TEGRA124_CLK_CLK_MAX
);
}
/**
* tegra124_132_clock_init_pre - clock initialization preamble for T124/T132
* @np: struct device_node * of the DT node for the SoC CAR IP block
*
* Register most of the clocks controlled by the CAR IP block, along
* with a few clocks controlled by the PMC IP block. Everything in
* this function should be common to Tegra124 and Tegra132. XXX The
* PMC clock initialization should probably be moved to PMC-specific
* driver code. No return value.
*/
static
void
__init
tegra124_132_clock_init_pre
(
struct
device_node
*
np
)
{
struct
device_node
*
node
;
u32
plld_base
;
clk_base
=
of_iomap
(
np
,
0
);
if
(
!
clk_base
)
{
pr_err
(
"ioremap tegra124 CAR failed
\n
"
);
pr_err
(
"ioremap tegra124
/tegra132
CAR failed
\n
"
);
return
;
}
...
...
@@ -1423,7 +1469,8 @@ static void __init tegra124_clock_init(struct device_node *np)
return
;
}
clks
=
tegra_clk_init
(
clk_base
,
TEGRA124_CLK_CLK_MAX
,
6
);
clks
=
tegra_clk_init
(
clk_base
,
TEGRA124_CLK_CLK_MAX
,
TEGRA124_CAR_BANK_COUNT
);
if
(
!
clks
)
return
;
...
...
@@ -1437,13 +1484,76 @@ static void __init tegra124_clock_init(struct device_node *np)
tegra_audio_clk_init
(
clk_base
,
pmc_base
,
tegra124_clks
,
&
pll_a_params
);
tegra_pmc_clk_init
(
pmc_base
,
tegra124_clks
);
/* For Tegra124 & Tegra132, PLLD is the only source for DSIA & DSIB */
plld_base
=
clk_readl
(
clk_base
+
PLLD_BASE
);
plld_base
&=
~
BIT
(
25
);
clk_writel
(
plld_base
,
clk_base
+
PLLD_BASE
);
}
/**
* tegra124_132_clock_init_post - clock initialization postamble for T124/T132
* @np: struct device_node * of the DT node for the SoC CAR IP block
*
* Register most of the along with a few clocks controlled by the PMC
* IP block. Everything in this function should be common to Tegra124
* and Tegra132. This function must be called after
* tegra124_132_clock_init_pre(), otherwise clk_base and pmc_base will
* not be set. No return value.
*/
static
void
__init
tegra124_132_clock_init_post
(
struct
device_node
*
np
)
{
tegra_super_clk_gen4_init
(
clk_base
,
pmc_base
,
tegra124_clks
,
&
pll_x_params
);
&
pll_x_params
);
tegra_add_of_provider
(
np
);
tegra_register_devclks
(
devclks
,
ARRAY_SIZE
(
devclks
));
tegra_cpu_car_ops
=
&
tegra124_cpu_car_ops
;
}
/**
* tegra124_clock_init - Tegra124-specific clock initialization
* @np: struct device_node * of the DT node for the SoC CAR IP block
*
* Register most SoC clocks for the Tegra124 system-on-chip. Most of
* this code is shared between the Tegra124 and Tegra132 SoCs,
* although some of the initial clock settings and CPU clocks differ.
* Intended to be called by the OF init code when a DT node with the
* "nvidia,tegra124-car" string is encountered, and declared with
* CLK_OF_DECLARE. No return value.
*/
static
void
__init
tegra124_clock_init
(
struct
device_node
*
np
)
{
tegra124_132_clock_init_pre
(
np
);
tegra_clk_apply_init_table
=
tegra124_clock_apply_init_table
;
tegra124_132_clock_init_post
(
np
);
}
tegra_cpu_car_ops
=
&
tegra124_cpu_car_ops
;
/**
* tegra132_clock_init - Tegra132-specific clock initialization
* @np: struct device_node * of the DT node for the SoC CAR IP block
*
* Register most SoC clocks for the Tegra132 system-on-chip. Most of
* this code is shared between the Tegra124 and Tegra132 SoCs,
* although some of the initial clock settings and CPU clocks differ.
* Intended to be called by the OF init code when a DT node with the
* "nvidia,tegra132-car" string is encountered, and declared with
* CLK_OF_DECLARE. No return value.
*/
static
void
__init
tegra132_clock_init
(
struct
device_node
*
np
)
{
tegra124_132_clock_init_pre
(
np
);
/*
* On Tegra132, these clocks are controlled by the
* CLUSTER_clocks IP block, located in the CPU complex
*/
tegra124_clks
[
tegra_clk_cclk_g
].
present
=
false
;
tegra124_clks
[
tegra_clk_cclk_lp
].
present
=
false
;
tegra124_clks
[
tegra_clk_pll_x
].
present
=
false
;
tegra124_clks
[
tegra_clk_pll_x_out0
].
present
=
false
;
tegra_clk_apply_init_table
=
tegra132_clock_apply_init_table
;
tegra124_132_clock_init_post
(
np
);
}
CLK_OF_DECLARE
(
tegra124
,
"nvidia,tegra124-car"
,
tegra124_clock_init
);
CLK_OF_DECLARE
(
tegra132
,
"nvidia,tegra132-car"
,
tegra132_clock_init
);
drivers/clk/tegra/clk.c
浏览文件 @
f85c6edf
...
...
@@ -302,10 +302,13 @@ struct clk ** __init tegra_lookup_dt_id(int clk_id,
tegra_clk_apply_init_table_func
tegra_clk_apply_init_table
;
void
__init
tegra_clocks_apply_init_table
(
void
)
static
int
__init
tegra_clocks_apply_init_table
(
void
)
{
if
(
!
tegra_clk_apply_init_table
)
return
;
return
0
;
tegra_clk_apply_init_table
();
return
0
;
}
arch_initcall
(
tegra_clocks_apply_init_table
);
include/dt-bindings/clock/tegra124-car-common.h
0 → 100644
浏览文件 @
f85c6edf
/*
* This header provides constants for binding nvidia,tegra124-car or
* nvidia,tegra132-car.
*
* The first 192 clocks are numbered to match the bits in the CAR's CLK_OUT_ENB
* registers. These IDs often match those in the CAR's RST_DEVICES registers,
* but not in all cases. Some bits in CLK_OUT_ENB affect multiple clocks. In
* this case, those clocks are assigned IDs above 185 in order to highlight
* this issue. Implementations that interpret these clock IDs as bit values
* within the CLK_OUT_ENB or RST_DEVICES registers should be careful to
* explicitly handle these special cases.
*
* The balance of the clocks controlled by the CAR are assigned IDs of 185 and
* above.
*/
#ifndef _DT_BINDINGS_CLOCK_TEGRA124_CAR_COMMON_H
#define _DT_BINDINGS_CLOCK_TEGRA124_CAR_COMMON_H
/* 0 */
/* 1 */
/* 2 */
#define TEGRA124_CLK_ISPB 3
#define TEGRA124_CLK_RTC 4
#define TEGRA124_CLK_TIMER 5
#define TEGRA124_CLK_UARTA 6
/* 7 (register bit affects uartb and vfir) */
/* 8 */
#define TEGRA124_CLK_SDMMC2 9
/* 10 (register bit affects spdif_in and spdif_out) */
#define TEGRA124_CLK_I2S1 11
#define TEGRA124_CLK_I2C1 12
/* 13 */
#define TEGRA124_CLK_SDMMC1 14
#define TEGRA124_CLK_SDMMC4 15
/* 16 */
#define TEGRA124_CLK_PWM 17
#define TEGRA124_CLK_I2S2 18
/* 20 (register bit affects vi and vi_sensor) */
/* 21 */
#define TEGRA124_CLK_USBD 22
#define TEGRA124_CLK_ISP 23
/* 26 */
/* 25 */
#define TEGRA124_CLK_DISP2 26
#define TEGRA124_CLK_DISP1 27
#define TEGRA124_CLK_HOST1X 28
#define TEGRA124_CLK_VCP 29
#define TEGRA124_CLK_I2S0 30
/* 31 */
#define TEGRA124_CLK_MC 32
/* 33 */
#define TEGRA124_CLK_APBDMA 34
/* 35 */
#define TEGRA124_CLK_KBC 36
/* 37 */
/* 38 */
/* 39 (register bit affects fuse and fuse_burn) */
#define TEGRA124_CLK_KFUSE 40
#define TEGRA124_CLK_SBC1 41
#define TEGRA124_CLK_NOR 42
/* 43 */
#define TEGRA124_CLK_SBC2 44
/* 45 */
#define TEGRA124_CLK_SBC3 46
#define TEGRA124_CLK_I2C5 47
#define TEGRA124_CLK_DSIA 48
/* 49 */
#define TEGRA124_CLK_MIPI 50
#define TEGRA124_CLK_HDMI 51
#define TEGRA124_CLK_CSI 52
/* 53 */
#define TEGRA124_CLK_I2C2 54
#define TEGRA124_CLK_UARTC 55
#define TEGRA124_CLK_MIPI_CAL 56
#define TEGRA124_CLK_EMC 57
#define TEGRA124_CLK_USB2 58
#define TEGRA124_CLK_USB3 59
/* 60 */
#define TEGRA124_CLK_VDE 61
#define TEGRA124_CLK_BSEA 62
#define TEGRA124_CLK_BSEV 63
/* 64 */
#define TEGRA124_CLK_UARTD 65
/* 66 */
#define TEGRA124_CLK_I2C3 67
#define TEGRA124_CLK_SBC4 68
#define TEGRA124_CLK_SDMMC3 69
#define TEGRA124_CLK_PCIE 70
#define TEGRA124_CLK_OWR 71
#define TEGRA124_CLK_AFI 72
#define TEGRA124_CLK_CSITE 73
/* 74 */
/* 75 */
#define TEGRA124_CLK_LA 76
#define TEGRA124_CLK_TRACE 77
#define TEGRA124_CLK_SOC_THERM 78
#define TEGRA124_CLK_DTV 79
/* 80 */
#define TEGRA124_CLK_I2CSLOW 81
#define TEGRA124_CLK_DSIB 82
#define TEGRA124_CLK_TSEC 83
/* 84 */
/* 85 */
/* 86 */
/* 87 */
/* 88 */
#define TEGRA124_CLK_XUSB_HOST 89
/* 90 */
#define TEGRA124_CLK_MSENC 91
#define TEGRA124_CLK_CSUS 92
/* 93 */
/* 94 */
/* 95 (bit affects xusb_dev and xusb_dev_src) */
/* 96 */
/* 97 */
/* 98 */
#define TEGRA124_CLK_MSELECT 99
#define TEGRA124_CLK_TSENSOR 100
#define TEGRA124_CLK_I2S3 101
#define TEGRA124_CLK_I2S4 102
#define TEGRA124_CLK_I2C4 103
#define TEGRA124_CLK_SBC5 104
#define TEGRA124_CLK_SBC6 105
#define TEGRA124_CLK_D_AUDIO 106
#define TEGRA124_CLK_APBIF 107
#define TEGRA124_CLK_DAM0 108
#define TEGRA124_CLK_DAM1 109
#define TEGRA124_CLK_DAM2 110
#define TEGRA124_CLK_HDA2CODEC_2X 111
/* 112 */
#define TEGRA124_CLK_AUDIO0_2X 113
#define TEGRA124_CLK_AUDIO1_2X 114
#define TEGRA124_CLK_AUDIO2_2X 115
#define TEGRA124_CLK_AUDIO3_2X 116
#define TEGRA124_CLK_AUDIO4_2X 117
#define TEGRA124_CLK_SPDIF_2X 118
#define TEGRA124_CLK_ACTMON 119
#define TEGRA124_CLK_EXTERN1 120
#define TEGRA124_CLK_EXTERN2 121
#define TEGRA124_CLK_EXTERN3 122
#define TEGRA124_CLK_SATA_OOB 123
#define TEGRA124_CLK_SATA 124
#define TEGRA124_CLK_HDA 125
/* 126 */
#define TEGRA124_CLK_SE 127
#define TEGRA124_CLK_HDA2HDMI 128
#define TEGRA124_CLK_SATA_COLD 129
/* 130 */
/* 131 */
/* 132 */
/* 133 */
/* 134 */
/* 135 */
/* 136 */
/* 137 */
/* 138 */
/* 139 */
/* 140 */
/* 141 */
/* 142 */
/* 143 (bit affects xusb_falcon_src, xusb_fs_src, */
/* xusb_host_src and xusb_ss_src) */
#define TEGRA124_CLK_CILAB 144
#define TEGRA124_CLK_CILCD 145
#define TEGRA124_CLK_CILE 146
#define TEGRA124_CLK_DSIALP 147
#define TEGRA124_CLK_DSIBLP 148
#define TEGRA124_CLK_ENTROPY 149
#define TEGRA124_CLK_DDS 150
/* 151 */
#define TEGRA124_CLK_DP2 152
#define TEGRA124_CLK_AMX 153
#define TEGRA124_CLK_ADX 154
/* 155 (bit affects dfll_ref and dfll_soc) */
#define TEGRA124_CLK_XUSB_SS 156
/* 157 */
/* 158 */
/* 159 */
/* 160 */
/* 161 */
/* 162 */
/* 163 */
/* 164 */
/* 165 */
#define TEGRA124_CLK_I2C6 166
/* 167 */
/* 168 */
/* 169 */
/* 170 */
#define TEGRA124_CLK_VIM2_CLK 171
/* 172 */
/* 173 */
/* 174 */
/* 175 */
#define TEGRA124_CLK_HDMI_AUDIO 176
#define TEGRA124_CLK_CLK72MHZ 177
#define TEGRA124_CLK_VIC03 178
/* 179 */
#define TEGRA124_CLK_ADX1 180
#define TEGRA124_CLK_DPAUX 181
#define TEGRA124_CLK_SOR0 182
/* 183 */
#define TEGRA124_CLK_GPU 184
#define TEGRA124_CLK_AMX1 185
/* 186 */
/* 187 */
/* 188 */
/* 189 */
/* 190 */
/* 191 */
#define TEGRA124_CLK_UARTB 192
#define TEGRA124_CLK_VFIR 193
#define TEGRA124_CLK_SPDIF_IN 194
#define TEGRA124_CLK_SPDIF_OUT 195
#define TEGRA124_CLK_VI 196
#define TEGRA124_CLK_VI_SENSOR 197
#define TEGRA124_CLK_FUSE 198
#define TEGRA124_CLK_FUSE_BURN 199
#define TEGRA124_CLK_CLK_32K 200
#define TEGRA124_CLK_CLK_M 201
#define TEGRA124_CLK_CLK_M_DIV2 202
#define TEGRA124_CLK_CLK_M_DIV4 203
#define TEGRA124_CLK_PLL_REF 204
#define TEGRA124_CLK_PLL_C 205
#define TEGRA124_CLK_PLL_C_OUT1 206
#define TEGRA124_CLK_PLL_C2 207
#define TEGRA124_CLK_PLL_C3 208
#define TEGRA124_CLK_PLL_M 209
#define TEGRA124_CLK_PLL_M_OUT1 210
#define TEGRA124_CLK_PLL_P 211
#define TEGRA124_CLK_PLL_P_OUT1 212
#define TEGRA124_CLK_PLL_P_OUT2 213
#define TEGRA124_CLK_PLL_P_OUT3 214
#define TEGRA124_CLK_PLL_P_OUT4 215
#define TEGRA124_CLK_PLL_A 216
#define TEGRA124_CLK_PLL_A_OUT0 217
#define TEGRA124_CLK_PLL_D 218
#define TEGRA124_CLK_PLL_D_OUT0 219
#define TEGRA124_CLK_PLL_D2 220
#define TEGRA124_CLK_PLL_D2_OUT0 221
#define TEGRA124_CLK_PLL_U 222
#define TEGRA124_CLK_PLL_U_480M 223
#define TEGRA124_CLK_PLL_U_60M 224
#define TEGRA124_CLK_PLL_U_48M 225
#define TEGRA124_CLK_PLL_U_12M 226
/* 227 */
/* 228 */
#define TEGRA124_CLK_PLL_RE_VCO 229
#define TEGRA124_CLK_PLL_RE_OUT 230
#define TEGRA124_CLK_PLL_E 231
#define TEGRA124_CLK_SPDIF_IN_SYNC 232
#define TEGRA124_CLK_I2S0_SYNC 233
#define TEGRA124_CLK_I2S1_SYNC 234
#define TEGRA124_CLK_I2S2_SYNC 235
#define TEGRA124_CLK_I2S3_SYNC 236
#define TEGRA124_CLK_I2S4_SYNC 237
#define TEGRA124_CLK_VIMCLK_SYNC 238
#define TEGRA124_CLK_AUDIO0 239
#define TEGRA124_CLK_AUDIO1 240
#define TEGRA124_CLK_AUDIO2 241
#define TEGRA124_CLK_AUDIO3 242
#define TEGRA124_CLK_AUDIO4 243
#define TEGRA124_CLK_SPDIF 244
#define TEGRA124_CLK_CLK_OUT_1 245
#define TEGRA124_CLK_CLK_OUT_2 246
#define TEGRA124_CLK_CLK_OUT_3 247
#define TEGRA124_CLK_BLINK 248
/* 249 */
/* 250 */
/* 251 */
#define TEGRA124_CLK_XUSB_HOST_SRC 252
#define TEGRA124_CLK_XUSB_FALCON_SRC 253
#define TEGRA124_CLK_XUSB_FS_SRC 254
#define TEGRA124_CLK_XUSB_SS_SRC 255
#define TEGRA124_CLK_XUSB_DEV_SRC 256
#define TEGRA124_CLK_XUSB_DEV 257
#define TEGRA124_CLK_XUSB_HS_SRC 258
#define TEGRA124_CLK_SCLK 259
#define TEGRA124_CLK_HCLK 260
#define TEGRA124_CLK_PCLK 261
/* 262 */
/* 263 */
#define TEGRA124_CLK_DFLL_REF 264
#define TEGRA124_CLK_DFLL_SOC 265
#define TEGRA124_CLK_VI_SENSOR2 266
#define TEGRA124_CLK_PLL_P_OUT5 267
#define TEGRA124_CLK_CML0 268
#define TEGRA124_CLK_CML1 269
#define TEGRA124_CLK_PLL_C4 270
#define TEGRA124_CLK_PLL_DP 271
#define TEGRA124_CLK_PLL_E_MUX 272
#define TEGRA124_CLK_PLLD_DSI 273
/* 274 */
/* 275 */
/* 276 */
/* 277 */
/* 278 */
/* 279 */
/* 280 */
/* 281 */
/* 282 */
/* 283 */
/* 284 */
/* 285 */
/* 286 */
/* 287 */
/* 288 */
/* 289 */
/* 290 */
/* 291 */
/* 292 */
/* 293 */
/* 294 */
/* 295 */
/* 296 */
/* 297 */
/* 298 */
/* 299 */
#define TEGRA124_CLK_AUDIO0_MUX 300
#define TEGRA124_CLK_AUDIO1_MUX 301
#define TEGRA124_CLK_AUDIO2_MUX 302
#define TEGRA124_CLK_AUDIO3_MUX 303
#define TEGRA124_CLK_AUDIO4_MUX 304
#define TEGRA124_CLK_SPDIF_MUX 305
#define TEGRA124_CLK_CLK_OUT_1_MUX 306
#define TEGRA124_CLK_CLK_OUT_2_MUX 307
#define TEGRA124_CLK_CLK_OUT_3_MUX 308
/* 309 */
/* 310 */
#define TEGRA124_CLK_SOR0_LVDS 311
#define TEGRA124_CLK_XUSB_SS_DIV2 312
#define TEGRA124_CLK_PLL_M_UD 313
#define TEGRA124_CLK_PLL_C_UD 314
#endif
/* _DT_BINDINGS_CLOCK_TEGRA124_CAR_COMMON_H */
include/dt-bindings/clock/tegra124-car.h
浏览文件 @
f85c6edf
/*
* This header provides constants for binding nvidia,tegra124-car.
*
* The first 192 clocks are numbered to match the bits in the CAR's CLK_OUT_ENB
* registers. These IDs often match those in the CAR's RST_DEVICES registers,
* but not in all cases. Some bits in CLK_OUT_ENB affect multiple clocks. In
* this case, those clocks are assigned IDs above 185 in order to highlight
* this issue. Implementations that interpret these clock IDs as bit values
* within the CLK_OUT_ENB or RST_DEVICES registers should be careful to
* explicitly handle these special cases.
*
* The balance of the clocks controlled by the CAR are assigned IDs of 185 and
* above.
* This header provides Tegra124-specific constants for binding
* nvidia,tegra124-car.
*/
#include <dt-bindings/clock/tegra124-car-common.h>
#ifndef _DT_BINDINGS_CLOCK_TEGRA124_CAR_H
#define _DT_BINDINGS_CLOCK_TEGRA124_CAR_H
/* 0 */
/* 1 */
/* 2 */
#define TEGRA124_CLK_ISPB 3
#define TEGRA124_CLK_RTC 4
#define TEGRA124_CLK_TIMER 5
#define TEGRA124_CLK_UARTA 6
/* 7 (register bit affects uartb and vfir) */
/* 8 */
#define TEGRA124_CLK_SDMMC2 9
/* 10 (register bit affects spdif_in and spdif_out) */
#define TEGRA124_CLK_I2S1 11
#define TEGRA124_CLK_I2C1 12
/* 13 */
#define TEGRA124_CLK_SDMMC1 14
#define TEGRA124_CLK_SDMMC4 15
/* 16 */
#define TEGRA124_CLK_PWM 17
#define TEGRA124_CLK_I2S2 18
/* 20 (register bit affects vi and vi_sensor) */
/* 21 */
#define TEGRA124_CLK_USBD 22
#define TEGRA124_CLK_ISP 23
/* 26 */
/* 25 */
#define TEGRA124_CLK_DISP2 26
#define TEGRA124_CLK_DISP1 27
#define TEGRA124_CLK_HOST1X 28
#define TEGRA124_CLK_VCP 29
#define TEGRA124_CLK_I2S0 30
/* 31 */
#define TEGRA124_CLK_MC 32
/* 33 */
#define TEGRA124_CLK_APBDMA 34
/* 35 */
#define TEGRA124_CLK_KBC 36
/* 37 */
/* 38 */
/* 39 (register bit affects fuse and fuse_burn) */
#define TEGRA124_CLK_KFUSE 40
#define TEGRA124_CLK_SBC1 41
#define TEGRA124_CLK_NOR 42
/* 43 */
#define TEGRA124_CLK_SBC2 44
/* 45 */
#define TEGRA124_CLK_SBC3 46
#define TEGRA124_CLK_I2C5 47
#define TEGRA124_CLK_DSIA 48
/* 49 */
#define TEGRA124_CLK_MIPI 50
#define TEGRA124_CLK_HDMI 51
#define TEGRA124_CLK_CSI 52
/* 53 */
#define TEGRA124_CLK_I2C2 54
#define TEGRA124_CLK_UARTC 55
#define TEGRA124_CLK_MIPI_CAL 56
#define TEGRA124_CLK_EMC 57
#define TEGRA124_CLK_USB2 58
#define TEGRA124_CLK_USB3 59
/* 60 */
#define TEGRA124_CLK_VDE 61
#define TEGRA124_CLK_BSEA 62
#define TEGRA124_CLK_BSEV 63
/* 64 */
#define TEGRA124_CLK_UARTD 65
/* 66 */
#define TEGRA124_CLK_I2C3 67
#define TEGRA124_CLK_SBC4 68
#define TEGRA124_CLK_SDMMC3 69
#define TEGRA124_CLK_PCIE 70
#define TEGRA124_CLK_OWR 71
#define TEGRA124_CLK_AFI 72
#define TEGRA124_CLK_CSITE 73
/* 74 */
/* 75 */
#define TEGRA124_CLK_LA 76
#define TEGRA124_CLK_TRACE 77
#define TEGRA124_CLK_SOC_THERM 78
#define TEGRA124_CLK_DTV 79
/* 80 */
#define TEGRA124_CLK_I2CSLOW 81
#define TEGRA124_CLK_DSIB 82
#define TEGRA124_CLK_TSEC 83
/* 84 */
/* 85 */
/* 86 */
/* 87 */
/* 88 */
#define TEGRA124_CLK_XUSB_HOST 89
/* 90 */
#define TEGRA124_CLK_MSENC 91
#define TEGRA124_CLK_CSUS 92
/* 93 */
/* 94 */
/* 95 (bit affects xusb_dev and xusb_dev_src) */
/* 96 */
/* 97 */
/* 98 */
#define TEGRA124_CLK_MSELECT 99
#define TEGRA124_CLK_TSENSOR 100
#define TEGRA124_CLK_I2S3 101
#define TEGRA124_CLK_I2S4 102
#define TEGRA124_CLK_I2C4 103
#define TEGRA124_CLK_SBC5 104
#define TEGRA124_CLK_SBC6 105
#define TEGRA124_CLK_D_AUDIO 106
#define TEGRA124_CLK_APBIF 107
#define TEGRA124_CLK_DAM0 108
#define TEGRA124_CLK_DAM1 109
#define TEGRA124_CLK_DAM2 110
#define TEGRA124_CLK_HDA2CODEC_2X 111
/* 112 */
#define TEGRA124_CLK_AUDIO0_2X 113
#define TEGRA124_CLK_AUDIO1_2X 114
#define TEGRA124_CLK_AUDIO2_2X 115
#define TEGRA124_CLK_AUDIO3_2X 116
#define TEGRA124_CLK_AUDIO4_2X 117
#define TEGRA124_CLK_SPDIF_2X 118
#define TEGRA124_CLK_ACTMON 119
#define TEGRA124_CLK_EXTERN1 120
#define TEGRA124_CLK_EXTERN2 121
#define TEGRA124_CLK_EXTERN3 122
#define TEGRA124_CLK_SATA_OOB 123
#define TEGRA124_CLK_SATA 124
#define TEGRA124_CLK_HDA 125
/* 126 */
#define TEGRA124_CLK_SE 127
#define TEGRA124_CLK_HDA2HDMI 128
#define TEGRA124_CLK_SATA_COLD 129
/* 130 */
/* 131 */
/* 132 */
/* 133 */
/* 134 */
/* 135 */
/* 136 */
/* 137 */
/* 138 */
/* 139 */
/* 140 */
/* 141 */
/* 142 */
/* 143 (bit affects xusb_falcon_src, xusb_fs_src, */
/* xusb_host_src and xusb_ss_src) */
#define TEGRA124_CLK_CILAB 144
#define TEGRA124_CLK_CILCD 145
#define TEGRA124_CLK_CILE 146
#define TEGRA124_CLK_DSIALP 147
#define TEGRA124_CLK_DSIBLP 148
#define TEGRA124_CLK_ENTROPY 149
#define TEGRA124_CLK_DDS 150
/* 151 */
#define TEGRA124_CLK_DP2 152
#define TEGRA124_CLK_AMX 153
#define TEGRA124_CLK_ADX 154
/* 155 (bit affects dfll_ref and dfll_soc) */
#define TEGRA124_CLK_XUSB_SS 156
/* 157 */
/* 158 */
/* 159 */
/* 160 */
/* 161 */
/* 162 */
/* 163 */
/* 164 */
/* 165 */
#define TEGRA124_CLK_I2C6 166
/* 167 */
/* 168 */
/* 169 */
/* 170 */
#define TEGRA124_CLK_VIM2_CLK 171
/* 172 */
/* 173 */
/* 174 */
/* 175 */
#define TEGRA124_CLK_HDMI_AUDIO 176
#define TEGRA124_CLK_CLK72MHZ 177
#define TEGRA124_CLK_VIC03 178
/* 179 */
#define TEGRA124_CLK_ADX1 180
#define TEGRA124_CLK_DPAUX 181
#define TEGRA124_CLK_SOR0 182
/* 183 */
#define TEGRA124_CLK_GPU 184
#define TEGRA124_CLK_AMX1 185
/* 186 */
/* 187 */
/* 188 */
/* 189 */
/* 190 */
/* 191 */
#define TEGRA124_CLK_UARTB 192
#define TEGRA124_CLK_VFIR 193
#define TEGRA124_CLK_SPDIF_IN 194
#define TEGRA124_CLK_SPDIF_OUT 195
#define TEGRA124_CLK_VI 196
#define TEGRA124_CLK_VI_SENSOR 197
#define TEGRA124_CLK_FUSE 198
#define TEGRA124_CLK_FUSE_BURN 199
#define TEGRA124_CLK_CLK_32K 200
#define TEGRA124_CLK_CLK_M 201
#define TEGRA124_CLK_CLK_M_DIV2 202
#define TEGRA124_CLK_CLK_M_DIV4 203
#define TEGRA124_CLK_PLL_REF 204
#define TEGRA124_CLK_PLL_C 205
#define TEGRA124_CLK_PLL_C_OUT1 206
#define TEGRA124_CLK_PLL_C2 207
#define TEGRA124_CLK_PLL_C3 208
#define TEGRA124_CLK_PLL_M 209
#define TEGRA124_CLK_PLL_M_OUT1 210
#define TEGRA124_CLK_PLL_P 211
#define TEGRA124_CLK_PLL_P_OUT1 212
#define TEGRA124_CLK_PLL_P_OUT2 213
#define TEGRA124_CLK_PLL_P_OUT3 214
#define TEGRA124_CLK_PLL_P_OUT4 215
#define TEGRA124_CLK_PLL_A 216
#define TEGRA124_CLK_PLL_A_OUT0 217
#define TEGRA124_CLK_PLL_D 218
#define TEGRA124_CLK_PLL_D_OUT0 219
#define TEGRA124_CLK_PLL_D2 220
#define TEGRA124_CLK_PLL_D2_OUT0 221
#define TEGRA124_CLK_PLL_U 222
#define TEGRA124_CLK_PLL_U_480M 223
#define TEGRA124_CLK_PLL_U_60M 224
#define TEGRA124_CLK_PLL_U_48M 225
#define TEGRA124_CLK_PLL_U_12M 226
#define TEGRA124_CLK_PLL_X 227
#define TEGRA124_CLK_PLL_X_OUT0 228
#define TEGRA124_CLK_PLL_RE_VCO 229
#define TEGRA124_CLK_PLL_RE_OUT 230
#define TEGRA124_CLK_PLL_E 231
#define TEGRA124_CLK_SPDIF_IN_SYNC 232
#define TEGRA124_CLK_I2S0_SYNC 233
#define TEGRA124_CLK_I2S1_SYNC 234
#define TEGRA124_CLK_I2S2_SYNC 235
#define TEGRA124_CLK_I2S3_SYNC 236
#define TEGRA124_CLK_I2S4_SYNC 237
#define TEGRA124_CLK_VIMCLK_SYNC 238
#define TEGRA124_CLK_AUDIO0 239
#define TEGRA124_CLK_AUDIO1 240
#define TEGRA124_CLK_AUDIO2 241
#define TEGRA124_CLK_AUDIO3 242
#define TEGRA124_CLK_AUDIO4 243
#define TEGRA124_CLK_SPDIF 244
#define TEGRA124_CLK_CLK_OUT_1 245
#define TEGRA124_CLK_CLK_OUT_2 246
#define TEGRA124_CLK_CLK_OUT_3 247
#define TEGRA124_CLK_BLINK 248
/* 249 */
/* 250 */
/* 251 */
#define TEGRA124_CLK_XUSB_HOST_SRC 252
#define TEGRA124_CLK_XUSB_FALCON_SRC 253
#define TEGRA124_CLK_XUSB_FS_SRC 254
#define TEGRA124_CLK_XUSB_SS_SRC 255
#define TEGRA124_CLK_XUSB_DEV_SRC 256
#define TEGRA124_CLK_XUSB_DEV 257
#define TEGRA124_CLK_XUSB_HS_SRC 258
#define TEGRA124_CLK_SCLK 259
#define TEGRA124_CLK_HCLK 260
#define TEGRA124_CLK_PCLK 261
#define TEGRA124_CLK_CCLK_G 262
#define TEGRA124_CLK_CCLK_LP 263
#define TEGRA124_CLK_DFLL_REF 264
#define TEGRA124_CLK_DFLL_SOC 265
#define TEGRA124_CLK_VI_SENSOR2 266
#define TEGRA124_CLK_PLL_P_OUT5 267
#define TEGRA124_CLK_CML0 268
#define TEGRA124_CLK_CML1 269
#define TEGRA124_CLK_PLL_C4 270
#define TEGRA124_CLK_PLL_DP 271
#define TEGRA124_CLK_PLL_E_MUX 272
/* 273 */
/* 274 */
/* 275 */
/* 276 */
/* 277 */
/* 278 */
/* 279 */
/* 280 */
/* 281 */
/* 282 */
/* 283 */
/* 284 */
/* 285 */
/* 286 */
/* 287 */
/* 288 */
/* 289 */
/* 290 */
/* 291 */
/* 292 */
/* 293 */
/* 294 */
/* 295 */
/* 296 */
/* 297 */
/* 298 */
/* 299 */
#define TEGRA124_CLK_AUDIO0_MUX 300
#define TEGRA124_CLK_AUDIO1_MUX 301
#define TEGRA124_CLK_AUDIO2_MUX 302
#define TEGRA124_CLK_AUDIO3_MUX 303
#define TEGRA124_CLK_AUDIO4_MUX 304
#define TEGRA124_CLK_SPDIF_MUX 305
#define TEGRA124_CLK_CLK_OUT_1_MUX 306
#define TEGRA124_CLK_CLK_OUT_2_MUX 307
#define TEGRA124_CLK_CLK_OUT_3_MUX 308
#define TEGRA124_CLK_DSIA_MUX 309
#define TEGRA124_CLK_DSIB_MUX 310
#define TEGRA124_CLK_SOR0_LVDS 311
#define TEGRA124_CLK_XUSB_SS_DIV2 312
#define TEGRA124_CLK_PLL_X 227
#define TEGRA124_CLK_PLL_X_OUT0 228
#define TEGRA124_CLK_
PLL_M_UD 313
#define TEGRA124_CLK_
PLL_C_UD 314
#define TEGRA124_CLK_
CCLK_G 262
#define TEGRA124_CLK_
CCLK_LP 263
#define TEGRA124_CLK_CLK_MAX
315
#define TEGRA124_CLK_CLK_MAX
315
#endif
/* _DT_BINDINGS_CLOCK_TEGRA124_CAR_H */
include/linux/clk/tegra.h
浏览文件 @
f85c6edf
...
...
@@ -120,6 +120,4 @@ static inline void tegra_cpu_clock_resume(void)
}
#endif
void
tegra_clocks_apply_init_table
(
void
);
#endif
/* __LINUX_CLK_TEGRA_H_ */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录