mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-05-07 04:08:51 +00:00

rockchip scmi clock controls clocks which only available in secure mode. Signed-off-by: XiaoDong Huang <derrick.huang@rock-chips.com> Change-Id: I5b983877a5b4e8acababbf7e0a3e2725e6479e08
74 lines
1.6 KiB
C
74 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 2024, Rockchip, Inc. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <drivers/scmi-msg.h>
|
|
#include <drivers/scmi.h>
|
|
|
|
#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;
|
|
}
|