16 #if defined(CONFIG_DEBUG_SPI) && CONFIG_DEBUG_SPI
17 # define DEBUG_SPI(x,...) printk(BIOS_DEBUG, "EXYNOS_SPI: " x)
19 # define DEBUG_SPI(x,...)
23 void *dinp,
void const *doutp,
int i)
26 unsigned int *rxp = (
unsigned int *)(dinp + (i * (32 * 1024)));
27 unsigned int out_bytes, in_bytes;
33 out_bytes = in_bytes = todo;
43 rx_lvl = ((spi_sts >> 15) & 0x7f);
44 tx_lvl = ((spi_sts >> 6) & 0x7f);
45 while (tx_lvl < 32 && out_bytes) {
53 while (rx_lvl >= 4 && in_bytes) {
104 for (upto = 0, i = 0; upto < len; upto += todo, i++) {
105 todo =
MIN(len - upto, (1 << 15));
static void write32(void *addr, uint32_t val)
static uint32_t read32(const void *addr)
struct mem_pool cbfs_cache
static struct region_device rdev
#define setbits32(addr, set)
#define clrsetbits32(addr, clear, set)
#define clrbits32(addr, clear)
void * mmap_helper_rdev_mmap(const struct region_device *, size_t, size_t)
int mmap_helper_rdev_munmap(const struct region_device *, void *)
#define MMAP_HELPER_DEV_INIT(ops_, offset_, size_, mpool_)
#define EXYNOS5_SPI1_BASE
#define SPI_SLAVE_SIG_INACT
#define SPI_MODE_CH_WIDTH_WORD
#define SPI_RX_HWORD_SWAP
#define SPI_MODE_BUS_WIDTH_WORD
#define SPI_PACKET_CNT_EN
void exynos_init_spi_boot_device(void)
static struct mmap_helper_region_device mdev
static ssize_t exynos_spi_readat(const struct region_device *rdev, void *dest, size_t offset, size_t count)
const struct region_device * exynos_spi_boot_device(void)
int exynos_spi_close(struct exynos_spi *regs)
static struct exynos_spi * boot_slave_regs
int exynos_spi_open(struct exynos_spi *regs)
static void * exynos_spi_map(const struct region_device *rdev, size_t offset, size_t count)
static const struct region_device_ops exynos_spi_ops
int exynos_spi_read(struct exynos_spi *regs, void *dest, u32 len, u32 off)
static void exynos_spi_rx_tx(struct exynos_spi *regs, int todo, void *dinp, void const *doutp, int i)
struct region_device rdev
void *(* mmap)(const struct region_device *, size_t, size_t)