/* * Copyright (c) 2024, Rockchip, Inc. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include #include #include "scmi_rstd.h" #pragma weak rockchip_scmi_rstd_count #pragma weak rockchip_scmi_get_rstd size_t rockchip_scmi_rstd_count(unsigned int agent_id __unused) { return 0U; } rk_scmi_rstd_t *rockchip_scmi_get_rstd(unsigned int agent_id __unused, unsigned int scmi_id __unused) { return NULL; } size_t plat_scmi_rstd_count(unsigned int agent_id) { return rockchip_scmi_rstd_count(agent_id); } const char *plat_scmi_rstd_get_name(unsigned int agent_id, unsigned int scmi_id) { rk_scmi_rstd_t *rstd; rstd = rockchip_scmi_get_rstd(agent_id, scmi_id); if (rstd == NULL) return NULL; return rstd->name; } int32_t plat_scmi_rstd_autonomous(unsigned int agent_id, unsigned int scmi_id, unsigned int state) { rk_scmi_rstd_t *rstd; rstd = rockchip_scmi_get_rstd(agent_id, scmi_id); if (rstd == NULL) return SCMI_NOT_FOUND; if ((rstd->rstd_ops && rstd->rstd_ops->reset_auto) != 0) return rstd->rstd_ops->reset_auto(rstd, state); else return SCMI_NOT_SUPPORTED; } int32_t plat_scmi_rstd_set_state(unsigned int agent_id, unsigned int scmi_id, bool assert_not_deassert) { rk_scmi_rstd_t *rstd; rstd = rockchip_scmi_get_rstd(agent_id, scmi_id); if (rstd == NULL) return SCMI_NOT_FOUND; if ((rstd->rstd_ops && rstd->rstd_ops->reset_explicit) != 0) return rstd->rstd_ops->reset_explicit(rstd, assert_not_deassert); else return SCMI_NOT_SUPPORTED; }