software: Update to new sdcard core name.
This commit is contained in:
parent
0152e7de8e
commit
6693a723d1
|
@ -16,10 +16,10 @@
|
||||||
* Detect SDcard
|
* Detect SDcard
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifdef CSR_SDPHY_BASE
|
#ifdef CSR_SDCARD_PHY_BASE
|
||||||
static void sdcard_detect_handler(int nb_params, char **params)
|
static void sdcard_detect_handler(int nb_params, char **params)
|
||||||
{
|
{
|
||||||
uint8_t cd = sdphy_card_detect_read();
|
uint8_t cd = sdcard_phy_card_detect_read();
|
||||||
printf("SDCard %sinserted.\n", cd ? "not " : "");
|
printf("SDCard %sinserted.\n", cd ? "not " : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ define_command(sdcard_detect, sdcard_detect_handler, "Detect SDCard", LITESDCARD
|
||||||
* Initialize SDcard
|
* Initialize SDcard
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifdef CSR_SDCORE_BASE
|
#ifdef CSR_SDCARD_CORE_BASE
|
||||||
static void sdcard_init_handler(int nb_params, char **params)
|
static void sdcard_init_handler(int nb_params, char **params)
|
||||||
{
|
{
|
||||||
printf("Initialize SDCard... ");
|
printf("Initialize SDCard... ");
|
||||||
|
@ -51,7 +51,7 @@ define_command(sdcard_init, sdcard_init_handler, "Initialize SDCard", LITESDCARD
|
||||||
* Set SDcard clock frequency
|
* Set SDcard clock frequency
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifdef CSR_SDCORE_BASE
|
#ifdef CSR_SDCARD_CORE_BASE
|
||||||
static void sdcard_freq_handler(int nb_params, char **params)
|
static void sdcard_freq_handler(int nb_params, char **params)
|
||||||
{
|
{
|
||||||
unsigned int freq;
|
unsigned int freq;
|
||||||
|
@ -79,7 +79,7 @@ define_command(sdcard_freq, sdcard_freq_handler, "Set SDCard clock freq", LITESD
|
||||||
* Perform SDcard block read
|
* Perform SDcard block read
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifdef CSR_SDBLOCK2MEM_BASE
|
#ifdef CSR_SDCARD_BLOCK2MEM_BASE
|
||||||
static void sdcard_read_handler(int nb_params, char **params)
|
static void sdcard_read_handler(int nb_params, char **params)
|
||||||
{
|
{
|
||||||
unsigned int block;
|
unsigned int block;
|
||||||
|
@ -110,7 +110,7 @@ define_command(sdcard_read, sdcard_read_handler, "Read SDCard block", LITESDCARD
|
||||||
* Perform SDcard block write
|
* Perform SDcard block write
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifdef CSR_SDMEM2BLOCK_BASE
|
#ifdef CSR_SDCARD_MEM2BLOCK_BASE
|
||||||
static void sdcard_write_handler(int nb_params, char **params)
|
static void sdcard_write_handler(int nb_params, char **params)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
#include <libfatfs/diskio.h>
|
#include <libfatfs/diskio.h>
|
||||||
#include "sdcard.h"
|
#include "sdcard.h"
|
||||||
|
|
||||||
#ifdef CSR_SDCORE_BASE
|
#ifdef CSR_SDCARD_CORE_BASE
|
||||||
|
|
||||||
//#define SDCARD_DEBUG
|
//#define SDCARD_DEBUG
|
||||||
//#define SDCARD_CMD23_SUPPORT /* SET_BLOCK_COUNT */
|
//#define SDCARD_CMD23_SUPPORT /* SET_BLOCK_COUNT */
|
||||||
|
@ -44,14 +44,14 @@ int sdcard_wait_cmd_done(void) {
|
||||||
printf("cmdevt: wait for event & 0x1\n");
|
printf("cmdevt: wait for event & 0x1\n");
|
||||||
#endif
|
#endif
|
||||||
for (;;) {
|
for (;;) {
|
||||||
event = sdcore_cmd_event_read();
|
event = sdcard_core_cmd_event_read();
|
||||||
busy_wait_us(10);
|
busy_wait_us(10);
|
||||||
if (event & 0x1)
|
if (event & 0x1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef SDCARD_DEBUG
|
#ifdef SDCARD_DEBUG
|
||||||
printf("cmdevt: %08x\n", event);
|
printf("cmdevt: %08x\n", event);
|
||||||
csr_rd_buf_uint32(CSR_SDCORE_CMD_RESPONSE_ADDR,
|
csr_rd_buf_uint32(CSR_SDCARD_CORE_CMD_RESPONSE_ADDR,
|
||||||
r, SD_CMD_RESPONSE_SIZE/4);
|
r, SD_CMD_RESPONSE_SIZE/4);
|
||||||
printf("%08x %08x %08x %08x\n", r[0], r[1], r[2], r[3]);
|
printf("%08x %08x %08x %08x\n", r[0], r[1], r[2], r[3]);
|
||||||
#endif
|
#endif
|
||||||
|
@ -68,7 +68,7 @@ int sdcard_wait_data_done(void) {
|
||||||
printf("dataevt: wait for event & 0x1\n");
|
printf("dataevt: wait for event & 0x1\n");
|
||||||
#endif
|
#endif
|
||||||
for (;;) {
|
for (;;) {
|
||||||
event = sdcore_data_event_read();
|
event = sdcard_core_data_event_read();
|
||||||
if (event & 0x1)
|
if (event & 0x1)
|
||||||
break;
|
break;
|
||||||
busy_wait_us(10);
|
busy_wait_us(10);
|
||||||
|
@ -116,7 +116,7 @@ void sdcard_set_clk_freq(unsigned long clk_freq, int show) {
|
||||||
else
|
else
|
||||||
printf("%ld KHz\n", clk_freq/1000);
|
printf("%ld KHz\n", clk_freq/1000);
|
||||||
}
|
}
|
||||||
sdphy_clocker_divider_write(divider);
|
sdcard_phy_clocker_divider_write(divider);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
|
@ -124,9 +124,9 @@ void sdcard_set_clk_freq(unsigned long clk_freq, int show) {
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
static inline int sdcard_send_command(uint32_t arg, uint8_t cmd, uint8_t rsp) {
|
static inline int sdcard_send_command(uint32_t arg, uint8_t cmd, uint8_t rsp) {
|
||||||
sdcore_cmd_argument_write(arg);
|
sdcard_core_cmd_argument_write(arg);
|
||||||
sdcore_cmd_command_write((cmd << 8) | rsp);
|
sdcard_core_cmd_command_write((cmd << 8) | rsp);
|
||||||
sdcore_cmd_send_write(1);
|
sdcard_core_cmd_send_write(1);
|
||||||
return sdcard_wait_cmd_done();
|
return sdcard_wait_cmd_done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,8 +212,8 @@ int sdcard_switch(unsigned int mode, unsigned int group, unsigned int value) {
|
||||||
#ifdef SDCARD_DEBUG
|
#ifdef SDCARD_DEBUG
|
||||||
printf("CMD6: SWITCH_FUNC\n");
|
printf("CMD6: SWITCH_FUNC\n");
|
||||||
#endif
|
#endif
|
||||||
sdcore_block_length_write(64);
|
sdcard_core_block_length_write(64);
|
||||||
sdcore_block_count_write(1);
|
sdcard_core_block_count_write(1);
|
||||||
while (sdcard_send_command(arg, 6,
|
while (sdcard_send_command(arg, 6,
|
||||||
(SDCARD_CTRL_DATA_TRANSFER_READ << 5) |
|
(SDCARD_CTRL_DATA_TRANSFER_READ << 5) |
|
||||||
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
||||||
|
@ -224,8 +224,8 @@ int sdcard_app_send_scr(void) {
|
||||||
#ifdef SDCARD_DEBUG
|
#ifdef SDCARD_DEBUG
|
||||||
printf("CMD51: APP_SEND_SCR\n");
|
printf("CMD51: APP_SEND_SCR\n");
|
||||||
#endif
|
#endif
|
||||||
sdcore_block_length_write(8);
|
sdcard_core_block_length_write(8);
|
||||||
sdcore_block_count_write(1);
|
sdcard_core_block_count_write(1);
|
||||||
while (sdcard_send_command(0, 51,
|
while (sdcard_send_command(0, 51,
|
||||||
(SDCARD_CTRL_DATA_TRANSFER_READ << 5) |
|
(SDCARD_CTRL_DATA_TRANSFER_READ << 5) |
|
||||||
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
||||||
|
@ -243,8 +243,8 @@ int sdcard_write_single_block(unsigned int blockaddr) {
|
||||||
#ifdef SDCARD_DEBUG
|
#ifdef SDCARD_DEBUG
|
||||||
printf("CMD24: WRITE_SINGLE_BLOCK\n");
|
printf("CMD24: WRITE_SINGLE_BLOCK\n");
|
||||||
#endif
|
#endif
|
||||||
sdcore_block_length_write(512);
|
sdcard_core_block_length_write(512);
|
||||||
sdcore_block_count_write(1);
|
sdcard_core_block_count_write(1);
|
||||||
while (sdcard_send_command(blockaddr, 24,
|
while (sdcard_send_command(blockaddr, 24,
|
||||||
(SDCARD_CTRL_DATA_TRANSFER_WRITE << 5) |
|
(SDCARD_CTRL_DATA_TRANSFER_WRITE << 5) |
|
||||||
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
||||||
|
@ -255,8 +255,8 @@ int sdcard_write_multiple_block(unsigned int blockaddr, unsigned int blockcnt) {
|
||||||
#ifdef SDCARD_DEBUG
|
#ifdef SDCARD_DEBUG
|
||||||
printf("CMD25: WRITE_MULTIPLE_BLOCK\n");
|
printf("CMD25: WRITE_MULTIPLE_BLOCK\n");
|
||||||
#endif
|
#endif
|
||||||
sdcore_block_length_write(512);
|
sdcard_core_block_length_write(512);
|
||||||
sdcore_block_count_write(blockcnt);
|
sdcard_core_block_count_write(blockcnt);
|
||||||
while (sdcard_send_command(blockaddr, 25,
|
while (sdcard_send_command(blockaddr, 25,
|
||||||
(SDCARD_CTRL_DATA_TRANSFER_WRITE << 5) |
|
(SDCARD_CTRL_DATA_TRANSFER_WRITE << 5) |
|
||||||
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
||||||
|
@ -267,8 +267,8 @@ int sdcard_read_single_block(unsigned int blockaddr) {
|
||||||
#ifdef SDCARD_DEBUG
|
#ifdef SDCARD_DEBUG
|
||||||
printf("CMD17: READ_SINGLE_BLOCK\n");
|
printf("CMD17: READ_SINGLE_BLOCK\n");
|
||||||
#endif
|
#endif
|
||||||
sdcore_block_length_write(512);
|
sdcard_core_block_length_write(512);
|
||||||
sdcore_block_count_write(1);
|
sdcard_core_block_count_write(1);
|
||||||
while (sdcard_send_command(blockaddr, 17,
|
while (sdcard_send_command(blockaddr, 17,
|
||||||
(SDCARD_CTRL_DATA_TRANSFER_READ << 5) |
|
(SDCARD_CTRL_DATA_TRANSFER_READ << 5) |
|
||||||
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
||||||
|
@ -279,8 +279,8 @@ int sdcard_read_multiple_block(unsigned int blockaddr, unsigned int blockcnt) {
|
||||||
#ifdef SDCARD_DEBUG
|
#ifdef SDCARD_DEBUG
|
||||||
printf("CMD18: READ_MULTIPLE_BLOCK\n");
|
printf("CMD18: READ_MULTIPLE_BLOCK\n");
|
||||||
#endif
|
#endif
|
||||||
sdcore_block_length_write(512);
|
sdcard_core_block_length_write(512);
|
||||||
sdcore_block_count_write(blockcnt);
|
sdcard_core_block_count_write(blockcnt);
|
||||||
while (sdcard_send_command(blockaddr, 18,
|
while (sdcard_send_command(blockaddr, 18,
|
||||||
(SDCARD_CTRL_DATA_TRANSFER_READ << 5) |
|
(SDCARD_CTRL_DATA_TRANSFER_READ << 5) |
|
||||||
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
SDCARD_CTRL_RESPONSE_SHORT) != SD_OK);
|
||||||
|
@ -310,7 +310,7 @@ int sdcard_set_block_count(unsigned int blockcnt) {
|
||||||
|
|
||||||
uint16_t sdcard_decode_rca(void) {
|
uint16_t sdcard_decode_rca(void) {
|
||||||
uint32_t r[SD_CMD_RESPONSE_SIZE/4];
|
uint32_t r[SD_CMD_RESPONSE_SIZE/4];
|
||||||
csr_rd_buf_uint32(CSR_SDCORE_CMD_RESPONSE_ADDR,
|
csr_rd_buf_uint32(CSR_SDCARD_CORE_CMD_RESPONSE_ADDR,
|
||||||
r, SD_CMD_RESPONSE_SIZE/4);
|
r, SD_CMD_RESPONSE_SIZE/4);
|
||||||
return (r[3] >> 16) & 0xffff;
|
return (r[3] >> 16) & 0xffff;
|
||||||
}
|
}
|
||||||
|
@ -318,7 +318,7 @@ uint16_t sdcard_decode_rca(void) {
|
||||||
#ifdef SDCARD_DEBUG
|
#ifdef SDCARD_DEBUG
|
||||||
void sdcard_decode_cid(void) {
|
void sdcard_decode_cid(void) {
|
||||||
uint32_t r[SD_CMD_RESPONSE_SIZE/4];
|
uint32_t r[SD_CMD_RESPONSE_SIZE/4];
|
||||||
csr_rd_buf_uint32(CSR_SDCORE_CMD_RESPONSE_ADDR,
|
csr_rd_buf_uint32(CSR_SDCARD_CORE_CMD_RESPONSE_ADDR,
|
||||||
r, SD_CMD_RESPONSE_SIZE/4);
|
r, SD_CMD_RESPONSE_SIZE/4);
|
||||||
printf(
|
printf(
|
||||||
"CID Register: 0x%08x%08x%08x%08x\n"
|
"CID Register: 0x%08x%08x%08x%08x\n"
|
||||||
|
@ -351,7 +351,7 @@ void sdcard_decode_cid(void) {
|
||||||
|
|
||||||
void sdcard_decode_csd(void) {
|
void sdcard_decode_csd(void) {
|
||||||
uint32_t r[SD_CMD_RESPONSE_SIZE/4];
|
uint32_t r[SD_CMD_RESPONSE_SIZE/4];
|
||||||
csr_rd_buf_uint32(CSR_SDCORE_CMD_RESPONSE_ADDR,
|
csr_rd_buf_uint32(CSR_SDCARD_CORE_CMD_RESPONSE_ADDR,
|
||||||
r, SD_CMD_RESPONSE_SIZE/4);
|
r, SD_CMD_RESPONSE_SIZE/4);
|
||||||
/* FIXME: only support CSR structure version 2.0 */
|
/* FIXME: only support CSR structure version 2.0 */
|
||||||
printf(
|
printf(
|
||||||
|
@ -385,7 +385,7 @@ int sdcard_init(void) {
|
||||||
|
|
||||||
for (timeout=1000; timeout>0; timeout--) {
|
for (timeout=1000; timeout>0; timeout--) {
|
||||||
/* Set SDCard in SPI Mode (generate 80 dummy clocks) */
|
/* Set SDCard in SPI Mode (generate 80 dummy clocks) */
|
||||||
sdphy_init_initialize_write(1);
|
sdcard_phy_init_initialize_write(1);
|
||||||
busy_wait(1);
|
busy_wait(1);
|
||||||
|
|
||||||
/* Set SDCard in Idle state */
|
/* Set SDCard in Idle state */
|
||||||
|
@ -408,7 +408,7 @@ int sdcard_init(void) {
|
||||||
for (timeout=1000; timeout>0; timeout--) {
|
for (timeout=1000; timeout>0; timeout--) {
|
||||||
sdcard_app_cmd(0);
|
sdcard_app_cmd(0);
|
||||||
if (sdcard_app_send_op_cond(1) == SD_OK) {
|
if (sdcard_app_send_op_cond(1) == SD_OK) {
|
||||||
csr_rd_buf_uint32(CSR_SDCORE_CMD_RESPONSE_ADDR,
|
csr_rd_buf_uint32(CSR_SDCARD_CORE_CMD_RESPONSE_ADDR,
|
||||||
r, SD_CMD_RESPONSE_SIZE/4);
|
r, SD_CMD_RESPONSE_SIZE/4);
|
||||||
|
|
||||||
if (r[3] & 0x80000000) /* Busy bit, set when init is complete */
|
if (r[3] & 0x80000000) /* Busy bit, set when init is complete */
|
||||||
|
@ -472,7 +472,7 @@ int sdcard_init(void) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CSR_SDBLOCK2MEM_BASE
|
#ifdef CSR_SDCARD_BLOCK2MEM_BASE
|
||||||
|
|
||||||
void sdcard_read(uint32_t block, uint32_t count, uint8_t* buf)
|
void sdcard_read(uint32_t block, uint32_t count, uint8_t* buf)
|
||||||
{
|
{
|
||||||
|
@ -484,10 +484,10 @@ void sdcard_read(uint32_t block, uint32_t count, uint8_t* buf)
|
||||||
nblocks = 1;
|
nblocks = 1;
|
||||||
#endif
|
#endif
|
||||||
/* Initialize DMA Writer */
|
/* Initialize DMA Writer */
|
||||||
sdblock2mem_dma_enable_write(0);
|
sdcard_block2mem_dma_enable_write(0);
|
||||||
sdblock2mem_dma_base_write((uint64_t)(uintptr_t) buf);
|
sdcard_block2mem_dma_base_write((uint64_t)(uintptr_t) buf);
|
||||||
sdblock2mem_dma_length_write(512*nblocks);
|
sdcard_block2mem_dma_length_write(512*nblocks);
|
||||||
sdblock2mem_dma_enable_write(1);
|
sdcard_block2mem_dma_enable_write(1);
|
||||||
|
|
||||||
/* Read Block(s) from SDCard */
|
/* Read Block(s) from SDCard */
|
||||||
#ifdef SDCARD_CMD23_SUPPORT
|
#ifdef SDCARD_CMD23_SUPPORT
|
||||||
|
@ -499,7 +499,7 @@ void sdcard_read(uint32_t block, uint32_t count, uint8_t* buf)
|
||||||
sdcard_read_single_block(block);
|
sdcard_read_single_block(block);
|
||||||
|
|
||||||
/* Wait for DMA Writer to complete */
|
/* Wait for DMA Writer to complete */
|
||||||
while ((sdblock2mem_dma_done_read() & 0x1) == 0);
|
while ((sdcard_block2mem_dma_done_read() & 0x1) == 0);
|
||||||
|
|
||||||
/* Stop transmission (Only for multiple block reads) */
|
/* Stop transmission (Only for multiple block reads) */
|
||||||
if (nblocks > 1)
|
if (nblocks > 1)
|
||||||
|
@ -520,7 +520,7 @@ void sdcard_read(uint32_t block, uint32_t count, uint8_t* buf)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CSR_SDMEM2BLOCK_BASE
|
#ifdef CSR_SDCARD_MEM2BLOCK_BASE
|
||||||
|
|
||||||
void sdcard_write(uint32_t block, uint32_t count, uint8_t* buf)
|
void sdcard_write(uint32_t block, uint32_t count, uint8_t* buf)
|
||||||
{
|
{
|
||||||
|
@ -532,10 +532,10 @@ void sdcard_write(uint32_t block, uint32_t count, uint8_t* buf)
|
||||||
nblocks = 1;
|
nblocks = 1;
|
||||||
#endif
|
#endif
|
||||||
/* Initialize DMA Reader */
|
/* Initialize DMA Reader */
|
||||||
sdmem2block_dma_enable_write(0);
|
sdcard_mem2block_dma_enable_write(0);
|
||||||
sdmem2block_dma_base_write((uint64_t)(uintptr_t) buf);
|
sdcard_mem2block_dma_base_write((uint64_t)(uintptr_t) buf);
|
||||||
sdmem2block_dma_length_write(512*nblocks);
|
sdcard_mem2block_dma_length_write(512*nblocks);
|
||||||
sdmem2block_dma_enable_write(1);
|
sdcard_mem2block_dma_enable_write(1);
|
||||||
|
|
||||||
/* Write Block(s) to SDCard */
|
/* Write Block(s) to SDCard */
|
||||||
#ifdef SDCARD_CMD23_SUPPORT
|
#ifdef SDCARD_CMD23_SUPPORT
|
||||||
|
@ -551,7 +551,7 @@ void sdcard_write(uint32_t block, uint32_t count, uint8_t* buf)
|
||||||
sdcard_stop_transmission();
|
sdcard_stop_transmission();
|
||||||
|
|
||||||
/* Wait for DMA Reader to complete */
|
/* Wait for DMA Reader to complete */
|
||||||
while ((sdmem2block_dma_done_read() & 0x1) == 0);
|
while ((sdcard_mem2block_dma_done_read() & 0x1) == 0);
|
||||||
|
|
||||||
/* Update Block/Buffer/Count */
|
/* Update Block/Buffer/Count */
|
||||||
block += nblocks;
|
block += nblocks;
|
||||||
|
@ -594,4 +594,4 @@ void fatfs_set_ops_sdcard(void) {
|
||||||
FfDiskOps = &SdCardDiskOps;
|
FfDiskOps = &SdCardDiskOps;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CSR_SDCORE_BASE */
|
#endif /* CSR_SDCARD_CORE_BASE */
|
||||||
|
|
|
@ -14,7 +14,7 @@ extern "C" {
|
||||||
#define CLKGEN_STATUS_PROGDONE 0x2
|
#define CLKGEN_STATUS_PROGDONE 0x2
|
||||||
#define CLKGEN_STATUS_LOCKED 0x4
|
#define CLKGEN_STATUS_LOCKED 0x4
|
||||||
|
|
||||||
#ifdef CSR_SDCORE_BASE
|
#ifdef CSR_SDCARD_CORE_BASE
|
||||||
|
|
||||||
#define SD_CMD_RESPONSE_SIZE 16
|
#define SD_CMD_RESPONSE_SIZE 16
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue