![]() |
coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
|
#include <device/mmio.h>
#include <assert.h>
#include <console/console.h>
#include <endian.h>
#include <gpio.h>
#include <soc/pll.h>
#include <soc/spi.h>
#include <timer.h>
#include <types.h>
Go to the source code of this file.
Macros | |
#define | MTK_SPI_DEBUG 0 |
Enumerations | |
enum | { MTK_FIFO_DEPTH = 32 , MTK_TXRX_TIMEOUT_US = 1000 * 1000 , MTK_ARBITRARY_VALUE = 0xdeaddead } |
enum | { MTK_SPI_IDLE = 0 , MTK_SPI_PAUSE_IDLE = 1 } |
enum | { MTK_SPI_BUSY_STATUS = 1 , MTK_SPI_PAUSE_FINISH_INT_STATUS = 3 } |
Functions | |
static struct mtk_spi_bus * | to_mtk_spi (const struct spi_slave *slave) |
void | mtk_spi_set_timing (struct mtk_spi_regs *regs, u32 sck_ticks, u32 cs_ticks, unsigned int tick_dly) |
static void | spi_sw_reset (struct mtk_spi_regs *regs) |
void | mtk_spi_init (unsigned int bus, enum spi_pad_mask pad_select, unsigned int speed_hz, unsigned int tick_dly) |
static void | mtk_spi_dump_data (const char *name, const uint8_t *data, int size) |
static int | spi_ctrlr_claim_bus (const struct spi_slave *slave) |
static int | do_transfer (const struct spi_slave *slave, void *in, const void *out, size_t *bytes_in, size_t *bytes_out) |
static int | spi_ctrlr_xfer (const struct spi_slave *slave, const void *dout, size_t bytes_out, void *din, size_t bytes_in) |
static void | spi_ctrlr_release_bus (const struct spi_slave *slave) |
static int | spi_ctrlr_setup (const struct spi_slave *slave) |
Variables | |
const struct spi_ctrlr | spi_ctrlr |
anonymous enum |
anonymous enum |
|
static |
Definition at line 120 of file spi.c.
References BIOS_ERR, DIV_ROUND_UP, inb(), MIN, MTK_ARBITRARY_VALUE, MTK_SPI_BUSY_STATUS, mtk_spi_dump_data(), MTK_SPI_IDLE, MTK_SPI_PAUSE_FINISH_INT_STATUS, MTK_SPI_PAUSE_IDLE, MTK_TXRX_TIMEOUT_US, outb(), printk, read32(), mtk_spi_bus::regs, SET32_BITFIELDS, setbits32, slave, SPI_CMD_ACT_EN, SPI_CMD_RESUME_EN, spi_sw_reset(), mtk_spi_bus::state, stopwatch_expired(), stopwatch_init_usecs_expire(), to_mtk_spi(), and write32().
Referenced by spi_ctrlr_xfer().
Definition at line 95 of file spi.c.
References BIOS_DEBUG, BIOS_INFO, MTK_SPI_DEBUG, name, and printk.
Referenced by do_transfer().
void mtk_spi_init | ( | unsigned int | bus, |
enum spi_pad_mask | pad_select, | ||
unsigned int | speed_hz, | ||
unsigned int | tick_dly | ||
) |
Definition at line 56 of file spi.c.
References assert, BIOS_DEBUG, clrsetbits32, DIV_ROUND_UP, gpio_output(), mtk_spi_set_gpio_pinmux(), mtk_spi_set_timing(), printk, slave, spi_bus, SPI_BUS_NUMBER, SPI_CMD_CPHA_EN, SPI_CMD_CPOL_EN, SPI_CMD_DEASSERT_EN, SPI_CMD_FINISH_IE_EN, SPI_CMD_PAUSE_EN, SPI_CMD_PAUSE_IE_EN, SPI_CMD_RX_DMA_EN, SPI_CMD_RX_ENDIAN_EN, SPI_CMD_RXMSBF_EN, SPI_CMD_TX_DMA_EN, SPI_CMD_TX_ENDIAN_EN, SPI_CMD_TXMSBF_EN, SPI_HZ, and SPI_PAD_SEL_MASK.
Referenced by bootblock_mainboard_init(), and mainboard_early_init().
void mtk_spi_set_timing | ( | struct mtk_spi_regs * | regs, |
u32 | sck_ticks, | ||
u32 | cs_ticks, | ||
unsigned int | tick_dly | ||
) |
Definition at line 37 of file spi.c.
References GET_SCK_REG, and SET32_BITFIELDS.
Referenced by mtk_spi_init().
|
static |
Definition at line 107 of file spi.c.
References mtk_spi_bus::cs_gpio, gpio_output(), MTK_SPI_IDLE, mtk_spi_bus::regs, setbits32, slave, SPI_CMD_PAUSE_EN_SHIFT, mtk_spi_bus::state, and to_mtk_spi().
Definition at line 241 of file spi.c.
References clrbits32, mtk_spi_bus::cs_gpio, gpio_output(), MTK_SPI_IDLE, mtk_spi_bus::regs, slave, SPI_CMD_PAUSE_EN, spi_sw_reset(), mtk_spi_bus::state, and to_mtk_spi().
|
static |
|
static |
Definition at line 212 of file spi.c.
References do_transfer(), MIN, MTK_FIFO_DEPTH, and slave.
|
static |
Definition at line 50 of file spi.c.
References clrbits32, setbits32, and SPI_CMD_RST_EN.
Referenced by do_transfer(), and spi_ctrlr_release_bus().
|
inlinestatic |
Definition at line 31 of file spi.c.
References assert, spi_slave::bus, slave, spi_bus, and SPI_BUS_NUMBER.
Referenced by do_transfer(), spi_ctrlr_claim_bus(), and spi_ctrlr_release_bus().