coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mmc.c File Reference
#include <inttypes.h>
#include <string.h>
#include <console/console.h>
#include <commonlib/sd_mmc_ctrlr.h>
#include <device/mmio.h>
#include <timer.h>
#include "mmc.h"
Include dependency graph for mmc.c:

Go to the source code of this file.

Macros

#define AM335X_TIMEOUT_MSEC   1000
 
#define SYSCONFIG_SOFTRESET   (0x1 << 1)
 
#define SYSSTATUS_RESETDONE   (0x01 << 0)
 
#define CON_INIT   (0x1 << 1)
 
#define CMD_INDEX(x)   (x << 24)
 
#define CMD_RSP_TYPE_NO_RESP   (0x0 << 16)
 
#define CMD_RSP_TYPE_136B   (0x1 << 16)
 
#define CMD_RSP_TYPE_48B   (0x2 << 16)
 
#define CMD_RSP_TYPE_48B_BUSY   (0x3 << 16)
 
#define CMD_DP_DATA   (0x1 << 21)
 
#define CMD_DDIR_READ   (0x1 << 4)
 
#define HCTL_DTW_1BIT   (0x0 << 1)
 
#define HCTL_SDBP   (0x1 << 8)
 
#define HCTL_SDVS_VS30   (0x6 << 9)
 
#define SYSCTL_ICE   (0x1 << 0)
 
#define SYSCTL_ICS   (0x1 << 1)
 
#define SYSCTL_CEN   (0x1 << 2)
 
#define SYSCTL_DTO_15   (0xE << 16)
 
#define STAT_ERRI   (0x01 << 15)
 
#define STAT_ERROR_MASK   (0xff << 15 | 0x3 << 24 | 0x03 << 28)
 
#define STAT_CC   (0x1 << 0)
 
#define IE_CC   (0x1 << 0)
 
#define IE_TC   (0x1 << 1)
 
#define IE_BRR   (0x1 << 5)
 
#define IE_ERRORS   (0xff << 15 | 0x3 << 24 | 0x03 << 28)
 
#define CAPA_VS18   (0x01 << 26)
 
#define CAPA_VS30   (0x01 << 25)
 

Functions

static int am335x_wait_for_reg (const void *addr, uint32_t mask, unsigned long timeout)
 
static int am335x_mmc_init (struct am335x_mmc *mmc)
 
static int am335x_send_cmd (struct sd_mmc_ctrlr *ctrlr, struct mmc_command *cmd, struct mmc_data *data)
 
static void set_ios (struct sd_mmc_ctrlr *ctrlr)
 
int am335x_mmc_init_storage (struct am335x_mmc_host *mmc_host)
 

Macro Definition Documentation

◆ AM335X_TIMEOUT_MSEC

#define AM335X_TIMEOUT_MSEC   1000

Definition at line 11 of file mmc.c.

◆ CAPA_VS18

#define CAPA_VS18   (0x01 << 26)

Definition at line 45 of file mmc.c.

◆ CAPA_VS30

#define CAPA_VS30   (0x01 << 25)

Definition at line 46 of file mmc.c.

◆ CMD_DDIR_READ

#define CMD_DDIR_READ   (0x1 << 4)

Definition at line 25 of file mmc.c.

◆ CMD_DP_DATA

#define CMD_DP_DATA   (0x1 << 21)

Definition at line 24 of file mmc.c.

◆ CMD_INDEX

#define CMD_INDEX (   x)    (x << 24)

Definition at line 19 of file mmc.c.

◆ CMD_RSP_TYPE_136B

#define CMD_RSP_TYPE_136B   (0x1 << 16)

Definition at line 21 of file mmc.c.

◆ CMD_RSP_TYPE_48B

#define CMD_RSP_TYPE_48B   (0x2 << 16)

Definition at line 22 of file mmc.c.

◆ CMD_RSP_TYPE_48B_BUSY

#define CMD_RSP_TYPE_48B_BUSY   (0x3 << 16)

Definition at line 23 of file mmc.c.

◆ CMD_RSP_TYPE_NO_RESP

#define CMD_RSP_TYPE_NO_RESP   (0x0 << 16)

Definition at line 20 of file mmc.c.

◆ CON_INIT

#define CON_INIT   (0x1 << 1)

Definition at line 17 of file mmc.c.

◆ HCTL_DTW_1BIT

#define HCTL_DTW_1BIT   (0x0 << 1)

Definition at line 27 of file mmc.c.

◆ HCTL_SDBP

#define HCTL_SDBP   (0x1 << 8)

Definition at line 28 of file mmc.c.

◆ HCTL_SDVS_VS30

#define HCTL_SDVS_VS30   (0x6 << 9)

Definition at line 29 of file mmc.c.

◆ IE_BRR

#define IE_BRR   (0x1 << 5)

Definition at line 42 of file mmc.c.

◆ IE_CC

#define IE_CC   (0x1 << 0)

Definition at line 40 of file mmc.c.

◆ IE_ERRORS

#define IE_ERRORS   (0xff << 15 | 0x3 << 24 | 0x03 << 28)

Definition at line 43 of file mmc.c.

◆ IE_TC

#define IE_TC   (0x1 << 1)

Definition at line 41 of file mmc.c.

◆ STAT_CC

#define STAT_CC   (0x1 << 0)

Definition at line 38 of file mmc.c.

◆ STAT_ERRI

#define STAT_ERRI   (0x01 << 15)

Definition at line 36 of file mmc.c.

◆ STAT_ERROR_MASK

#define STAT_ERROR_MASK   (0xff << 15 | 0x3 << 24 | 0x03 << 28)

Definition at line 37 of file mmc.c.

◆ SYSCONFIG_SOFTRESET

#define SYSCONFIG_SOFTRESET   (0x1 << 1)

Definition at line 13 of file mmc.c.

◆ SYSCTL_CEN

#define SYSCTL_CEN   (0x1 << 2)

Definition at line 33 of file mmc.c.

◆ SYSCTL_DTO_15

#define SYSCTL_DTO_15   (0xE << 16)

Definition at line 34 of file mmc.c.

◆ SYSCTL_ICE

#define SYSCTL_ICE   (0x1 << 0)

Definition at line 31 of file mmc.c.

◆ SYSCTL_ICS

#define SYSCTL_ICS   (0x1 << 1)

Definition at line 32 of file mmc.c.

◆ SYSSTATUS_RESETDONE

#define SYSSTATUS_RESETDONE   (0x01 << 0)

Definition at line 15 of file mmc.c.

Function Documentation

◆ am335x_mmc_init()

◆ am335x_mmc_init_storage()

int am335x_mmc_init_storage ( struct am335x_mmc_host mmc_host)

◆ am335x_send_cmd()

◆ am335x_wait_for_reg()

static int am335x_wait_for_reg ( const void addr,
uint32_t  mask,
unsigned long  timeout 
)
static

Definition at line 48 of file mmc.c.

References addr, BIOS_DEBUG, mask, mono_time_add_msecs(), mono_time_after(), printk, read32(), and timer_monotonic_get().

Referenced by am335x_mmc_init(), am335x_send_cmd(), and set_ios().

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

◆ set_ios()

static void set_ios ( struct sd_mmc_ctrlr ctrlr)
static