• David Vrabel's avatar
    sdio: extend sdio_readsb() and friends to handle any length of buffer · eb659468
    David Vrabel authored
    Extend sdio_readsb(), sdio_writesb(), sdio_memcpy_fromio(), and
    sdio_memcpy_toio() to handle any length of buffer by splitting the transfer
    into several IO_RW_EXTENDED commands. Typically, a transfer would be split
    into a single block mode transfer followed by a byte mode transfer for the
    remainder but we also handle lack of block mode support and the block size
    being greater than 512 (the maximum byte mode transfer size).
    
    host->max_seg_size <= host->max_req_size so there's no need to check both
    when determining the maximum data size for a single command.
    Signed-off-by: default avatarDavid Vrabel <david.vrabel@csr.com>
    Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
    eb659468
sdio_ops.h 708 Bytes
/*
 *  linux/drivers/mmc/sdio_ops.c
 *
 *  Copyright 2006-2007 Pierre Ossman
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or (at
 * your option) any later version.
 */

#ifndef _MMC_SDIO_OPS_H
#define _MMC_SDIO_OPS_H

int mmc_send_io_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr);
int mmc_io_rw_direct(struct mmc_card *card, int write, unsigned fn,
	unsigned addr, u8 in, u8* out);
int mmc_io_rw_extended(struct mmc_card *card, int write, unsigned fn,
	unsigned addr, int incr_addr, u8 *buf, unsigned blocks, unsigned blksz);

#endif