1 /*- 2 * Copyright (c) 2006 M. Warner Losh. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 15 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 17 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 18 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * 24 * This software is derived from software provide by Kwikbyte who specifically 25 * disclaimed copyright on the code. 26 * 27 * $FreeBSD$ 28 */ 29 30 #ifndef __SD_CARD_H 31 #define __SD_CARD_H 32 33 /* MCI_read() is the original read function, taking a byte offset and byte 34 * count. It is preserved to support existing customized boot code that still 35 * refers to it; it will work fine even on SDHC cards as long as the kernel and 36 * the metadata for locating it all exist within the first 4GB of the card. 37 * 38 * MCI_readblocks() is the new read function, taking offset and length in terms 39 * of block counts (where the SD spec defines a block as 512 bytes), allowing 40 * the kernel and filesystem metadata to be located anywhere on an SDHC card. 41 * 42 * Returns 0 on success, non-zero on failure. 43 */ 44 45 int MCI_read (char* dest, unsigned bytenum, unsigned length); 46 int MCI_readblocks (char* dest, unsigned blknum, unsigned blkcount); 47 48 /* sdcard_init() - get things set up to read from an SD or SDHC card. 49 * 50 * Returns 0 on failure, non-zero on success. 51 */ 52 53 int sdcard_init(void); 54 55 /* By default sdcard_init() sets things up for a 1-wire interface to the 56 * SD card. Calling sdcard_4wire(true) after sdcard_init() allows customized 57 * boot code to change to 4-bit transfers when the hardware supports it. 58 * 59 * Returns 0 on failure, non-zero on success. 60 */ 61 int sdcard_use4wire(int use4wire); 62 63 #endif 64 65