00001
00002
00003
00004
00005
00006
00007
00008
00009 #pragma once
00010 #include <guiddef.h>
00011
00012
00013
00014
00015
00016
00017 DEFINE_GUID(GUID_DEVINTERFACE_SDIOEMB_UIF,
00018 0xd9b9ce15, 0x461c, 0x4d5c, 0x9a, 0x26, 0xb2, 0xeb, 0xf5, 0x7e, 0x3a, 0x77);
00019
00020 enum sdioemb_uif_cmd_type {
00021 SDIOEMB_UIF_CMD52_READ, SDIOEMB_UIF_CMD52_WRITE,
00022 SDIOEMB_UIF_CMD53_READ, SDIOEMB_UIF_CMD53_WRITE,
00023 };
00024
00025 struct sdioemb_uif_cmd {
00026 enum sdioemb_uif_cmd_type type;
00027 int function;
00028 UINT32 address;
00029 UINT8 *data;
00030 size_t len;
00031 UINT16 block_size;
00032 };
00033
00034 struct sdioemb_uif_set_bus_width {
00035 UINT8 function;
00036 UINT8 bus_width;
00037 };
00038
00039 struct sdioemb_uif_get_func_info {
00040 UINT8 function;
00041 };
00042
00043 struct sdioemb_uif_set_bus_freq {
00044 INT32 bus_freq;
00045 };
00046
00047 struct sdioemb_uif_set_block_size {
00048 UINT8 function;
00049 UINT16 block_size;
00050 };
00051
00052 struct sdioemb_uif_input {
00053 union {
00054 struct sdioemb_uif_get_func_info get_func_info;
00055 struct sdioemb_uif_cmd cmd;
00056 struct sdioemb_uif_set_bus_width set_bus_width;
00057 struct sdioemb_uif_set_bus_freq set_bus_freq;
00058 struct sdioemb_uif_set_block_size set_block_size;
00059 };
00060 };
00061
00062 struct sdioemb_uif_card_info {
00063 UINT8 num_functions;
00064 };
00065
00066 struct sdioemb_uif_func_info {
00067 UINT16 manf_id;
00068 UINT16 card_id;
00069 UINT8 std_if;
00070 UINT16 max_block_size;
00071 UINT16 block_size;
00072 };
00073
00074 struct sdioemb_uif_output {
00075 union {
00076 struct sdioemb_uif_card_info card_info;
00077 struct sdioemb_uif_func_info func_info;
00078 };
00079 };
00080
00081 #define SDIOEMB_UIF_IOC_GET_CARD_INFO CTL_CODE(0x8000, 0x800, METHOD_BUFFERED, FILE_READ_DATA)
00082 #define SDIOEMB_UIF_IOC_GET_FUNC_INFO CTL_CODE(0x8000, 0x801, METHOD_BUFFERED, FILE_READ_DATA)
00083 #define SDIOEMB_UIF_IOC_CMD CTL_CODE(0x8000, 0x802, METHOD_BUFFERED, FILE_WRITE_DATA)
00084 #define SDIOEMB_UIF_IOC_WAITFORINT CTL_CODE(0x8000, 0x803, METHOD_BUFFERED, FILE_WRITE_DATA)
00085 #define SDIOEMB_UIF_IOC_REINSERT CTL_CODE(0x8000, 0x804, METHOD_BUFFERED, FILE_WRITE_DATA)
00086 #define SDIOEMB_UIF_IOC_SET_BUS_WIDTH CTL_CODE(0x8000, 0x805, METHOD_BUFFERED, FILE_WRITE_DATA)
00087 #define SDIOEMB_UIF_IOC_SET_BUS_FREQ CTL_CODE(0x8000, 0x806, METHOD_BUFFERED, FILE_WRITE_DATA)
00088 #define SDIOEMB_UIF_IOC_SET_BLOCK_SIZE CTL_CODE(0x8000, 0x807, METHOD_BUFFERED, FILE_WRITE_DATA)