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