15#ifndef ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_H_
16#define ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_H_
47#define CLOCK_CONTROL_SUBSYS_ALL NULL
188 return api->
on(dev, sys);
210 return api->
off(dev, sys);
241 return api->
async_on(dev, sys, cb, user_data);
286 return api->
get_rate(dev, sys, rate);
315 return api->
set_rate(dev, sys, rate);
#define DEVICE_API_GET(_class, _dev)
Expands to the pointer of a device's API for a given class.
Definition device.h:1425
static int clock_control_get_rate(const struct device *dev, clock_control_subsys_t sys, uint32_t *rate)
Obtain the clock rate of given sub-system.
Definition clock_control.h:276
static int clock_control_async_on(const struct device *dev, clock_control_subsys_t sys, clock_control_cb_t cb, void *user_data)
Request clock to start with notification when clock has been started.
Definition clock_control.h:230
void * clock_control_subsys_rate_t
Opaque handle identifying the rate of a clock controller subsystem.
Definition clock_control.h:73
enum clock_control_status(* clock_control_get_status_fn)(const struct device *dev, clock_control_subsys_t sys)
Callback API to get a clock status.
Definition clock_control.h:122
int(* clock_control_async_on_fn)(const struct device *dev, clock_control_subsys_t sys, clock_control_cb_t cb, void *user_data)
Callback API to start a clock asynchronously.
Definition clock_control.h:112
void(* clock_control_cb_t)(const struct device *dev, clock_control_subsys_t subsys, void *user_data)
Callback called on clock started.
Definition clock_control.h:81
int(* clock_control_configure_fn)(const struct device *dev, clock_control_subsys_t sys, void *data)
Callback API to configure a clock.
Definition clock_control.h:140
static enum clock_control_status clock_control_get_status(const struct device *dev, clock_control_subsys_t sys)
Get clock status.
Definition clock_control.h:252
static int clock_control_set_rate(const struct device *dev, clock_control_subsys_t sys, clock_control_subsys_rate_t rate)
Set the rate of the clock controlled by the device.
Definition clock_control.h:305
int(* clock_control_get)(const struct device *dev, clock_control_subsys_t sys, uint32_t *rate)
Callback API to get a clock rate.
Definition clock_control.h:103
int(* clock_control)(const struct device *dev, clock_control_subsys_t sys)
@def_driverbackendgroup{Clock Control,clock_control_interface}
Definition clock_control.h:96
int(* clock_control_set)(const struct device *dev, clock_control_subsys_t sys, clock_control_subsys_rate_t rate)
Callback API to set a clock rate.
Definition clock_control.h:131
void * clock_control_subsys_t
Opaque handle identifying a clock controller subsystem.
Definition clock_control.h:65
clock_control_status
Current clock status.
Definition clock_control.h:52
static int clock_control_off(const struct device *dev, clock_control_subsys_t sys)
Disable a clock controlled by the device.
Definition clock_control.h:201
static int clock_control_on(const struct device *dev, clock_control_subsys_t sys)
Enable a clock controlled by the device.
Definition clock_control.h:179
static int clock_control_configure(const struct device *dev, clock_control_subsys_t sys, void *data)
Configure a source clock.
Definition clock_control.h:340
@ CLOCK_CONTROL_STATUS_ON
Clock is on.
Definition clock_control.h:55
@ CLOCK_CONTROL_STATUS_OFF
Clock is off.
Definition clock_control.h:54
@ CLOCK_CONTROL_STATUS_UNKNOWN
Clock status is unknown.
Definition clock_control.h:56
@ CLOCK_CONTROL_STATUS_STARTING
Clock is starting.
Definition clock_control.h:53
#define ENOSYS
Function not implemented.
Definition errno.h:82
#define NULL
Definition iar_missing_defs.h:20
Header file for the single-linked list API.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
@driver_ops{Clock Control}
Definition clock_control.h:147
clock_control_set set_rate
@driver_ops_optional Set the rate of the clock controlled by the device.
Definition clock_control.h:159
clock_control on
@driver_ops_optional Enable a clock controlled by the device.
Definition clock_control.h:149
clock_control_get_status_fn get_status
@driver_ops_optional Get clock status.
Definition clock_control.h:157
clock_control off
@driver_ops_optional Disable a clock controlled by the device.
Definition clock_control.h:151
clock_control_async_on_fn async_on
@driver_ops_optional Request clock to start with notification when clock has been started.
Definition clock_control.h:153
clock_control_get get_rate
@driver_ops_optional Obtain the clock rate of given sub-system.
Definition clock_control.h:155
clock_control_configure_fn configure
@driver_ops_optional Configure a source clock.
Definition clock_control.h:161
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
void * data
Address of the device instance private data.
Definition device.h:523