coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
spi_common.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef MTK_COMMON_SPI_H
4 #define MTK_COMMON_SPI_H
5 
6 #include <device/mmio.h>
7 #include <soc/gpio_base.h>
8 #include <spi-generic.h>
9 #include <types.h>
10 
11 enum {
27 
43 };
44 
50  SPI_PAD_SEL_MASK = 0x3
51 };
52 
53 /* SPI peripheral register map. */
54 typedef struct mtk_spi_regs {
69 
70 check_member(mtk_spi_regs, spi_pad_macro_sel_reg, 0x24);
71 
72 struct mtk_spi_bus {
73  struct spi_slave slave;
74  struct mtk_spi_regs *regs;
76  int state;
78 };
79 
80 extern const struct spi_ctrlr spi_ctrlr;
81 extern struct mtk_spi_bus spi_bus[];
82 
83 void mtk_spi_set_gpio_pinmux(unsigned int bus,
84  enum spi_pad_mask pad_select);
85 void mtk_spi_set_timing(struct mtk_spi_regs *regs, u32 sck_ticks, u32 cs_ticks,
86  unsigned int tick_dly);
87 void mtk_spi_init(unsigned int bus, enum spi_pad_mask pad_select,
88  unsigned int speed_hz, unsigned int tick_dly);
89 
90 #endif
#define BIT(nr)
Definition: ec_commands.h:45
check_member(mtk_spi_regs, spi_pad_macro_sel_reg, 0x24)
void mtk_spi_set_timing(struct mtk_spi_regs *regs, u32 sck_ticks, u32 cs_ticks, unsigned int tick_dly)
Definition: spi.c:37
struct mtk_spi_regs mtk_spi_regs
spi_pad_mask
Definition: spi_common.h:45
@ SPI_PAD3_MASK
Definition: spi_common.h:49
@ SPI_PAD1_MASK
Definition: spi_common.h:47
@ SPI_PAD_SEL_MASK
Definition: spi_common.h:50
@ SPI_PAD2_MASK
Definition: spi_common.h:48
@ SPI_PAD0_MASK
Definition: spi_common.h:46
struct mtk_spi_bus spi_bus[]
Definition: spi.c:11
void mtk_spi_init(unsigned int bus, enum spi_pad_mask pad_select, unsigned int speed_hz, unsigned int tick_dly)
Definition: spi.c:56
void mtk_spi_set_gpio_pinmux(unsigned int bus, enum spi_pad_mask pad_select)
Definition: spi.c:18
@ SPI_CMD_TX_ENDIAN_SHIFT
Definition: spi_common.h:24
@ SPI_CMD_DEASSERT_SHIFT
Definition: spi_common.h:16
@ SPI_CMD_CPHA_EN
Definition: spi_common.h:33
@ SPI_CMD_ACT_EN
Definition: spi_common.h:28
@ SPI_CMD_PAUSE_IE_EN
Definition: spi_common.h:42
@ SPI_CMD_FINISH_IE_SHIFT
Definition: spi_common.h:25
@ SPI_CMD_RX_ENDIAN_SHIFT
Definition: spi_common.h:23
@ SPI_CMD_RST_SHIFT
Definition: spi_common.h:14
@ SPI_CMD_TX_ENDIAN_EN
Definition: spi_common.h:40
@ SPI_CMD_CPOL_SHIFT
Definition: spi_common.h:18
@ SPI_CMD_RST_EN
Definition: spi_common.h:30
@ SPI_CMD_CPHA_SHIFT
Definition: spi_common.h:17
@ SPI_CMD_PAUSE_IE_SHIFT
Definition: spi_common.h:26
@ SPI_CMD_RX_DMA_EN
Definition: spi_common.h:35
@ SPI_CMD_RESUME_EN
Definition: spi_common.h:29
@ SPI_CMD_TXMSBF_EN
Definition: spi_common.h:37
@ SPI_CMD_CPOL_EN
Definition: spi_common.h:34
@ SPI_CMD_ACT_SHIFT
Definition: spi_common.h:12
@ SPI_CMD_TXMSBF_SHIFT
Definition: spi_common.h:21
@ SPI_CMD_RX_DMA_SHIFT
Definition: spi_common.h:19
@ SPI_CMD_DEASSERT_EN
Definition: spi_common.h:32
@ SPI_CMD_RESUME_SHIFT
Definition: spi_common.h:13
@ SPI_CMD_RX_ENDIAN_EN
Definition: spi_common.h:39
@ SPI_CMD_TX_DMA_EN
Definition: spi_common.h:36
@ SPI_CMD_PAUSE_EN_SHIFT
Definition: spi_common.h:15
@ SPI_CMD_FINISH_IE_EN
Definition: spi_common.h:41
@ SPI_CMD_PAUSE_EN
Definition: spi_common.h:31
@ SPI_CMD_RXMSBF_SHIFT
Definition: spi_common.h:22
@ SPI_CMD_RXMSBF_EN
Definition: spi_common.h:38
@ SPI_CMD_TX_DMA_SHIFT
Definition: spi_common.h:20
unsigned int uint32_t
Definition: stdint.h:14
uint32_t u32
Definition: stdint.h:51
Definition: device.h:76
int initialized
Definition: spi_common.h:75
gpio_t cs_gpio
Definition: spi_common.h:77
struct mtk_spi_regs * regs
Definition: spi_common.h:74
struct spi_slave slave
Definition: spi_common.h:73
uint32_t spi_tx_data_reg
Definition: spi_common.h:59
uint32_t spi_rx_dst_64_reg
Definition: spi_common.h:67
uint32_t spi_tx_src_64_reg
Definition: spi_common.h:66
uint32_t spi_tx_src_reg
Definition: spi_common.h:57
uint32_t spi_pad_macro_sel_reg
Definition: spi_common.h:64
uint32_t spi_cfg1_reg
Definition: spi_common.h:56
uint32_t spi_cfg0_reg
Definition: spi_common.h:55
uint32_t spi_status1_reg
Definition: spi_common.h:63
uint32_t spi_cmd_reg
Definition: spi_common.h:61
uint32_t spi_rx_data_reg
Definition: spi_common.h:60
uint32_t spi_status0_reg
Definition: spi_common.h:62
uint32_t spi_cfg2_reg
Definition: spi_common.h:65
uint32_t spi_rx_dst_reg
Definition: spi_common.h:58