1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /*
- * Copyright (c) 2024, Rockchip, Inc. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #ifndef RK_SCMI_CLOCK_H
- #define RK_SCMI_CLOCK_H
- #include <stdint.h>
- #include <common.h>
- struct rk_scmi_clock;
- struct rk_clk_ops {
- unsigned long (*get_rate)(struct rk_scmi_clock *clock);
- int (*set_rate)(struct rk_scmi_clock *clock, unsigned long rate);
- int (*set_status)(struct rk_scmi_clock *clock, bool status);
- };
- typedef struct rk_scmi_clock {
- char name[SCMI_CLOCK_NAME_LENGTH_MAX];
- uint8_t enable;
- int8_t is_security;
- uint32_t id;
- uint32_t rate_cnt;
- uint64_t cur_rate;
- uint32_t enable_count;
- const struct rk_clk_ops *clk_ops;
- unsigned long *rate_table;
- } rk_scmi_clock_t;
- /*
- * Return number of clock controllers for an agent
- * @agent_id: SCMI agent ID
- * Return number of clock controllers
- */
- size_t rockchip_scmi_clock_count(unsigned int agent_id);
- /*
- * Get rk_scmi_clock_t point
- * @agent_id: SCMI agent ID
- * @scmi_id: SCMI clock ID
- * Return a rk_scmi_clock_t point
- */
- rk_scmi_clock_t *rockchip_scmi_get_clock(uint32_t agent_id,
- uint32_t scmi_id);
- #endif /* RK_SCMI_CLOCK_H */
|