blob: 581dc76a9980d9355fdbc1aca6364724e7d41a16 [file] [log] [blame] [edit]
/*
* Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <errno.h>
#include <utils/util.h>
#include <resetserver_client.h>
typedef struct resetserver_interface_data {
int (*resetserver_assert)(reset_id_t id);
int (*resetserver_deassert)(reset_id_t id);
} resetserver_interface_data_t;
static resetserver_interface_data_t resetserver_private_data;
static int resetserver_assert_wrapper(void *data, reset_id_t id)
{
resetserver_interface_data_t *resetserver_data = data;
return resetserver_data->resetserver_assert(id);
}
static int resetserver_deassert_wrapper(void *data, reset_id_t id)
{
resetserver_interface_data_t *resetserver_data = data;
return resetserver_data->resetserver_deassert(id);
}
int resetserver_interface_init(int (*resetserver_assert)(reset_id_t id),
int (*resetserver_deassert)(reset_id_t id),
reset_sys_t *reset_sys)
{
if (!resetserver_assert) {
ZF_LOGE("reset_server_assert is NULL");
return -EINVAL;
}
if (!resetserver_deassert) {
ZF_LOGE("reset_server_deassert is NULL");
return -EINVAL;
}
if (!reset_sys) {
ZF_LOGE("reset is NULL");
return -EINVAL;
}
resetserver_private_data.resetserver_assert = resetserver_assert;
resetserver_private_data.resetserver_deassert = resetserver_deassert;
reset_sys->data = &resetserver_private_data;
reset_sys->reset_assert = resetserver_assert_wrapper;
reset_sys->reset_deassert = resetserver_deassert_wrapper;
return 0;
}