1b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/**************************************************************************** 2b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare **************************************************************************** 3b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare *** 4b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare *** This header was automatically generated from a Linux kernel header 5b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare *** of the same name, to make information necessary for userspace to 6b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare *** call into the kernel available to libc. It contains only constants, 7b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare *** structures, and macros generated from the original header, and thus, 8b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare *** contains no copyrightable information. 9b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare *** 10b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare **************************************************************************** 11b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ****************************************************************************/ 12b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#ifndef MMC_H 13b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_H 14b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 15b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#include <linux/list.h> 16b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#include <linux/interrupt.h> 17b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#include <linux/device.h> 18b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 19b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct request; 20b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mmc_data; 21b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mmc_request; 22b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 23b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mmc_command { 24b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare u32 opcode; 25b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare u32 arg; 26b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare u32 resp[4]; 27b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int flags; 28b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_PRESENT (1 << 0) 29b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_136 (1 << 1) 30b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_CRC (1 << 2) 31b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_BUSY (1 << 3) 32b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_OPCODE (1 << 4) 33b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_CMD_MASK (3 << 5) 34b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_CMD_AC (0 << 5) 35b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_CMD_ADTC (1 << 5) 36b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_CMD_BC (2 << 5) 37b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_CMD_BCR (3 << 5) 38b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 39b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_NONE (0) 40b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_R1 (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE) 41b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_R1B (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY) 42b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_R2 (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC) 43b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_R3 (MMC_RSP_PRESENT) 44b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_RSP_R6 (MMC_RSP_PRESENT|MMC_RSP_CRC) 45b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 46b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define mmc_resp_type(cmd) ((cmd)->flags & (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC|MMC_RSP_BUSY|MMC_RSP_OPCODE)) 47b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 48b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define mmc_cmd_type(cmd) ((cmd)->flags & MMC_CMD_MASK) 49b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 50b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int retries; 51b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int error; 52b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 53b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_ERR_NONE 0 54b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_ERR_TIMEOUT 1 55b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_ERR_BADCRC 2 56b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_ERR_FIFO 3 57b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_ERR_FAILED 4 58b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_ERR_INVALID 5 59b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 60b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct mmc_data *data; 61b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct mmc_request *mrq; 62b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare}; 63b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 64b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mmc_data { 65b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int timeout_ns; 66b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int timeout_clks; 67b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int blksz_bits; 68b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int blksz; 69b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int blocks; 70b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int error; 71b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int flags; 72b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 73b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_DATA_WRITE (1 << 8) 74b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_DATA_READ (1 << 9) 75b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_DATA_STREAM (1 << 10) 76b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MMC_DATA_MULTI (1 << 11) 77b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 78b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int bytes_xfered; 79b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 80b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct mmc_command *stop; 81b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct mmc_request *mrq; 82b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 83b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned int sg_len; 84b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct scatterlist *sg; 85b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare}; 86b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 87b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mmc_request { 88b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct mmc_command *cmd; 89b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct mmc_data *data; 90b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct mmc_command *stop; 91b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 92b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void *done_data; 93b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*done)(struct mmc_request *); 94b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare}; 95b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 96b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mmc_host; 97b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mmc_card; 98b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 99b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#endif 100