1 /* 2 * Copyright (c) 2025, MediaTek Inc. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef PMIF_COMMON_H 8 #define PMIF_COMMON_H 9 10 #include <stdint.h> 11 12 enum { 13 PMIF_CMD_REG_0, 14 PMIF_CMD_REG, 15 PMIF_CMD_EXT_REG, 16 PMIF_CMD_EXT_REG_LONG, 17 }; 18 19 struct pmif { 20 void *base; 21 uint16_t *regs; 22 void *spmimst_base; 23 uint16_t *spmimst_regs; 24 uint32_t mstid; 25 int (*read_cmd)(struct pmif *arb, uint8_t opc, uint8_t sid, uint16_t addr, uint8_t *buf, 26 uint8_t len); 27 int (*write_cmd)(struct pmif *arb, uint8_t opc, uint8_t sid, uint16_t addr, 28 const uint8_t *buf, uint8_t len); 29 }; 30 31 enum { 32 PMIF_SPMI, 33 PMIF_SPI 34 }; 35 36 int pmif_spmi_read_cmd(struct pmif *arb, uint8_t opc, uint8_t sid, uint16_t addr, uint8_t *buf, 37 uint8_t len); 38 int pmif_spmi_write_cmd(struct pmif *arb, uint8_t opc, uint8_t sid, uint16_t addr, 39 const uint8_t *buf, uint8_t len); 40 struct pmif *get_pmif_controller(int inf, int mstid); 41 extern struct pmif pmif_spmi_arb[]; 42 #endif 43