xref: /rk3399_ARM-atf/drivers/ti/clk/include/ti_clk_dev.h (revision c02cadbb34ff0b52fd7cbb24e2d9c108183ca5ef)
1 /*
2  * Copyright (c) 2025-2026 Texas Instruments Incorporated - https://www.ti.com
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 /*
8  * TI Device Clock API Header
9  *
10  * This header defines the data structures and interfaces for clocks that
11  * are derived from device power states. It allows the clock framework to
12  * track device power domains as clock sources, providing frequency and
13  * state information based on device power state.
14  */
15 
16 #ifndef TI_CLK_DEV_H
17 #define TI_CLK_DEV_H
18 
19 #include <ti_clk.h>
20 #include <ti_device.h>
21 #include <ti_pm_types.h>
22 
23 /*
24  * Clock sourced from a device IP block
25  *
26  * Represents a SoC clock that derives its frequency and state from an IP
27  * block's power domain. Allows the clock framework to query device power
28  * states and clock outputs as clock sources.
29  */
30 struct ti_clk_data_from_dev {
31 	/* Base clock driver data */
32 	struct ti_clk_drv_data data;
33 	/* Device index that provides this clock */
34 	ti_dev_idx_t dev;
35 	/* Clock index within the source device */
36 	ti_dev_clk_idx_t clk_idx;
37 };
38 
39 /*
40  * Device-sourced clock driver
41  *
42  * Implements clock operations for clocks derived from device IP blocks.
43  * Queries device power state and output clocks to provide frequency and
44  * enable information to the clock framework.
45  */
46 extern const struct ti_clk_drv ti_clk_drv_from_device;
47 
48 #endif /* TI_CLK_DEV_H */
49