File: [local] / funnyos / dev / sdmmc / sdmmc_bus.c (download)
Revision 1.1, Tue Dec 25 14:08:10 2007 UTC (16 years, 9 months ago) by nbrk
Branch: MAIN
CVS Tags: HEAD
introduce sdmmc bus abstraction level.
idea is following:
- device 'sdmmc' will use struct sdmmc_bus_handle on parent's dv_aux.
- device 'sdmmc' will provide devctl() entry to effectifely control SD/MMC card from other devices/tasks.
Still more work to be done.
|
/*
* $Id: sdmmc_bus.c,v 1.1 2007/12/25 14:08:10 nbrk Exp $
*/
#include <sys/types.h>
#include <dev/sdmmc/sdmmcvar.h>
uint8_t
sdmmc_init(void *dd)
{
struct sdmmc_bus_handle *ddp = (struct sdmmc_bus_handle *)dd;
ddp->sb_init(ddp->sb_dd);
}
uint8_t
sdmmc_send_command(void *dd, uint8_t cmd, uint32_t arg, uint8_t crc)
{
struct sdmmc_bus_handle *ddp = (struct sdmmc_bus_handle *)dd;
ddp->sb_send_command(ddp->sb_dd, cmd, arg, crc);
}
uint8_t
sdmmc_set_block_size(void *dd, uint16_t size)
{
struct sdmmc_bus_handle *ddp = (struct sdmmc_bus_handle *)dd;
ddp->sb_set_block_size(ddp->sb_dd, size);
}
uint8_t
sdmmc_read_block(void *dd, uint32_t addr, void *buff)
{
struct sdmmc_bus_handle *ddp = (struct sdmmc_bus_handle *)dd;
ddp->sb_read_block(ddp->sb_dd, addr, buff);
}
uint8_t
sdmmc_write_block(void *dd, uint32_t addr, void *data)
{
struct sdmmc_bus_handle *ddp = (struct sdmmc_bus_handle *)dd;
ddp->sb_write_block(ddp->sb_dd, addr, data);
}
struct sdmmc_cmdframe
sdmmc_command(uint8_t cmd, uint32_t arg, uint8_t crc)
{
/*
* Construct command frame and return it.
*/
struct sdmmc_cmdframe cmdframe;
cmdframe.sc_cmd = CMDFRAME_CMD(cmd);
cmdframe.sc_arg = arg;
cmdframe.sc_crc = cmd != 0 ? CMDFRAME_CRC(crc) : crc;
return(cmdframe);
}