Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
1bf13f48
Commit
1bf13f48
authored
Sep 01, 2016
by
Michael Turquette
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'clk/clk-meson-gxbb-ao' into clk-meson-gxbb
parents
33608dcd
718cc4b6
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
369 additions
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
No files found.
Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
0 → 100644
View file @
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
View file @
1bf13f48
...
@@ -4,4 +4,4 @@
...
@@ -4,4 +4,4 @@
obj-$(CONFIG_COMMON_CLK_AMLOGIC)
+=
clk-pll.o clk-cpu.o clk-mpll.o
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_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
View file @
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
View file @
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
View file @
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment