xref: /rk3399_ARM-atf/plat/rockchip/common/scmi/scmi_rstd.c (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 #include <drivers/scmi-msg.h>
8*04150feeSXiaoDong Huang #include <drivers/scmi.h>
9*04150feeSXiaoDong Huang 
10*04150feeSXiaoDong Huang #include "scmi_rstd.h"
11*04150feeSXiaoDong Huang 
12*04150feeSXiaoDong Huang #pragma weak rockchip_scmi_rstd_count
13*04150feeSXiaoDong Huang #pragma weak rockchip_scmi_get_rstd
14*04150feeSXiaoDong Huang 
rockchip_scmi_rstd_count(unsigned int agent_id __unused)15*04150feeSXiaoDong Huang size_t rockchip_scmi_rstd_count(unsigned int agent_id __unused)
16*04150feeSXiaoDong Huang {
17*04150feeSXiaoDong Huang 	return 0U;
18*04150feeSXiaoDong Huang }
19*04150feeSXiaoDong Huang 
rockchip_scmi_get_rstd(unsigned int agent_id __unused,unsigned int scmi_id __unused)20*04150feeSXiaoDong Huang rk_scmi_rstd_t *rockchip_scmi_get_rstd(unsigned int agent_id __unused,
21*04150feeSXiaoDong Huang 				       unsigned int scmi_id __unused)
22*04150feeSXiaoDong Huang {
23*04150feeSXiaoDong Huang 	return NULL;
24*04150feeSXiaoDong Huang }
25*04150feeSXiaoDong Huang 
plat_scmi_rstd_count(unsigned int agent_id)26*04150feeSXiaoDong Huang size_t plat_scmi_rstd_count(unsigned int agent_id)
27*04150feeSXiaoDong Huang {
28*04150feeSXiaoDong Huang 	return rockchip_scmi_rstd_count(agent_id);
29*04150feeSXiaoDong Huang }
30*04150feeSXiaoDong Huang 
plat_scmi_rstd_get_name(unsigned int agent_id,unsigned int scmi_id)31*04150feeSXiaoDong Huang const char *plat_scmi_rstd_get_name(unsigned int agent_id,
32*04150feeSXiaoDong Huang 				    unsigned int scmi_id)
33*04150feeSXiaoDong Huang {
34*04150feeSXiaoDong Huang 	rk_scmi_rstd_t *rstd;
35*04150feeSXiaoDong Huang 
36*04150feeSXiaoDong Huang 	rstd = rockchip_scmi_get_rstd(agent_id, scmi_id);
37*04150feeSXiaoDong Huang 	if (rstd == NULL)
38*04150feeSXiaoDong Huang 		return NULL;
39*04150feeSXiaoDong Huang 
40*04150feeSXiaoDong Huang 	return rstd->name;
41*04150feeSXiaoDong Huang }
42*04150feeSXiaoDong Huang 
plat_scmi_rstd_autonomous(unsigned int agent_id,unsigned int scmi_id,unsigned int state)43*04150feeSXiaoDong Huang int32_t plat_scmi_rstd_autonomous(unsigned int agent_id,
44*04150feeSXiaoDong Huang 				  unsigned int scmi_id,
45*04150feeSXiaoDong Huang 				  unsigned int state)
46*04150feeSXiaoDong Huang {
47*04150feeSXiaoDong Huang 	rk_scmi_rstd_t *rstd;
48*04150feeSXiaoDong Huang 
49*04150feeSXiaoDong Huang 	rstd = rockchip_scmi_get_rstd(agent_id, scmi_id);
50*04150feeSXiaoDong Huang 	if (rstd == NULL)
51*04150feeSXiaoDong Huang 		return SCMI_NOT_FOUND;
52*04150feeSXiaoDong Huang 
53*04150feeSXiaoDong Huang 	if ((rstd->rstd_ops && rstd->rstd_ops->reset_auto) != 0)
54*04150feeSXiaoDong Huang 		return rstd->rstd_ops->reset_auto(rstd, state);
55*04150feeSXiaoDong Huang 	else
56*04150feeSXiaoDong Huang 		return SCMI_NOT_SUPPORTED;
57*04150feeSXiaoDong Huang }
58*04150feeSXiaoDong Huang 
plat_scmi_rstd_set_state(unsigned int agent_id,unsigned int scmi_id,bool assert_not_deassert)59*04150feeSXiaoDong Huang int32_t plat_scmi_rstd_set_state(unsigned int agent_id,
60*04150feeSXiaoDong Huang 				 unsigned int scmi_id,
61*04150feeSXiaoDong Huang 				 bool assert_not_deassert)
62*04150feeSXiaoDong Huang {
63*04150feeSXiaoDong Huang 	rk_scmi_rstd_t *rstd;
64*04150feeSXiaoDong Huang 
65*04150feeSXiaoDong Huang 	rstd = rockchip_scmi_get_rstd(agent_id, scmi_id);
66*04150feeSXiaoDong Huang 	if (rstd == NULL)
67*04150feeSXiaoDong Huang 		return SCMI_NOT_FOUND;
68*04150feeSXiaoDong Huang 
69*04150feeSXiaoDong Huang 	if ((rstd->rstd_ops && rstd->rstd_ops->reset_explicit) != 0)
70*04150feeSXiaoDong Huang 		return rstd->rstd_ops->reset_explicit(rstd,
71*04150feeSXiaoDong Huang 						      assert_not_deassert);
72*04150feeSXiaoDong Huang 	else
73*04150feeSXiaoDong Huang 		return SCMI_NOT_SUPPORTED;
74*04150feeSXiaoDong Huang }
75