diff options
Diffstat (limited to 'include/linux/mmc/ioctl.h')
| -rw-r--r-- | include/linux/mmc/ioctl.h | 54 | 
1 files changed, 54 insertions, 0 deletions
diff --git a/include/linux/mmc/ioctl.h b/include/linux/mmc/ioctl.h new file mode 100644 index 00000000000..5baf2983a12 --- /dev/null +++ b/include/linux/mmc/ioctl.h @@ -0,0 +1,54 @@ +#ifndef LINUX_MMC_IOCTL_H +#define LINUX_MMC_IOCTL_H +struct mmc_ioc_cmd { +	/* Implies direction of data.  true = write, false = read */ +	int write_flag; + +	/* Application-specific command.  true = precede with CMD55 */ +	int is_acmd; + +	__u32 opcode; +	__u32 arg; +	__u32 response[4];  /* CMD response */ +	unsigned int flags; +	unsigned int blksz; +	unsigned int blocks; + +	/* +	 * Sleep at least postsleep_min_us useconds, and at most +	 * postsleep_max_us useconds *after* issuing command.  Needed for +	 * some read commands for which cards have no other way of indicating +	 * they're ready for the next command (i.e. there is no equivalent of +	 * a "busy" indicator for read operations). +	 */ +	unsigned int postsleep_min_us; +	unsigned int postsleep_max_us; + +	/* +	 * Override driver-computed timeouts.  Note the difference in units! +	 */ +	unsigned int data_timeout_ns; +	unsigned int cmd_timeout_ms; + +	/* +	 * For 64-bit machines, the next member, ``__u64 data_ptr``, wants to +	 * be 8-byte aligned.  Make sure this struct is the same size when +	 * built for 32-bit. +	 */ +	__u32 __pad; + +	/* DAT buffer */ +	__u64 data_ptr; +}; +#define mmc_ioc_cmd_set_data(ic, ptr) ic.data_ptr = (__u64)(unsigned long) ptr + +#define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd) + +/* + * Since this ioctl is only meant to enhance (and not replace) normal access + * to the mmc bus device, an upper data transfer limit of MMC_IOC_MAX_BYTES + * is enforced per ioctl call.  For larger data transfers, use the normal + * block device operations. + */ +#define MMC_IOC_MAX_BYTES  (512L * 256) +#endif  /* LINUX_MMC_IOCTL_H */  |