xref: /rk3399_ARM-atf/plat/mediatek/drivers/spmi/pmif_common.h (revision b62673c645752a78f649282cfa293e8da09e3bef)
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