no-OS
no_os_clk.h
Go to the documentation of this file.
1 /***************************************************************************/
39 #ifndef _NO_OS_CLK_H_
40 #define _NO_OS_CLK_H_
41 
42 /******************************************************************************/
43 /***************************** Include Files **********************************/
44 /******************************************************************************/
45 #include <stdint.h>
46 
47 /******************************************************************************/
48 /************************* Structure Declarations *****************************/
49 /******************************************************************************/
50 struct no_os_clk_hw {
51  void *dev;
52  int32_t (*dev_clk_enable)();
53  int32_t (*dev_clk_disable)();
54  int32_t (*dev_clk_recalc_rate)();
55  int32_t (*dev_clk_set_rate)();
56  int32_t (*dev_clk_round_rate)();
57 };
58 
59 struct no_os_clk {
60  struct no_os_clk_hw *hw;
61  uint32_t hw_ch_num;
62  const char *name;
63 };
64 
65 /******************************************************************************/
66 /************************ Functions Declarations ******************************/
67 /******************************************************************************/
68 
69 /* Start the clock. */
70 int32_t no_os_clk_enable(struct no_os_clk * clk);
71 
72 /* Stop the clock. */
73 int32_t no_os_clk_disable(struct no_os_clk * clk);
74 
75 /* Get the current frequency of the clock. */
76 int32_t no_os_clk_recalc_rate(struct no_os_clk *clk,
77  uint64_t *rate);
78 
79 /* Round the desired frequency to a rate that the clock can actually output. */
80 int32_t no_os_clk_round_rate(struct no_os_clk *clk,
81  uint64_t rate,
82  uint64_t *rounded_rate);
83 
84 /* Change the frequency of the clock. */
85 int32_t no_os_clk_set_rate(struct no_os_clk *clk,
86  uint64_t rate);
87 
88 #endif // _NO_OS_CLK_H_
no_os_clk_hw::dev_clk_round_rate
int32_t(* dev_clk_round_rate)()
Definition: no_os_clk.h:56
no_os_clk::hw
struct no_os_clk_hw * hw
Definition: no_os_clk.h:60
no_os_clk_hw
Definition: no_os_clk.h:50
no_os_clk_recalc_rate
int32_t no_os_clk_recalc_rate(struct no_os_clk *clk, uint64_t *rate)
no_os_clk_hw::dev_clk_recalc_rate
int32_t(* dev_clk_recalc_rate)()
Definition: no_os_clk.h:54
no_os_clk_disable
int32_t no_os_clk_disable(struct no_os_clk *clk)
no_os_clk
Definition: no_os_clk.h:59
no_os_clk_round_rate
int32_t no_os_clk_round_rate(struct no_os_clk *clk, uint64_t rate, uint64_t *rounded_rate)
no_os_clk::name
const char * name
Definition: no_os_clk.h:62
no_os_clk_enable
int32_t no_os_clk_enable(struct no_os_clk *clk)
no_os_clk_hw::dev
void * dev
Definition: no_os_clk.h:51
no_os_clk::hw_ch_num
uint32_t hw_ch_num
Definition: no_os_clk.h:61
no_os_clk_hw::dev_clk_enable
int32_t(* dev_clk_enable)()
Definition: no_os_clk.h:52
no_os_clk_hw::dev_clk_disable
int32_t(* dev_clk_disable)()
Definition: no_os_clk.h:53
no_os_clk_hw::clk
struct no_os_clk * clk
Definition: common.h:63
no_os_clk_set_rate
int32_t no_os_clk_set_rate(struct no_os_clk *clk, uint64_t rate)
no_os_clk_hw::dev_clk_set_rate
int32_t(* dev_clk_set_rate)()
Definition: no_os_clk.h:55