1#ifndef BCM63XX_DEV_SPI_H
2#define BCM63XX_DEV_SPI_H
3
4#include <linux/types.h>
5#include <bcm63xx_io.h>
6#include <bcm63xx_regs.h>
7
8int __init bcm63xx_spi_register(void);
9
10struct bcm63xx_spi_pdata {
11	unsigned int	fifo_size;
12	unsigned int	msg_type_shift;
13	unsigned int	msg_ctl_width;
14	int		bus_num;
15	int		num_chipselect;
16};
17
18enum bcm63xx_regs_spi {
19	SPI_CMD,
20	SPI_INT_STATUS,
21	SPI_INT_MASK_ST,
22	SPI_INT_MASK,
23	SPI_ST,
24	SPI_CLK_CFG,
25	SPI_FILL_BYTE,
26	SPI_MSG_TAIL,
27	SPI_RX_TAIL,
28	SPI_MSG_CTL,
29	SPI_MSG_DATA,
30	SPI_RX_DATA,
31};
32
33#define __GEN_SPI_REGS_TABLE(__cpu)					\
34	[SPI_CMD]		= SPI_## __cpu ##_CMD,			\
35	[SPI_INT_STATUS]	= SPI_## __cpu ##_INT_STATUS,		\
36	[SPI_INT_MASK_ST]	= SPI_## __cpu ##_INT_MASK_ST,		\
37	[SPI_INT_MASK]		= SPI_## __cpu ##_INT_MASK,		\
38	[SPI_ST]		= SPI_## __cpu ##_ST,			\
39	[SPI_CLK_CFG]		= SPI_## __cpu ##_CLK_CFG,		\
40	[SPI_FILL_BYTE]		= SPI_## __cpu ##_FILL_BYTE,		\
41	[SPI_MSG_TAIL]		= SPI_## __cpu ##_MSG_TAIL,		\
42	[SPI_RX_TAIL]		= SPI_## __cpu ##_RX_TAIL,		\
43	[SPI_MSG_CTL]		= SPI_## __cpu ##_MSG_CTL,		\
44	[SPI_MSG_DATA]		= SPI_## __cpu ##_MSG_DATA,		\
45	[SPI_RX_DATA]		= SPI_## __cpu ##_RX_DATA,
46
47static inline unsigned long bcm63xx_spireg(enum bcm63xx_regs_spi reg)
48{
49	extern const unsigned long *bcm63xx_regs_spi;
50
51	return bcm63xx_regs_spi[reg];
52}
53
54#endif /* BCM63XX_DEV_SPI_H */
55