[BACK]Return to sdmmc_bus.c CVS log [TXT][DIR] Up to [local] / funnyos / dev / sdmmc

File: [local] / funnyos / dev / sdmmc / sdmmc_bus.c (download)

Revision 1.1, Tue Dec 25 14:08:10 2007 UTC (16 years, 4 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);
}