xref: /rk3399_ARM-atf/plat/rockchip/common/scmi/scmi_rstd.h (revision 44418fce30938ee483fbfc79cc32fde33753d1aa)
1*04150feeSXiaoDong Huang /*
2*04150feeSXiaoDong Huang  * Copyright (c) 2024, Rockchip, Inc. All rights reserved.
3*04150feeSXiaoDong Huang  *
4*04150feeSXiaoDong Huang  * SPDX-License-Identifier: BSD-3-Clause
5*04150feeSXiaoDong Huang  */
6*04150feeSXiaoDong Huang 
7*04150feeSXiaoDong Huang #ifndef RK_SCMI_RESET_DOMAIN_H
8*04150feeSXiaoDong Huang #define RK_SCMI_RESET_DOMAIN_H
9*04150feeSXiaoDong Huang 
10*04150feeSXiaoDong Huang #include <stdint.h>
11*04150feeSXiaoDong Huang 
12*04150feeSXiaoDong Huang #include <common.h>
13*04150feeSXiaoDong Huang 
14*04150feeSXiaoDong Huang struct rk_scmi_rstd;
15*04150feeSXiaoDong Huang 
16*04150feeSXiaoDong Huang struct rk_scmi_rstd_ops {
17*04150feeSXiaoDong Huang 	int (*reset_auto)(struct rk_scmi_rstd *rstd, uint32_t state);
18*04150feeSXiaoDong Huang 	int (*reset_explicit)(struct rk_scmi_rstd *rstd, bool assert_not_deassert);
19*04150feeSXiaoDong Huang };
20*04150feeSXiaoDong Huang 
21*04150feeSXiaoDong Huang typedef struct rk_scmi_rstd {
22*04150feeSXiaoDong Huang 	char name[SCMI_RESET_DOMAIN_ATTR_NAME_SZ];
23*04150feeSXiaoDong Huang 	uint32_t id;
24*04150feeSXiaoDong Huang 	uint32_t attribute;
25*04150feeSXiaoDong Huang 	uint32_t latency;
26*04150feeSXiaoDong Huang 	struct rk_scmi_rstd_ops *rstd_ops;
27*04150feeSXiaoDong Huang } rk_scmi_rstd_t;
28*04150feeSXiaoDong Huang 
29*04150feeSXiaoDong Huang /*
30*04150feeSXiaoDong Huang  * Return number of reset domain for an agent
31*04150feeSXiaoDong Huang  * @agent_id: SCMI agent ID
32*04150feeSXiaoDong Huang  * Return number of reset domain
33*04150feeSXiaoDong Huang  */
34*04150feeSXiaoDong Huang size_t rockchip_scmi_rstd_count(unsigned int agent_id);
35*04150feeSXiaoDong Huang 
36*04150feeSXiaoDong Huang /*
37*04150feeSXiaoDong Huang  * Get rk_scmi_rstd_t point
38*04150feeSXiaoDong Huang  * @agent_id: SCMI agent ID
39*04150feeSXiaoDong Huang  * @scmi_id: SCMI rstd ID
40*04150feeSXiaoDong Huang  * Return a rk_scmi_rstd_t point
41*04150feeSXiaoDong Huang  */
42*04150feeSXiaoDong Huang rk_scmi_rstd_t *rockchip_scmi_get_rstd(unsigned int agent_id,
43*04150feeSXiaoDong Huang 				       unsigned int scmi_id);
44*04150feeSXiaoDong Huang 
45*04150feeSXiaoDong Huang #endif /* RK_SCMI_RESET_DOMAIN_H */
46