diff options
-rw-r--r-- | drivers/memstick/core/memstick.c | 4 | ||||
-rw-r--r-- | drivers/memstick/core/mspro_block.c | 16 | ||||
-rw-r--r-- | drivers/memstick/host/tifm_ms.c | 19 | ||||
-rw-r--r-- | include/linux/memstick.h | 130 |
4 files changed, 105 insertions, 64 deletions
diff --git a/drivers/memstick/core/memstick.c b/drivers/memstick/core/memstick.c index bba467fe4bce..5e0e960df456 100644 --- a/drivers/memstick/core/memstick.c +++ b/drivers/memstick/core/memstick.c | |||
@@ -271,7 +271,7 @@ void memstick_init_req_sg(struct memstick_request *mrq, unsigned char tpc, | |||
271 | mrq->data_dir = READ; | 271 | mrq->data_dir = READ; |
272 | 272 | ||
273 | mrq->sg = *sg; | 273 | mrq->sg = *sg; |
274 | mrq->io_type = MEMSTICK_IO_SG; | 274 | mrq->long_data = 1; |
275 | 275 | ||
276 | if (tpc == MS_TPC_SET_CMD || tpc == MS_TPC_EX_SET_CMD) | 276 | if (tpc == MS_TPC_SET_CMD || tpc == MS_TPC_EX_SET_CMD) |
277 | mrq->need_card_int = 1; | 277 | mrq->need_card_int = 1; |
@@ -306,7 +306,7 @@ void memstick_init_req(struct memstick_request *mrq, unsigned char tpc, | |||
306 | if (mrq->data_dir == WRITE) | 306 | if (mrq->data_dir == WRITE) |
307 | memcpy(mrq->data, buf, mrq->data_len); | 307 | memcpy(mrq->data, buf, mrq->data_len); |
308 | 308 | ||
309 | mrq->io_type = MEMSTICK_IO_VAL; | 309 | mrq->long_data = 0; |
310 | 310 | ||
311 | if (tpc == MS_TPC_SET_CMD || tpc == MS_TPC_EX_SET_CMD) | 311 | if (tpc == MS_TPC_SET_CMD || tpc == MS_TPC_EX_SET_CMD) |
312 | mrq->need_card_int = 1; | 312 | mrq->need_card_int = 1; |
diff --git a/drivers/memstick/core/mspro_block.c b/drivers/memstick/core/mspro_block.c index 423ad8cf4bb9..214211c8ac9a 100644 --- a/drivers/memstick/core/mspro_block.c +++ b/drivers/memstick/core/mspro_block.c | |||
@@ -629,7 +629,7 @@ static void mspro_block_process_request(struct memstick_dev *card, | |||
629 | param.system = msb->system; | 629 | param.system = msb->system; |
630 | param.data_count = cpu_to_be16(page_count); | 630 | param.data_count = cpu_to_be16(page_count); |
631 | param.data_address = cpu_to_be32((uint32_t)t_sec); | 631 | param.data_address = cpu_to_be32((uint32_t)t_sec); |
632 | param.cmd_param = 0; | 632 | param.tpc_param = 0; |
633 | 633 | ||
634 | msb->data_dir = rq_data_dir(req); | 634 | msb->data_dir = rq_data_dir(req); |
635 | msb->transfer_cmd = msb->data_dir == READ | 635 | msb->transfer_cmd = msb->data_dir == READ |
@@ -761,7 +761,7 @@ static int mspro_block_switch_to_parallel(struct memstick_dev *card) | |||
761 | .system = 0, | 761 | .system = 0, |
762 | .data_count = 0, | 762 | .data_count = 0, |
763 | .data_address = 0, | 763 | .data_address = 0, |
764 | .cmd_param = 0 | 764 | .tpc_param = 0 |
765 | }; | 765 | }; |
766 | 766 | ||
767 | card->next_request = h_mspro_block_req_init; | 767 | card->next_request = h_mspro_block_req_init; |
@@ -773,8 +773,8 @@ static int mspro_block_switch_to_parallel(struct memstick_dev *card) | |||
773 | if (card->current_mrq.error) | 773 | if (card->current_mrq.error) |
774 | return card->current_mrq.error; | 774 | return card->current_mrq.error; |
775 | 775 | ||
776 | msb->system = 0; | 776 | msb->system = MEMSTICK_SYS_PAR4; |
777 | host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_PARALLEL); | 777 | host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_PAR4); |
778 | 778 | ||
779 | card->next_request = h_mspro_block_req_init; | 779 | card->next_request = h_mspro_block_req_init; |
780 | msb->mrq_handler = h_mspro_block_default; | 780 | msb->mrq_handler = h_mspro_block_default; |
@@ -802,7 +802,7 @@ static int mspro_block_read_attributes(struct memstick_dev *card) | |||
802 | .system = msb->system, | 802 | .system = msb->system, |
803 | .data_count = cpu_to_be16(1), | 803 | .data_count = cpu_to_be16(1), |
804 | .data_address = 0, | 804 | .data_address = 0, |
805 | .cmd_param = 0 | 805 | .tpc_param = 0 |
806 | }; | 806 | }; |
807 | struct mspro_attribute *attr = NULL; | 807 | struct mspro_attribute *attr = NULL; |
808 | struct mspro_sys_attr *s_attr = NULL; | 808 | struct mspro_sys_attr *s_attr = NULL; |
@@ -922,7 +922,7 @@ static int mspro_block_read_attributes(struct memstick_dev *card) | |||
922 | param.system = msb->system; | 922 | param.system = msb->system; |
923 | param.data_count = cpu_to_be16((rc / msb->page_size) + 1); | 923 | param.data_count = cpu_to_be16((rc / msb->page_size) + 1); |
924 | param.data_address = cpu_to_be32(addr / msb->page_size); | 924 | param.data_address = cpu_to_be32(addr / msb->page_size); |
925 | param.cmd_param = 0; | 925 | param.tpc_param = 0; |
926 | 926 | ||
927 | sg_init_one(&msb->req_sg[0], buffer, | 927 | sg_init_one(&msb->req_sg[0], buffer, |
928 | be16_to_cpu(param.data_count) * msb->page_size); | 928 | be16_to_cpu(param.data_count) * msb->page_size); |
@@ -964,7 +964,7 @@ static int mspro_block_init_card(struct memstick_dev *card) | |||
964 | struct memstick_host *host = card->host; | 964 | struct memstick_host *host = card->host; |
965 | int rc = 0; | 965 | int rc = 0; |
966 | 966 | ||
967 | msb->system = 0x80; | 967 | msb->system = MEMSTICK_SYS_SERIAL; |
968 | card->reg_addr.r_offset = offsetof(struct mspro_register, status); | 968 | card->reg_addr.r_offset = offsetof(struct mspro_register, status); |
969 | card->reg_addr.r_length = sizeof(struct ms_status_register); | 969 | card->reg_addr.r_length = sizeof(struct ms_status_register); |
970 | card->reg_addr.w_offset = offsetof(struct mspro_register, param); | 970 | card->reg_addr.w_offset = offsetof(struct mspro_register, param); |
@@ -973,7 +973,7 @@ static int mspro_block_init_card(struct memstick_dev *card) | |||
973 | if (memstick_set_rw_addr(card)) | 973 | if (memstick_set_rw_addr(card)) |
974 | return -EIO; | 974 | return -EIO; |
975 | 975 | ||
976 | if (host->caps & MEMSTICK_CAP_PARALLEL) { | 976 | if (host->caps & MEMSTICK_CAP_PAR4) { |
977 | if (mspro_block_switch_to_parallel(card)) | 977 | if (mspro_block_switch_to_parallel(card)) |
978 | printk(KERN_WARNING "%s: could not switch to " | 978 | printk(KERN_WARNING "%s: could not switch to " |
979 | "parallel interface\n", card->dev.bus_id); | 979 | "parallel interface\n", card->dev.bus_id); |
diff --git a/drivers/memstick/host/tifm_ms.c b/drivers/memstick/host/tifm_ms.c index 4fb24215bd95..5b5bd61b3a4a 100644 --- a/drivers/memstick/host/tifm_ms.c +++ b/drivers/memstick/host/tifm_ms.c | |||
@@ -209,7 +209,7 @@ static int tifm_ms_issue_cmd(struct tifm_ms *host) | |||
209 | 209 | ||
210 | host->cmd_flags = 0; | 210 | host->cmd_flags = 0; |
211 | 211 | ||
212 | if (host->req->io_type == MEMSTICK_IO_SG) { | 212 | if (host->req->long_data) { |
213 | if (!host->no_dma) { | 213 | if (!host->no_dma) { |
214 | if (1 != tifm_map_sg(sock, &host->req->sg, 1, | 214 | if (1 != tifm_map_sg(sock, &host->req->sg, 1, |
215 | host->req->data_dir == READ | 215 | host->req->data_dir == READ |
@@ -248,7 +248,7 @@ static int tifm_ms_issue_cmd(struct tifm_ms *host) | |||
248 | cmd_mask = readl(sock->addr + SOCK_MS_SYSTEM); | 248 | cmd_mask = readl(sock->addr + SOCK_MS_SYSTEM); |
249 | cmd_mask |= TIFM_MS_SYS_DATA | TIFM_MS_SYS_NOT_RDY; | 249 | cmd_mask |= TIFM_MS_SYS_DATA | TIFM_MS_SYS_NOT_RDY; |
250 | writel(cmd_mask, sock->addr + SOCK_MS_SYSTEM); | 250 | writel(cmd_mask, sock->addr + SOCK_MS_SYSTEM); |
251 | } else if (host->req->io_type == MEMSTICK_IO_VAL) { | 251 | } else { |
252 | data = host->req->data; | 252 | data = host->req->data; |
253 | data_len = host->req->data_len; | 253 | data_len = host->req->data_len; |
254 | 254 | ||
@@ -294,8 +294,7 @@ static int tifm_ms_issue_cmd(struct tifm_ms *host) | |||
294 | cmd_mask |= TIFM_MS_SYS_NOT_RDY; | 294 | cmd_mask |= TIFM_MS_SYS_NOT_RDY; |
295 | dev_dbg(&sock->dev, "mask %x\n", cmd_mask); | 295 | dev_dbg(&sock->dev, "mask %x\n", cmd_mask); |
296 | writel(cmd_mask, sock->addr + SOCK_MS_SYSTEM); | 296 | writel(cmd_mask, sock->addr + SOCK_MS_SYSTEM); |
297 | } else | 297 | } |
298 | BUG(); | ||
299 | 298 | ||
300 | mod_timer(&host->timer, jiffies + host->timeout_jiffies); | 299 | mod_timer(&host->timer, jiffies + host->timeout_jiffies); |
301 | writel(TIFM_CTRL_LED | readl(sock->addr + SOCK_CONTROL), | 300 | writel(TIFM_CTRL_LED | readl(sock->addr + SOCK_CONTROL), |
@@ -319,13 +318,13 @@ static void tifm_ms_complete_cmd(struct tifm_ms *host) | |||
319 | int rc; | 318 | int rc; |
320 | 319 | ||
321 | del_timer(&host->timer); | 320 | del_timer(&host->timer); |
322 | if (host->req->io_type == MEMSTICK_IO_SG) { | 321 | if (host->req->long_data) { |
323 | if (!host->no_dma) | 322 | if (!host->no_dma) |
324 | tifm_unmap_sg(sock, &host->req->sg, 1, | 323 | tifm_unmap_sg(sock, &host->req->sg, 1, |
325 | host->req->data_dir == READ | 324 | host->req->data_dir == READ |
326 | ? PCI_DMA_FROMDEVICE | 325 | ? PCI_DMA_FROMDEVICE |
327 | : PCI_DMA_TODEVICE); | 326 | : PCI_DMA_TODEVICE); |
328 | } else if (host->req->io_type == MEMSTICK_IO_VAL) { | 327 | } else { |
329 | writel(~TIFM_MS_SYS_DATA & readl(sock->addr + SOCK_MS_SYSTEM), | 328 | writel(~TIFM_MS_SYS_DATA & readl(sock->addr + SOCK_MS_SYSTEM), |
330 | sock->addr + SOCK_MS_SYSTEM); | 329 | sock->addr + SOCK_MS_SYSTEM); |
331 | 330 | ||
@@ -365,7 +364,7 @@ static int tifm_ms_check_status(struct tifm_ms *host) | |||
365 | if (!host->req->error) { | 364 | if (!host->req->error) { |
366 | if (!(host->cmd_flags & CMD_READY)) | 365 | if (!(host->cmd_flags & CMD_READY)) |
367 | return 1; | 366 | return 1; |
368 | if ((host->req->io_type == MEMSTICK_IO_SG) | 367 | if (host->req->long_data |
369 | && !(host->cmd_flags & FIFO_READY)) | 368 | && !(host->cmd_flags & FIFO_READY)) |
370 | return 1; | 369 | return 1; |
371 | if (host->req->need_card_int | 370 | if (host->req->need_card_int |
@@ -505,7 +504,7 @@ static void tifm_ms_set_param(struct memstick_host *msh, | |||
505 | writel((~TIFM_CTRL_FAST_CLK) | 504 | writel((~TIFM_CTRL_FAST_CLK) |
506 | & readl(sock->addr + SOCK_CONTROL), | 505 | & readl(sock->addr + SOCK_CONTROL), |
507 | sock->addr + SOCK_CONTROL); | 506 | sock->addr + SOCK_CONTROL); |
508 | } else if (value == MEMSTICK_PARALLEL) { | 507 | } else if (value == MEMSTICK_PAR4) { |
509 | host->mode_mask = 0; | 508 | host->mode_mask = 0; |
510 | writel(TIFM_CTRL_FAST_CLK | 509 | writel(TIFM_CTRL_FAST_CLK |
511 | | readl(sock->addr + SOCK_CONTROL), | 510 | | readl(sock->addr + SOCK_CONTROL), |
@@ -542,7 +541,7 @@ static int tifm_ms_initialize_host(struct tifm_ms *host) | |||
542 | writel(0x0200 | TIFM_MS_SYS_NOT_RDY, sock->addr + SOCK_MS_SYSTEM); | 541 | writel(0x0200 | TIFM_MS_SYS_NOT_RDY, sock->addr + SOCK_MS_SYSTEM); |
543 | writel(0xffffffff, sock->addr + SOCK_MS_STATUS); | 542 | writel(0xffffffff, sock->addr + SOCK_MS_STATUS); |
544 | if (tifm_has_ms_pif(sock)) | 543 | if (tifm_has_ms_pif(sock)) |
545 | msh->caps |= MEMSTICK_CAP_PARALLEL; | 544 | msh->caps |= MEMSTICK_CAP_PAR4; |
546 | 545 | ||
547 | return 0; | 546 | return 0; |
548 | } | 547 | } |
@@ -601,7 +600,7 @@ static void tifm_ms_remove(struct tifm_dev *sock) | |||
601 | writel(TIFM_FIFO_INT_SETALL, | 600 | writel(TIFM_FIFO_INT_SETALL, |
602 | sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR); | 601 | sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR); |
603 | writel(TIFM_DMA_RESET, sock->addr + SOCK_DMA_CONTROL); | 602 | writel(TIFM_DMA_RESET, sock->addr + SOCK_DMA_CONTROL); |
604 | if ((host->req->io_type == MEMSTICK_IO_SG) && !host->no_dma) | 603 | if (host->req->long_data && !host->no_dma) |
605 | tifm_unmap_sg(sock, &host->req->sg, 1, | 604 | tifm_unmap_sg(sock, &host->req->sg, 1, |
606 | host->req->data_dir == READ | 605 | host->req->data_dir == READ |
607 | ? PCI_DMA_TODEVICE | 606 | ? PCI_DMA_TODEVICE |
diff --git a/include/linux/memstick.h b/include/linux/memstick.h index 334d059d6794..c104e722de06 100644 --- a/include/linux/memstick.h +++ b/include/linux/memstick.h | |||
@@ -22,6 +22,8 @@ struct ms_status_register { | |||
22 | unsigned char reserved; | 22 | unsigned char reserved; |
23 | unsigned char interrupt; | 23 | unsigned char interrupt; |
24 | #define MEMSTICK_INT_CMDNAK 0x0001 | 24 | #define MEMSTICK_INT_CMDNAK 0x0001 |
25 | #define MEMSTICK_INT_IOREQ 0x0008 | ||
26 | #define MEMSTICK_INT_IOBREQ 0x0010 | ||
25 | #define MEMSTICK_INT_BREQ 0x0020 | 27 | #define MEMSTICK_INT_BREQ 0x0020 |
26 | #define MEMSTICK_INT_ERR 0x0040 | 28 | #define MEMSTICK_INT_ERR 0x0040 |
27 | #define MEMSTICK_INT_CED 0x0080 | 29 | #define MEMSTICK_INT_CED 0x0080 |
@@ -47,13 +49,17 @@ struct ms_status_register { | |||
47 | 49 | ||
48 | struct ms_id_register { | 50 | struct ms_id_register { |
49 | unsigned char type; | 51 | unsigned char type; |
50 | unsigned char reserved; | 52 | unsigned char if_mode; |
51 | unsigned char category; | 53 | unsigned char category; |
52 | unsigned char class; | 54 | unsigned char class; |
53 | } __attribute__((packed)); | 55 | } __attribute__((packed)); |
54 | 56 | ||
55 | struct ms_param_register { | 57 | struct ms_param_register { |
56 | unsigned char system; | 58 | unsigned char system; |
59 | #define MEMSTICK_SYS_ATEN 0xc0 | ||
60 | #define MEMSTICK_SYS_BAMD 0x80 | ||
61 | #define MEMSTICK_SYS_PAM 0x08 | ||
62 | |||
57 | unsigned char block_address_msb; | 63 | unsigned char block_address_msb; |
58 | unsigned short block_address; | 64 | unsigned short block_address; |
59 | unsigned char cp; | 65 | unsigned char cp; |
@@ -90,16 +96,48 @@ struct ms_register { | |||
90 | 96 | ||
91 | struct mspro_param_register { | 97 | struct mspro_param_register { |
92 | unsigned char system; | 98 | unsigned char system; |
99 | #define MEMSTICK_SYS_SERIAL 0x80 | ||
100 | #define MEMSTICK_SYS_PAR4 0x00 | ||
101 | #define MEMSTICK_SYS_PAR8 0x40 | ||
102 | |||
103 | unsigned short data_count; | ||
104 | unsigned int data_address; | ||
105 | unsigned char tpc_param; | ||
106 | } __attribute__((packed)); | ||
107 | |||
108 | struct mspro_io_info_register { | ||
109 | unsigned char version; | ||
110 | unsigned char io_category; | ||
111 | unsigned char current_req; | ||
112 | unsigned char card_opt_info; | ||
113 | unsigned char rdy_wait_time; | ||
114 | } __attribute__((packed)); | ||
115 | |||
116 | struct mspro_io_func_register { | ||
117 | unsigned char func_enable; | ||
118 | unsigned char func_select; | ||
119 | unsigned char func_intmask; | ||
120 | unsigned char transfer_mode; | ||
121 | } __attribute__((packed)); | ||
122 | |||
123 | struct mspro_io_cmd_register { | ||
124 | unsigned short tpc_param; | ||
93 | unsigned short data_count; | 125 | unsigned short data_count; |
94 | unsigned int data_address; | 126 | unsigned int data_address; |
95 | unsigned char cmd_param; | ||
96 | } __attribute__((packed)); | 127 | } __attribute__((packed)); |
97 | 128 | ||
98 | struct mspro_register { | 129 | struct mspro_register { |
99 | struct ms_status_register status; | 130 | struct ms_status_register status; |
100 | struct ms_id_register id; | 131 | struct ms_id_register id; |
101 | unsigned char reserved[8]; | 132 | unsigned char reserved0[8]; |
102 | struct mspro_param_register param; | 133 | struct mspro_param_register param; |
134 | unsigned char reserved1[8]; | ||
135 | struct mspro_io_info_register io_info; | ||
136 | struct mspro_io_func_register io_func; | ||
137 | unsigned char reserved2[7]; | ||
138 | struct mspro_io_cmd_register io_cmd; | ||
139 | unsigned char io_int; | ||
140 | unsigned char io_int_func; | ||
103 | } __attribute__((packed)); | 141 | } __attribute__((packed)); |
104 | 142 | ||
105 | struct ms_register_addr { | 143 | struct ms_register_addr { |
@@ -110,49 +148,55 @@ struct ms_register_addr { | |||
110 | } __attribute__((packed)); | 148 | } __attribute__((packed)); |
111 | 149 | ||
112 | enum { | 150 | enum { |
151 | MS_TPC_READ_MG_STATUS = 0x01, | ||
113 | MS_TPC_READ_LONG_DATA = 0x02, | 152 | MS_TPC_READ_LONG_DATA = 0x02, |
114 | MS_TPC_READ_SHORT_DATA = 0x03, | 153 | MS_TPC_READ_SHORT_DATA = 0x03, |
154 | MS_TPC_READ_MG_DATA = 0x03, | ||
115 | MS_TPC_READ_REG = 0x04, | 155 | MS_TPC_READ_REG = 0x04, |
116 | MS_TPC_READ_IO_DATA = 0x05, /* unverified */ | 156 | MS_TPC_READ_QUAD_DATA = 0x05, |
157 | MS_TPC_READ_IO_DATA = 0x05, | ||
117 | MS_TPC_GET_INT = 0x07, | 158 | MS_TPC_GET_INT = 0x07, |
118 | MS_TPC_SET_RW_REG_ADRS = 0x08, | 159 | MS_TPC_SET_RW_REG_ADRS = 0x08, |
119 | MS_TPC_EX_SET_CMD = 0x09, | 160 | MS_TPC_EX_SET_CMD = 0x09, |
120 | MS_TPC_WRITE_IO_DATA = 0x0a, /* unverified */ | 161 | MS_TPC_WRITE_QUAD_DATA = 0x0a, |
162 | MS_TPC_WRITE_IO_DATA = 0x0a, | ||
121 | MS_TPC_WRITE_REG = 0x0b, | 163 | MS_TPC_WRITE_REG = 0x0b, |
122 | MS_TPC_WRITE_SHORT_DATA = 0x0c, | 164 | MS_TPC_WRITE_SHORT_DATA = 0x0c, |
165 | MS_TPC_WRITE_MG_DATA = 0x0c, | ||
123 | MS_TPC_WRITE_LONG_DATA = 0x0d, | 166 | MS_TPC_WRITE_LONG_DATA = 0x0d, |
124 | MS_TPC_SET_CMD = 0x0e | 167 | MS_TPC_SET_CMD = 0x0e |
125 | }; | 168 | }; |
126 | 169 | ||
127 | enum { | 170 | enum { |
128 | MS_CMD_BLOCK_END = 0x33, | 171 | MS_CMD_BLOCK_END = 0x33, |
129 | MS_CMD_RESET = 0x3c, | 172 | MS_CMD_RESET = 0x3c, |
130 | MS_CMD_BLOCK_WRITE = 0x55, | 173 | MS_CMD_BLOCK_WRITE = 0x55, |
131 | MS_CMD_SLEEP = 0x5a, | 174 | MS_CMD_SLEEP = 0x5a, |
132 | MS_CMD_BLOCK_ERASE = 0x99, | 175 | MS_CMD_BLOCK_ERASE = 0x99, |
133 | MS_CMD_BLOCK_READ = 0xaa, | 176 | MS_CMD_BLOCK_READ = 0xaa, |
134 | MS_CMD_CLEAR_BUF = 0xc3, | 177 | MS_CMD_CLEAR_BUF = 0xc3, |
135 | MS_CMD_FLASH_STOP = 0xcc, | 178 | MS_CMD_FLASH_STOP = 0xcc, |
136 | MSPRO_CMD_FORMAT = 0x10, | 179 | MS_CMD_LOAD_ID = 0x60, |
137 | MSPRO_CMD_SLEEP = 0x11, | 180 | MS_CMD_CMP_ICV = 0x7f, |
138 | MSPRO_CMD_READ_DATA = 0x20, | 181 | MSPRO_CMD_FORMAT = 0x10, |
139 | MSPRO_CMD_WRITE_DATA = 0x21, | 182 | MSPRO_CMD_SLEEP = 0x11, |
140 | MSPRO_CMD_READ_ATRB = 0x24, | 183 | MSPRO_CMD_WAKEUP = 0x12, |
141 | MSPRO_CMD_STOP = 0x25, | 184 | MSPRO_CMD_READ_DATA = 0x20, |
142 | MSPRO_CMD_ERASE = 0x26, | 185 | MSPRO_CMD_WRITE_DATA = 0x21, |
143 | MSPRO_CMD_SET_IBA = 0x46, | 186 | MSPRO_CMD_READ_ATRB = 0x24, |
144 | MSPRO_CMD_SET_IBD = 0x47 | 187 | MSPRO_CMD_STOP = 0x25, |
145 | /* | 188 | MSPRO_CMD_ERASE = 0x26, |
146 | MSPRO_CMD_RESET | 189 | MSPRO_CMD_READ_QUAD = 0x27, |
147 | MSPRO_CMD_WAKEUP | 190 | MSPRO_CMD_WRITE_QUAD = 0x28, |
148 | MSPRO_CMD_IN_IO_DATA | 191 | MSPRO_CMD_SET_IBD = 0x46, |
149 | MSPRO_CMD_OUT_IO_DATA | 192 | MSPRO_CMD_GET_IBD = 0x47, |
150 | MSPRO_CMD_READ_IO_ATRB | 193 | MSPRO_CMD_IN_IO_DATA = 0xb0, |
151 | MSPRO_CMD_IN_IO_FIFO | 194 | MSPRO_CMD_OUT_IO_DATA = 0xb1, |
152 | MSPRO_CMD_OUT_IO_FIFO | 195 | MSPRO_CMD_READ_IO_ATRB = 0xb2, |
153 | MSPRO_CMD_IN_IOM | 196 | MSPRO_CMD_IN_IO_FIFO = 0xb3, |
154 | MSPRO_CMD_OUT_IOM | 197 | MSPRO_CMD_OUT_IO_FIFO = 0xb4, |
155 | */ | 198 | MSPRO_CMD_IN_IOM = 0xb5, |
199 | MSPRO_CMD_OUT_IOM = 0xb6, | ||
156 | }; | 200 | }; |
157 | 201 | ||
158 | /*** Driver structures and functions ***/ | 202 | /*** Driver structures and functions ***/ |
@@ -165,7 +209,8 @@ enum memstick_param { MEMSTICK_POWER = 1, MEMSTICK_INTERFACE }; | |||
165 | #define MEMSTICK_POWER_ON 1 | 209 | #define MEMSTICK_POWER_ON 1 |
166 | 210 | ||
167 | #define MEMSTICK_SERIAL 0 | 211 | #define MEMSTICK_SERIAL 0 |
168 | #define MEMSTICK_PARALLEL 1 | 212 | #define MEMSTICK_PAR4 1 |
213 | #define MEMSTICK_PAR8 2 | ||
169 | 214 | ||
170 | struct memstick_host; | 215 | struct memstick_host; |
171 | struct memstick_driver; | 216 | struct memstick_driver; |
@@ -195,11 +240,7 @@ struct memstick_request { | |||
195 | unsigned char data_dir:1, | 240 | unsigned char data_dir:1, |
196 | need_card_int:1, | 241 | need_card_int:1, |
197 | get_int_reg:1, | 242 | get_int_reg:1, |
198 | io_type:2; | 243 | long_data:1; |
199 | #define MEMSTICK_IO_NONE 0 | ||
200 | #define MEMSTICK_IO_VAL 1 | ||
201 | #define MEMSTICK_IO_SG 2 | ||
202 | |||
203 | unsigned char int_reg; | 244 | unsigned char int_reg; |
204 | int error; | 245 | int error; |
205 | union { | 246 | union { |
@@ -231,8 +272,9 @@ struct memstick_host { | |||
231 | struct mutex lock; | 272 | struct mutex lock; |
232 | unsigned int id; | 273 | unsigned int id; |
233 | unsigned int caps; | 274 | unsigned int caps; |
234 | #define MEMSTICK_CAP_PARALLEL 1 | 275 | #define MEMSTICK_CAP_AUTO_GET_INT 1 |
235 | #define MEMSTICK_CAP_AUTO_GET_INT 2 | 276 | #define MEMSTICK_CAP_PAR4 2 |
277 | #define MEMSTICK_CAP_PAR8 4 | ||
236 | 278 | ||
237 | struct work_struct media_checker; | 279 | struct work_struct media_checker; |
238 | struct class_device cdev; | 280 | struct class_device cdev; |