]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - include/clk.h
karo: tx6: enable GPT command
[karo-tx-uboot.git] / include / clk.h
1 /*
2  * Copyright (c) 2015 Google, Inc
3  * Written by Simon Glass <sjg@chromium.org>
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 #ifndef _CLK_H_
9 #define _CLK_H_
10
11 int soc_clk_dump(void);
12
13 struct clk_ops {
14         /**
15          * get_rate() - Get current clock rate
16          *
17          * @dev:        Device to check (UCLASS_CLK)
18          * @return clock rate in Hz, or -ve error code
19          */
20         ulong (*get_rate)(struct udevice *dev);
21
22         /**
23          * set_rate() - Set current clock rate
24          *
25          * @dev:        Device to adjust
26          * @rate:       New clock rate in Hz
27          * @return new rate, or -ve error code
28          */
29         ulong (*set_rate)(struct udevice *dev, ulong rate);
30
31         /**
32         * clk_set_periph_rate() - Set clock rate for a peripheral
33         *
34         * @dev: Device to adjust (UCLASS_CLK)
35         * @rate:        New clock rate in Hz
36         * @return new clock rate in Hz, or -ve error code
37         */
38         ulong (*get_periph_rate)(struct udevice *dev, int periph);
39
40         /**
41          * clk_set_periph_rate() - Set current clock rate for a peripheral
42          *
43          * @dev:        Device to update (UCLASS_CLK)
44          * @periph:     Peripheral ID to cupdate
45          * @return new clock rate in Hz, or -ve error code
46          */
47         ulong (*set_periph_rate)(struct udevice *dev, int periph, ulong rate);
48 };
49
50 #define clk_get_ops(dev)        ((struct clk_ops *)(dev)->driver->ops)
51
52 /**
53  * clk_get_rate() - Get current clock rate
54  *
55  * @dev:        Device to check (UCLASS_CLK)
56  * @return clock rate in Hz, or -ve error code
57  */
58 ulong clk_get_rate(struct udevice *dev);
59
60 /**
61  * set_rate() - Set current clock rate
62  *
63  * @dev:        Device to adjust
64  * @rate:       New clock rate in Hz
65  * @return new rate, or -ve error code
66  */
67 ulong clk_set_rate(struct udevice *dev, ulong rate);
68
69 /**
70  * clk_get_periph_rate() - Get current clock rate for a peripheral
71  *
72  * @dev:        Device to check (UCLASS_CLK)
73  * @return clock rate in Hz, -ve error code
74  */
75 ulong clk_get_periph_rate(struct udevice *dev, int periph);
76
77 /**
78  * clk_set_periph_rate() - Set current clock rate for a peripheral
79  *
80  * @dev:        Device to update (UCLASS_CLK)
81  * @periph:     Peripheral ID to cupdate
82  * @return new clock rate in Hz, or -ve error code
83  */
84 ulong clk_set_periph_rate(struct udevice *dev, int periph, ulong rate);
85
86 #endif /* _CLK_H_ */