xref: /rk3399_rockchip-uboot/arch/sandbox/include/asm/clk.h (revision 827e2ae92e2103f82dab5b54228ad24e40db6263)
1135aa950SStephen Warren /*
2135aa950SStephen Warren  * Copyright (c) 2016, NVIDIA CORPORATION.
3135aa950SStephen Warren  *
4135aa950SStephen Warren  * SPDX-License-Identifier: GPL-2.0
5135aa950SStephen Warren  */
6135aa950SStephen Warren 
7135aa950SStephen Warren #ifndef __SANDBOX_CLK_H
8135aa950SStephen Warren #define __SANDBOX_CLK_H
9135aa950SStephen Warren 
10135aa950SStephen Warren #include <common.h>
11135aa950SStephen Warren 
12135aa950SStephen Warren struct udevice;
13135aa950SStephen Warren 
14135aa950SStephen Warren /**
15135aa950SStephen Warren  * enum sandbox_clk_id - Identity of clocks implemented by the sandbox clock
16135aa950SStephen Warren  * provider.
17135aa950SStephen Warren  *
18135aa950SStephen Warren  * These IDs are within/relative-to the clock provider.
19135aa950SStephen Warren  */
20135aa950SStephen Warren enum sandbox_clk_id {
21135aa950SStephen Warren 	SANDBOX_CLK_ID_SPI,
22135aa950SStephen Warren 	SANDBOX_CLK_ID_I2C,
23135aa950SStephen Warren 
24135aa950SStephen Warren 	SANDBOX_CLK_ID_COUNT,
25135aa950SStephen Warren };
26135aa950SStephen Warren 
27135aa950SStephen Warren /**
28135aa950SStephen Warren  * enum sandbox_clk_test_id - Identity of the clocks consumed by the sandbox
29135aa950SStephen Warren  * clock test device.
30135aa950SStephen Warren  *
31135aa950SStephen Warren  * These are the IDs the clock consumer knows the clocks as.
32135aa950SStephen Warren  */
33135aa950SStephen Warren enum sandbox_clk_test_id {
34135aa950SStephen Warren 	SANDBOX_CLK_TEST_ID_FIXED,
35135aa950SStephen Warren 	SANDBOX_CLK_TEST_ID_SPI,
36135aa950SStephen Warren 	SANDBOX_CLK_TEST_ID_I2C,
37135aa950SStephen Warren 
38135aa950SStephen Warren 	SANDBOX_CLK_TEST_ID_COUNT,
39135aa950SStephen Warren };
40135aa950SStephen Warren 
41135aa950SStephen Warren /**
42135aa950SStephen Warren  * sandbox_clk_query_rate - Query the current rate of a sandbox clock.
43135aa950SStephen Warren  *
44135aa950SStephen Warren  * @dev:	The sandbox clock provider device.
45135aa950SStephen Warren  * @id:		The clock to query.
46135aa950SStephen Warren  * @return:	The rate of the clock.
47135aa950SStephen Warren  */
48135aa950SStephen Warren ulong sandbox_clk_query_rate(struct udevice *dev, int id);
49135aa950SStephen Warren /**
50135aa950SStephen Warren  * sandbox_clk_query_enable - Query the enable state of a sandbox clock.
51135aa950SStephen Warren  *
52135aa950SStephen Warren  * @dev:	The sandbox clock provider device.
53135aa950SStephen Warren  * @id:		The clock to query.
54135aa950SStephen Warren  * @return:	The rate of the clock.
55135aa950SStephen Warren  */
56135aa950SStephen Warren int sandbox_clk_query_enable(struct udevice *dev, int id);
57135aa950SStephen Warren 
58135aa950SStephen Warren /**
59135aa950SStephen Warren  * sandbox_clk_test_get - Ask the sandbox clock test device to request its
60135aa950SStephen Warren  * clocks.
61135aa950SStephen Warren  *
62135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
63135aa950SStephen Warren  * @return:	0 if OK, or a negative error code.
64135aa950SStephen Warren  */
65135aa950SStephen Warren int sandbox_clk_test_get(struct udevice *dev);
66135aa950SStephen Warren /**
670afa4b6cSNeil Armstrong  * sandbox_clk_test_get_bulk - Ask the sandbox clock test device to request its
680afa4b6cSNeil Armstrong  * clocks with the bulk clk API.
690afa4b6cSNeil Armstrong  *
700afa4b6cSNeil Armstrong  * @dev:	The sandbox clock test (client) devivce.
710afa4b6cSNeil Armstrong  * @return:	0 if OK, or a negative error code.
720afa4b6cSNeil Armstrong  */
730afa4b6cSNeil Armstrong int sandbox_clk_test_get_bulk(struct udevice *dev);
740afa4b6cSNeil Armstrong /**
75135aa950SStephen Warren  * sandbox_clk_test_get_rate - Ask the sandbox clock test device to query a
76135aa950SStephen Warren  * clock's rate.
77135aa950SStephen Warren  *
78135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
79135aa950SStephen Warren  * @id:		The test device's clock ID to query.
80135aa950SStephen Warren  * @return:	The rate of the clock.
81135aa950SStephen Warren  */
82135aa950SStephen Warren ulong sandbox_clk_test_get_rate(struct udevice *dev, int id);
83135aa950SStephen Warren /**
84135aa950SStephen Warren  * sandbox_clk_test_set_rate - Ask the sandbox clock test device to set a
85135aa950SStephen Warren  * clock's rate.
86135aa950SStephen Warren  *
87135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
88135aa950SStephen Warren  * @id:		The test device's clock ID to configure.
89135aa950SStephen Warren  * @return:	The new rate of the clock.
90135aa950SStephen Warren  */
91135aa950SStephen Warren ulong sandbox_clk_test_set_rate(struct udevice *dev, int id, ulong rate);
92135aa950SStephen Warren /**
93135aa950SStephen Warren  * sandbox_clk_test_enable - Ask the sandbox clock test device to enable a
94135aa950SStephen Warren  * clock.
95135aa950SStephen Warren  *
96135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
97135aa950SStephen Warren  * @id:		The test device's clock ID to configure.
98135aa950SStephen Warren  * @return:	0 if OK, or a negative error code.
99135aa950SStephen Warren  */
100135aa950SStephen Warren int sandbox_clk_test_enable(struct udevice *dev, int id);
101135aa950SStephen Warren /**
1020afa4b6cSNeil Armstrong  * sandbox_clk_test_enable_bulk - Ask the sandbox clock test device to enable
1030afa4b6cSNeil Armstrong  * all clocks in it's clock bulk struct.
1040afa4b6cSNeil Armstrong  *
1050afa4b6cSNeil Armstrong  * @dev:	The sandbox clock test (client) devivce.
1060afa4b6cSNeil Armstrong  * @return:	0 if OK, or a negative error code.
1070afa4b6cSNeil Armstrong  */
1080afa4b6cSNeil Armstrong int sandbox_clk_test_enable_bulk(struct udevice *dev);
1090afa4b6cSNeil Armstrong /**
110135aa950SStephen Warren  * sandbox_clk_test_disable - Ask the sandbox clock test device to disable a
111135aa950SStephen Warren  * clock.
112135aa950SStephen Warren  *
113135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
114135aa950SStephen Warren  * @id:		The test device's clock ID to configure.
115135aa950SStephen Warren  * @return:	0 if OK, or a negative error code.
116135aa950SStephen Warren  */
117135aa950SStephen Warren int sandbox_clk_test_disable(struct udevice *dev, int id);
118135aa950SStephen Warren /**
1190afa4b6cSNeil Armstrong  * sandbox_clk_test_disable_bulk - Ask the sandbox clock test device to disable
1200afa4b6cSNeil Armstrong  * all clocks in it's clock bulk struct.
1210afa4b6cSNeil Armstrong  *
1220afa4b6cSNeil Armstrong  * @dev:	The sandbox clock test (client) devivce.
1230afa4b6cSNeil Armstrong  * @return:	0 if OK, or a negative error code.
1240afa4b6cSNeil Armstrong  */
1250afa4b6cSNeil Armstrong int sandbox_clk_test_disable_bulk(struct udevice *dev);
1260afa4b6cSNeil Armstrong /**
127135aa950SStephen Warren  * sandbox_clk_test_free - Ask the sandbox clock test device to free its
128135aa950SStephen Warren  * clocks.
129135aa950SStephen Warren  *
130135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
131135aa950SStephen Warren  * @return:	0 if OK, or a negative error code.
132135aa950SStephen Warren  */
133135aa950SStephen Warren int sandbox_clk_test_free(struct udevice *dev);
1340afa4b6cSNeil Armstrong /**
1350afa4b6cSNeil Armstrong  * sandbox_clk_test_release_bulk - Ask the sandbox clock test device to release
1360afa4b6cSNeil Armstrong  * all clocks in it's clock bulk struct.
1370afa4b6cSNeil Armstrong  *
1380afa4b6cSNeil Armstrong  * @dev:	The sandbox clock test (client) devivce.
1390afa4b6cSNeil Armstrong  * @return:	0 if OK, or a negative error code.
1400afa4b6cSNeil Armstrong  */
1410afa4b6cSNeil Armstrong int sandbox_clk_test_release_bulk(struct udevice *dev);
142*827e2ae9SFabrice Gasnier /**
143*827e2ae9SFabrice Gasnier  * sandbox_clk_test_valid - Ask the sandbox clock test device to check its
144*827e2ae9SFabrice Gasnier  * clocks are valid.
145*827e2ae9SFabrice Gasnier  *
146*827e2ae9SFabrice Gasnier  * @dev:	The sandbox clock test (client) devivce.
147*827e2ae9SFabrice Gasnier  * @return:	0 if OK, or a negative error code.
148*827e2ae9SFabrice Gasnier  */
149*827e2ae9SFabrice Gasnier int sandbox_clk_test_valid(struct udevice *dev);
150135aa950SStephen Warren 
151135aa950SStephen Warren #endif
152