aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/memstick
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/memstick')
-rw-r--r--drivers/memstick/core/memstick.c4
-rw-r--r--drivers/memstick/core/mspro_block.c16
-rw-r--r--drivers/memstick/host/tifm_ms.c19
3 files changed, 19 insertions, 20 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