Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
1bf13f48
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看板
提交
1bf13f48
编写于
9月 01, 2016
作者:
M
Michael Turquette
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'clk/clk-meson-gxbb-ao' into clk-meson-gxbb
上级
33608dcd
718cc4b6
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
369 addition
and
1 deletion
+369
-1
Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
...ntation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
+45
-0
drivers/clk/meson/Makefile
drivers/clk/meson/Makefile
+1
-1
drivers/clk/meson/gxbb-aoclk.c
drivers/clk/meson/gxbb-aoclk.c
+191
-0
include/dt-bindings/clock/gxbb-aoclkc.h
include/dt-bindings/clock/gxbb-aoclkc.h
+66
-0
include/dt-bindings/reset/gxbb-aoclkc.h
include/dt-bindings/reset/gxbb-aoclkc.h
+66
-0
未找到文件。
Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
0 → 100644
浏览文件 @
1bf13f48
* Amlogic GXBB AO Clock and Reset Unit
The Amlogic GXBB AO clock controller generates and supplies clock to various
controllers within the Always-On part of the SoC.
Required Properties:
- compatible: should be "amlogic,gxbb-aoclkc"
- reg: physical base address of the clock controller and length of memory
mapped region.
- #clock-cells: should be 1.
Each clock is assigned an identifier and client nodes can use this identifier
to specify the clock which they consume. All available clocks are defined as
preprocessor macros in the dt-bindings/clock/gxbb-aoclkc.h header and can be
used in device tree sources.
- #reset-cells: should be 1.
Each reset is assigned an identifier and client nodes can use this identifier
to specify the reset which they consume. All available resets are defined as
preprocessor macros in the dt-bindings/reset/gxbb-aoclkc.h header and can be
used in device tree sources.
Example: AO Clock controller node:
clkc_AO: clock-controller@040 {
compatible = "amlogic,gxbb-aoclkc";
reg = <0x0 0x040 0x0 0x4>;
#clock-cells = <1>;
#reset-cells = <1>;
};
Example: UART controller node that consumes the clock and reset generated
by the clock controller:
uart_AO: serial@4c0 {
compatible = "amlogic,meson-uart";
reg = <0x4c0 0x14>;
interrupts = <0 90 1>;
clocks = <&clkc_AO CLKID_AO_UART1>;
resets = <&clkc_AO RESET_AO_UART1>;
status = "disabled";
};
drivers/clk/meson/Makefile
浏览文件 @
1bf13f48
...
...
@@ -4,4 +4,4 @@
obj-$(CONFIG_COMMON_CLK_AMLOGIC)
+=
clk-pll.o clk-cpu.o clk-mpll.o
obj-$(CONFIG_COMMON_CLK_MESON8B)
+=
meson8b-clkc.o
obj-$(CONFIG_COMMON_CLK_GXBB)
+=
gxbb.o
obj-$(CONFIG_COMMON_CLK_GXBB)
+=
gxbb.o
gxbb-aoclk.o
drivers/clk/meson/gxbb-aoclk.c
0 → 100644
浏览文件 @
1bf13f48
/*
* This file is provided under a dual BSD/GPLv2 license. When using or
* redistributing this file, you may do so under either license.
*
* GPL LICENSE SUMMARY
*
* Copyright (c) 2016 BayLibre, SAS.
* Author: Neil Armstrong <narmstrong@baylibre.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License 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.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
* The full GNU General Public License is included in this distribution
* in the file called COPYING.
*
* BSD LICENSE
*
* Copyright (c) 2016 BayLibre, SAS.
* Author: Neil Armstrong <narmstrong@baylibre.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <linux/clk-provider.h>
#include <linux/of_address.h>
#include <linux/platform_device.h>
#include <linux/reset-controller.h>
#include <linux/init.h>
#include <dt-bindings/clock/gxbb-aoclkc.h>
#include <dt-bindings/reset/gxbb-aoclkc.h>
static
DEFINE_SPINLOCK
(
gxbb_aoclk_lock
);
struct
gxbb_aoclk_reset_controller
{
struct
reset_controller_dev
reset
;
unsigned
int
*
data
;
void
__iomem
*
base
;
};
static
int
gxbb_aoclk_do_reset
(
struct
reset_controller_dev
*
rcdev
,
unsigned
long
id
)
{
struct
gxbb_aoclk_reset_controller
*
reset
=
container_of
(
rcdev
,
struct
gxbb_aoclk_reset_controller
,
reset
);
writel
(
BIT
(
reset
->
data
[
id
]),
reset
->
base
);
return
0
;
}
static
const
struct
reset_control_ops
gxbb_aoclk_reset_ops
=
{
.
reset
=
gxbb_aoclk_do_reset
,
};
#define GXBB_AO_GATE(_name, _bit) \
static struct clk_gate _name##_ao = { \
.reg = (void __iomem *)0, \
.bit_idx = (_bit), \
.lock = &gxbb_aoclk_lock, \
.hw.init = &(struct clk_init_data) { \
.name = #_name "_ao", \
.ops = &clk_gate_ops, \
.parent_names = (const char *[]){ "clk81" }, \
.num_parents = 1, \
.flags = (CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED), \
}, \
}
GXBB_AO_GATE
(
remote
,
0
);
GXBB_AO_GATE
(
i2c_master
,
1
);
GXBB_AO_GATE
(
i2c_slave
,
2
);
GXBB_AO_GATE
(
uart1
,
3
);
GXBB_AO_GATE
(
uart2
,
5
);
GXBB_AO_GATE
(
ir_blaster
,
6
);
static
unsigned
int
gxbb_aoclk_reset
[]
=
{
[
RESET_AO_REMOTE
]
=
16
,
[
RESET_AO_I2C_MASTER
]
=
18
,
[
RESET_AO_I2C_SLAVE
]
=
19
,
[
RESET_AO_UART1
]
=
17
,
[
RESET_AO_UART2
]
=
22
,
[
RESET_AO_IR_BLASTER
]
=
23
,
};
static
struct
clk_gate
*
gxbb_aoclk_gate
[]
=
{
[
CLKID_AO_REMOTE
]
=
&
remote_ao
,
[
CLKID_AO_I2C_MASTER
]
=
&
i2c_master_ao
,
[
CLKID_AO_I2C_SLAVE
]
=
&
i2c_slave_ao
,
[
CLKID_AO_UART1
]
=
&
uart1_ao
,
[
CLKID_AO_UART2
]
=
&
uart2_ao
,
[
CLKID_AO_IR_BLASTER
]
=
&
ir_blaster_ao
,
};
static
struct
clk_hw_onecell_data
gxbb_aoclk_onecell_data
=
{
.
hws
=
{
[
CLKID_AO_REMOTE
]
=
&
remote_ao
.
hw
,
[
CLKID_AO_I2C_MASTER
]
=
&
i2c_master_ao
.
hw
,
[
CLKID_AO_I2C_SLAVE
]
=
&
i2c_slave_ao
.
hw
,
[
CLKID_AO_UART1
]
=
&
uart1_ao
.
hw
,
[
CLKID_AO_UART2
]
=
&
uart2_ao
.
hw
,
[
CLKID_AO_IR_BLASTER
]
=
&
ir_blaster_ao
.
hw
,
},
.
num
=
ARRAY_SIZE
(
gxbb_aoclk_gate
),
};
static
int
gxbb_aoclkc_probe
(
struct
platform_device
*
pdev
)
{
struct
resource
*
res
;
void
__iomem
*
base
;
int
ret
,
clkid
;
struct
device
*
dev
=
&
pdev
->
dev
;
struct
gxbb_aoclk_reset_controller
*
rstc
;
rstc
=
devm_kzalloc
(
dev
,
sizeof
(
*
rstc
),
GFP_KERNEL
);
if
(
!
rstc
)
return
-
ENOMEM
;
/* Generic clocks */
res
=
platform_get_resource
(
pdev
,
IORESOURCE_MEM
,
0
);
base
=
devm_ioremap_resource
(
dev
,
res
);
if
(
IS_ERR
(
base
))
return
PTR_ERR
(
base
);
/* Reset Controller */
rstc
->
base
=
base
;
rstc
->
data
=
gxbb_aoclk_reset
;
rstc
->
reset
.
ops
=
&
gxbb_aoclk_reset_ops
;
rstc
->
reset
.
nr_resets
=
ARRAY_SIZE
(
gxbb_aoclk_reset
);
rstc
->
reset
.
of_node
=
dev
->
of_node
;
ret
=
devm_reset_controller_register
(
dev
,
&
rstc
->
reset
);
/*
* Populate base address and register all clks
*/
for
(
clkid
=
0
;
clkid
<
gxbb_aoclk_onecell_data
.
num
;
clkid
++
)
{
gxbb_aoclk_gate
[
clkid
]
->
reg
=
base
;
ret
=
devm_clk_hw_register
(
dev
,
gxbb_aoclk_onecell_data
.
hws
[
clkid
]);
if
(
ret
)
return
ret
;
}
return
of_clk_add_hw_provider
(
dev
->
of_node
,
of_clk_hw_onecell_get
,
&
gxbb_aoclk_onecell_data
);
}
static
const
struct
of_device_id
gxbb_aoclkc_match_table
[]
=
{
{
.
compatible
=
"amlogic,gxbb-aoclkc"
},
{
}
};
static
struct
platform_driver
gxbb_aoclkc_driver
=
{
.
probe
=
gxbb_aoclkc_probe
,
.
driver
=
{
.
name
=
"gxbb-aoclkc"
,
.
of_match_table
=
gxbb_aoclkc_match_table
,
},
};
builtin_platform_driver
(
gxbb_aoclkc_driver
);
include/dt-bindings/clock/gxbb-aoclkc.h
0 → 100644
浏览文件 @
1bf13f48
/*
* This file is provided under a dual BSD/GPLv2 license. When using or
* redistributing this file, you may do so under either license.
*
* GPL LICENSE SUMMARY
*
* Copyright (c) 2016 BayLibre, SAS.
* Author: Neil Armstrong <narmstrong@baylibre.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License 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.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
* The full GNU General Public License is included in this distribution
* in the file called COPYING.
*
* BSD LICENSE
*
* Copyright (c) 2016 BayLibre, SAS.
* Author: Neil Armstrong <narmstrong@baylibre.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef DT_BINDINGS_CLOCK_AMLOGIC_MESON_GXBB_AOCLK
#define DT_BINDINGS_CLOCK_AMLOGIC_MESON_GXBB_AOCLK
#define CLKID_AO_REMOTE 0
#define CLKID_AO_I2C_MASTER 1
#define CLKID_AO_I2C_SLAVE 2
#define CLKID_AO_UART1 3
#define CLKID_AO_UART2 4
#define CLKID_AO_IR_BLASTER 5
#endif
include/dt-bindings/reset/gxbb-aoclkc.h
0 → 100644
浏览文件 @
1bf13f48
/*
* This file is provided under a dual BSD/GPLv2 license. When using or
* redistributing this file, you may do so under either license.
*
* GPL LICENSE SUMMARY
*
* Copyright (c) 2016 BayLibre, SAS.
* Author: Neil Armstrong <narmstrong@baylibre.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License 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.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
* The full GNU General Public License is included in this distribution
* in the file called COPYING.
*
* BSD LICENSE
*
* Copyright (c) 2016 BayLibre, SAS.
* Author: Neil Armstrong <narmstrong@baylibre.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef DT_BINDINGS_RESET_AMLOGIC_MESON_GXBB_AOCLK
#define DT_BINDINGS_RESET_AMLOGIC_MESON_GXBB_AOCLK
#define RESET_AO_REMOTE 0
#define RESET_AO_I2C_MASTER 1
#define RESET_AO_I2C_SLAVE 2
#define RESET_AO_UART1 3
#define RESET_AO_UART2 4
#define RESET_AO_IR_BLASTER 5
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录