1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Common bus abstraction layer.
4  *
5  * Copyright (c) 2017-2020, Silicon Laboratories, Inc.
6  * Copyright (c) 2010, ST-Ericsson
7  */
8 #ifndef WFX_BUS_H
9 #define WFX_BUS_H
10 
11 #include <linux/mmc/sdio_func.h>
12 #include <linux/spi/spi.h>
13 
14 #define WFX_REG_CONFIG        0x0
15 #define WFX_REG_CONTROL       0x1
16 #define WFX_REG_IN_OUT_QUEUE  0x2
17 #define WFX_REG_AHB_DPORT     0x3
18 #define WFX_REG_BASE_ADDR     0x4
19 #define WFX_REG_SRAM_DPORT    0x5
20 #define WFX_REG_SET_GEN_R_W   0x6
21 #define WFX_REG_FRAME_OUT     0x7
22 
23 struct hwbus_ops {
24 	int (*copy_from_io)(void *bus_priv, unsigned int addr,
25 			    void *dst, size_t count);
26 	int (*copy_to_io)(void *bus_priv, unsigned int addr,
27 			  const void *src, size_t count);
28 	int (*irq_subscribe)(void *bus_priv);
29 	int (*irq_unsubscribe)(void *bus_priv);
30 	void (*lock)(void *bus_priv);
31 	void (*unlock)(void *bus_priv);
32 	size_t (*align_size)(void *bus_priv, size_t size);
33 };
34 
35 extern struct sdio_driver wfx_sdio_driver;
36 extern struct spi_driver wfx_spi_driver;
37 
38 #endif
39