/* * Copyright (c) 2025, Mediatek Inc. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef SPMI_SW_H #define SPMI_SW_H #include #include #include enum spmi_regs { SPMI_OP_ST_CTRL, SPMI_GRP_ID_EN, SPMI_OP_ST_STA, SPMI_MST_SAMPL, SPMI_MST_REQ_EN, /* RCS support */ SPMI_RCS_CTRL, SPMI_SLV_3_0_EINT, SPMI_SLV_7_4_EINT, SPMI_SLV_B_8_EINT, SPMI_SLV_F_C_EINT, SPMI_REC_CTRL, SPMI_REC0, SPMI_REC1, SPMI_REC2, SPMI_REC3, SPMI_REC4, SPMI_REC_CMD_DEC, SPMI_DEC_DBG, SPMI_MST_DBG }; /* DEBUG MARCO */ #define SPMITAG "[SPMI] " #define SPMI_ERR(fmt, arg...) ERROR(SPMITAG fmt, ##arg) #define SPMI_ERRL(fmt, arg...) ERROR(fmt, ##arg) #define SPMI_INFO(fmt, arg...) INFO(SPMITAG fmt, ##arg) #define wait_us(cond, timeout) \ ({ \ uint64_t __now, __end, __ret; \ \ __end = sched_clock() + timeout; \ for (;;) { \ if (cond) { \ __ret = timeout; \ break; \ } \ __now = sched_clock(); \ if (__end <= __now) { \ __ret = 0; \ break; \ } \ } \ __ret; \ }) enum { SPMI_RESET = 0, SPMI_SLEEP, SPMI_SHUTDOWN, SPMI_WAKEUP }; #endif