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