coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
spi_dma.c File Reference
#include <amdblocks/lpc.h>
#include <amdblocks/spi.h>
#include <assert.h>
#include <boot_device.h>
#include <commonlib/bsd/helpers.h>
#include <commonlib/region.h>
#include <console/console.h>
#include <delay.h>
#include <device/pci_ops.h>
#include <soc/pci_devs.h>
#include <spi_flash.h>
#include <string.h>
#include <thread.h>
#include <types.h>
Include dependency graph for spi_dma.c:

Go to the source code of this file.

Data Structures

struct  spi_dma_transaction
 

Macros

#define rom_base   ((void *)(uintptr_t)(0x100000000ULL - CONFIG_ROM_SIZE))
 

Functions

static voidspi_dma_mmap (const struct region_device *rd, size_t offset, size_t size __unused)
 
static int spi_dma_munmap (const struct region_device *rd __unused, void *mapping __unused)
 
static ssize_t spi_dma_readat_mmap (const struct region_device *rd, void *b, size_t offset, size_t size)
 
static bool spi_dma_is_busy (void)
 
static bool spi_dma_has_error (void)
 
static bool can_use_dma (void *destination, size_t source, size_t size)
 
static void start_spi_dma_transaction (struct spi_dma_transaction *transaction)
 
static bool continue_spi_dma_transaction (const struct region_device *rd, struct spi_dma_transaction *transaction)
 
static ssize_t spi_dma_readat_dma (const struct region_device *rd, void *destination, size_t source, size_t size)
 
static ssize_t spi_dma_readat (const struct region_device *rd, void *b, size_t offset, size_t size)
 
const struct region_deviceboot_device_ro (void)
 
uint32_t spi_flash_get_mmap_windows (struct flash_mmap_window *table)
 
static void spi_dma_fix (void)
 
void boot_device_init (void)
 

Variables

static struct thread_mutex spi_dma_hw_mutex
 
const struct region_device_ops spi_dma_rdev_ro_ops
 
static const struct mem_region_device boot_dev
 

Macro Definition Documentation

◆ rom_base

#define rom_base   ((void *)(uintptr_t)(0x100000000ULL - CONFIG_ROM_SIZE))

Definition at line 19 of file spi_dma.c.

Function Documentation

◆ boot_device_init()

void boot_device_init ( void  )

Definition at line 263 of file spi_dma.c.

References spi_dma_fix().

Here is the call graph for this function:

◆ boot_device_ro()

const struct region_device* boot_device_ro ( void  )

Definition at line 235 of file spi_dma.c.

References boot_dev, and mem_region_device::rdev.

◆ can_use_dma()

static bool can_use_dma ( void destination,
size_t  source,
size_t  size 
)
static

Definition at line 67 of file spi_dma.c.

References BIOS_DEBUG, IS_ALIGNED, LPC_ROM_DMA_MIN_ALIGNMENT, and printk.

◆ continue_spi_dma_transaction()

static bool continue_spi_dma_transaction ( const struct region_device rd,
struct spi_dma_transaction transaction 
)
static

◆ spi_dma_fix()

static void spi_dma_fix ( void  )
static

Definition at line 255 of file spi_dma.c.

References BIT, spi_read8(), spi_write8(), and val.

Referenced by boot_device_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ spi_dma_has_error()

static bool spi_dma_has_error ( void  )
static

Definition at line 61 of file spi_dma.c.

References LPC_ROM_DMA_CTRL_ERROR, LPC_ROM_DMA_EC_HOST_CONTROL, pci_read_config32(), and SOC_LPC_DEV.

Referenced by continue_spi_dma_transaction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ spi_dma_is_busy()

static bool spi_dma_is_busy ( void  )
static

Definition at line 55 of file spi_dma.c.

References LPC_ROM_DMA_CTRL_START, LPC_ROM_DMA_EC_HOST_CONTROL, pci_read_config32(), and SOC_LPC_DEV.

Referenced by continue_spi_dma_transaction(), and start_spi_dma_transaction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ spi_dma_mmap()

static void* spi_dma_mmap ( const struct region_device rd,
size_t  offset,
size_t size  __unused 
)
static

Definition at line 29 of file spi_dma.c.

References container_of, mdev, offset, and rdev.

◆ spi_dma_munmap()

static int spi_dma_munmap ( const struct region_device *rd  __unused,
void *mapping  __unused 
)
static

Definition at line 38 of file spi_dma.c.

◆ spi_dma_readat()

static ssize_t spi_dma_readat ( const struct region_device rd,
void b,
size_t  offset,
size_t  size 
)
static

Definition at line 215 of file spi_dma.c.

◆ spi_dma_readat_dma()

static ssize_t spi_dma_readat_dma ( const struct region_device rd,
void destination,
size_t  source,
size_t  size 
)
static

◆ spi_dma_readat_mmap()

static ssize_t spi_dma_readat_mmap ( const struct region_device rd,
void b,
size_t  offset,
size_t  size 
)
static

Definition at line 43 of file spi_dma.c.

References container_of, mdev, memcpy(), offset, and rdev.

Referenced by continue_spi_dma_transaction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ spi_flash_get_mmap_windows()

uint32_t spi_flash_get_mmap_windows ( struct flash_mmap_window table)

◆ start_spi_dma_transaction()

Variable Documentation

◆ boot_dev

const struct mem_region_device boot_dev
static
Initial value:
= {
.base = rom_base,
.rdev = REGION_DEV_INIT(&spi_dma_rdev_ro_ops, 0, CONFIG_ROM_SIZE),
}
#define REGION_DEV_INIT(ops_, offset_, size_)
Definition: region.h:87
const struct region_device_ops spi_dma_rdev_ro_ops
Definition: spi_dma.c:224
#define rom_base
Definition: spi_dma.c:19

Definition at line 215 of file spi_dma.c.

Referenced by boot_device_ro().

◆ spi_dma_hw_mutex

struct thread_mutex spi_dma_hw_mutex
static

Definition at line 134 of file spi_dma.c.

Referenced by spi_dma_readat_dma().

◆ spi_dma_rdev_ro_ops

const struct region_device_ops spi_dma_rdev_ro_ops
Initial value:
= {
.mmap = spi_dma_mmap,
.munmap = spi_dma_munmap,
.readat = spi_dma_readat,
}
static ssize_t spi_dma_readat(const struct region_device *rd, void *b, size_t offset, size_t size)
Definition: spi_dma.c:215
static void * spi_dma_mmap(const struct region_device *rd, size_t offset, size_t size __unused)
Definition: spi_dma.c:29
static int spi_dma_munmap(const struct region_device *rd __unused, void *mapping __unused)
Definition: spi_dma.c:38

Definition at line 215 of file spi_dma.c.