diff options
author | Alex Dubov <oakad@yahoo.com> | 2008-03-10 14:43:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-03-10 21:01:18 -0400 |
commit | e1f19995f55294fbb00ea22ba85d7b0d80ba3813 (patch) | |
tree | 0369d9e9a142000964d3204cb128c826986c94af /drivers/memstick | |
parent | b614ce8b3c697947d75685f0b9f2059307dde715 (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.c | 4 | ||||
-rw-r--r-- | drivers/memstick/core/mspro_block.c | 16 | ||||
-rw-r--r-- | drivers/memstick/host/tifm_ms.c | 19 |
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 |