xref: /openbmc/u-boot/arch/sandbox/include/asm/clk.h (revision 1fe243a1e42fe99da0fa45c8c727f9c3d599c6c9)
183d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0 */
2135aa950SStephen Warren /*
3135aa950SStephen Warren  * Copyright (c) 2016, NVIDIA CORPORATION.
4135aa950SStephen Warren  */
5135aa950SStephen Warren 
6135aa950SStephen Warren #ifndef __SANDBOX_CLK_H
7135aa950SStephen Warren #define __SANDBOX_CLK_H
8135aa950SStephen Warren 
9135aa950SStephen Warren #include <common.h>
10135aa950SStephen Warren 
11135aa950SStephen Warren struct udevice;
12135aa950SStephen Warren 
13135aa950SStephen Warren /**
14135aa950SStephen Warren  * enum sandbox_clk_id - Identity of clocks implemented by the sandbox clock
15135aa950SStephen Warren  * provider.
16135aa950SStephen Warren  *
17135aa950SStephen Warren  * These IDs are within/relative-to the clock provider.
18135aa950SStephen Warren  */
19135aa950SStephen Warren enum sandbox_clk_id {
20135aa950SStephen Warren 	SANDBOX_CLK_ID_SPI,
21135aa950SStephen Warren 	SANDBOX_CLK_ID_I2C,
22135aa950SStephen Warren 
23135aa950SStephen Warren 	SANDBOX_CLK_ID_COUNT,
24135aa950SStephen Warren };
25135aa950SStephen Warren 
26135aa950SStephen Warren /**
27135aa950SStephen Warren  * enum sandbox_clk_test_id - Identity of the clocks consumed by the sandbox
28135aa950SStephen Warren  * clock test device.
29135aa950SStephen Warren  *
30135aa950SStephen Warren  * These are the IDs the clock consumer knows the clocks as.
31135aa950SStephen Warren  */
32135aa950SStephen Warren enum sandbox_clk_test_id {
33135aa950SStephen Warren 	SANDBOX_CLK_TEST_ID_FIXED,
34135aa950SStephen Warren 	SANDBOX_CLK_TEST_ID_SPI,
35135aa950SStephen Warren 	SANDBOX_CLK_TEST_ID_I2C,
36135aa950SStephen Warren 
37135aa950SStephen Warren 	SANDBOX_CLK_TEST_ID_COUNT,
38135aa950SStephen Warren };
39135aa950SStephen Warren 
40135aa950SStephen Warren /**
41135aa950SStephen Warren  * sandbox_clk_query_rate - Query the current rate of a sandbox clock.
42135aa950SStephen Warren  *
43135aa950SStephen Warren  * @dev:	The sandbox clock provider device.
44135aa950SStephen Warren  * @id:		The clock to query.
45135aa950SStephen Warren  * @return:	The rate of the clock.
46135aa950SStephen Warren  */
47135aa950SStephen Warren ulong sandbox_clk_query_rate(struct udevice *dev, int id);
48135aa950SStephen Warren /**
49135aa950SStephen Warren  * sandbox_clk_query_enable - Query the enable state of a sandbox clock.
50135aa950SStephen Warren  *
51135aa950SStephen Warren  * @dev:	The sandbox clock provider device.
52135aa950SStephen Warren  * @id:		The clock to query.
53135aa950SStephen Warren  * @return:	The rate of the clock.
54135aa950SStephen Warren  */
55135aa950SStephen Warren int sandbox_clk_query_enable(struct udevice *dev, int id);
56135aa950SStephen Warren 
57135aa950SStephen Warren /**
58135aa950SStephen Warren  * sandbox_clk_test_get - Ask the sandbox clock test device to request its
59135aa950SStephen Warren  * clocks.
60135aa950SStephen Warren  *
61135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
62135aa950SStephen Warren  * @return:	0 if OK, or a negative error code.
63135aa950SStephen Warren  */
64135aa950SStephen Warren int sandbox_clk_test_get(struct udevice *dev);
65135aa950SStephen Warren /**
6665388d0dSNeil Armstrong  * sandbox_clk_test_get_bulk - Ask the sandbox clock test device to request its
6765388d0dSNeil Armstrong  * clocks with the bulk clk API.
6865388d0dSNeil Armstrong  *
6965388d0dSNeil Armstrong  * @dev:	The sandbox clock test (client) devivce.
7065388d0dSNeil Armstrong  * @return:	0 if OK, or a negative error code.
7165388d0dSNeil Armstrong  */
7265388d0dSNeil Armstrong int sandbox_clk_test_get_bulk(struct udevice *dev);
7365388d0dSNeil Armstrong /**
74135aa950SStephen Warren  * sandbox_clk_test_get_rate - Ask the sandbox clock test device to query a
75135aa950SStephen Warren  * clock's rate.
76135aa950SStephen Warren  *
77135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
78135aa950SStephen Warren  * @id:		The test device's clock ID to query.
79135aa950SStephen Warren  * @return:	The rate of the clock.
80135aa950SStephen Warren  */
81135aa950SStephen Warren ulong sandbox_clk_test_get_rate(struct udevice *dev, int id);
82135aa950SStephen Warren /**
83135aa950SStephen Warren  * sandbox_clk_test_set_rate - Ask the sandbox clock test device to set a
84135aa950SStephen Warren  * clock's rate.
85135aa950SStephen Warren  *
86135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
87135aa950SStephen Warren  * @id:		The test device's clock ID to configure.
88135aa950SStephen Warren  * @return:	The new rate of the clock.
89135aa950SStephen Warren  */
90135aa950SStephen Warren ulong sandbox_clk_test_set_rate(struct udevice *dev, int id, ulong rate);
91135aa950SStephen Warren /**
92135aa950SStephen Warren  * sandbox_clk_test_enable - Ask the sandbox clock test device to enable a
93135aa950SStephen Warren  * clock.
94135aa950SStephen Warren  *
95135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
96135aa950SStephen Warren  * @id:		The test device's clock ID to configure.
97135aa950SStephen Warren  * @return:	0 if OK, or a negative error code.
98135aa950SStephen Warren  */
99135aa950SStephen Warren int sandbox_clk_test_enable(struct udevice *dev, int id);
100135aa950SStephen Warren /**
10165388d0dSNeil Armstrong  * sandbox_clk_test_enable_bulk - Ask the sandbox clock test device to enable
10265388d0dSNeil Armstrong  * all clocks in it's clock bulk struct.
10365388d0dSNeil Armstrong  *
10465388d0dSNeil Armstrong  * @dev:	The sandbox clock test (client) devivce.
10565388d0dSNeil Armstrong  * @return:	0 if OK, or a negative error code.
10665388d0dSNeil Armstrong  */
10765388d0dSNeil Armstrong int sandbox_clk_test_enable_bulk(struct udevice *dev);
10865388d0dSNeil Armstrong /**
109135aa950SStephen Warren  * sandbox_clk_test_disable - Ask the sandbox clock test device to disable a
110135aa950SStephen Warren  * clock.
111135aa950SStephen Warren  *
112135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
113135aa950SStephen Warren  * @id:		The test device's clock ID to configure.
114135aa950SStephen Warren  * @return:	0 if OK, or a negative error code.
115135aa950SStephen Warren  */
116135aa950SStephen Warren int sandbox_clk_test_disable(struct udevice *dev, int id);
117135aa950SStephen Warren /**
11865388d0dSNeil Armstrong  * sandbox_clk_test_disable_bulk - Ask the sandbox clock test device to disable
11965388d0dSNeil Armstrong  * all clocks in it's clock bulk struct.
12065388d0dSNeil Armstrong  *
12165388d0dSNeil Armstrong  * @dev:	The sandbox clock test (client) devivce.
12265388d0dSNeil Armstrong  * @return:	0 if OK, or a negative error code.
12365388d0dSNeil Armstrong  */
12465388d0dSNeil Armstrong int sandbox_clk_test_disable_bulk(struct udevice *dev);
12565388d0dSNeil Armstrong /**
126135aa950SStephen Warren  * sandbox_clk_test_free - Ask the sandbox clock test device to free its
127135aa950SStephen Warren  * clocks.
128135aa950SStephen Warren  *
129135aa950SStephen Warren  * @dev:	The sandbox clock test (client) devivce.
130135aa950SStephen Warren  * @return:	0 if OK, or a negative error code.
131135aa950SStephen Warren  */
132135aa950SStephen Warren int sandbox_clk_test_free(struct udevice *dev);
13365388d0dSNeil Armstrong /**
13465388d0dSNeil Armstrong  * sandbox_clk_test_release_bulk - Ask the sandbox clock test device to release
13565388d0dSNeil Armstrong  * all clocks in it's clock bulk struct.
13665388d0dSNeil Armstrong  *
13765388d0dSNeil Armstrong  * @dev:	The sandbox clock test (client) devivce.
13865388d0dSNeil Armstrong  * @return:	0 if OK, or a negative error code.
13965388d0dSNeil Armstrong  */
14065388d0dSNeil Armstrong int sandbox_clk_test_release_bulk(struct udevice *dev);
141*1fe243a1SFabrice Gasnier /**
142*1fe243a1SFabrice Gasnier  * sandbox_clk_test_valid - Ask the sandbox clock test device to check its
143*1fe243a1SFabrice Gasnier  * clocks are valid.
144*1fe243a1SFabrice Gasnier  *
145*1fe243a1SFabrice Gasnier  * @dev:	The sandbox clock test (client) devivce.
146*1fe243a1SFabrice Gasnier  * @return:	0 if OK, or a negative error code.
147*1fe243a1SFabrice Gasnier  */
148*1fe243a1SFabrice Gasnier int sandbox_clk_test_valid(struct udevice *dev);
149135aa950SStephen Warren 
150135aa950SStephen Warren #endif
151