aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/memstick
diff options
context:
space:
mode:
authorAlex Dubov <oakad@yahoo.com>2008-03-10 14:43:37 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-03-10 21:01:18 -0400
commite1f19995f55294fbb00ea22ba85d7b0d80ba3813 (patch)
tree0369d9e9a142000964d3204cb128c826986c94af /drivers/memstick
parentb614ce8b3c697947d75685f0b9f2059307dde715 (diff)
memstick: introduce correct definitions in the header
Thanks to some input from kind people at JMicron it is now possible to have more correct definitions of protocol structures and bit field semantics. Signed-off-by: Alex Dubov <oakad@yahoo.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
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