Lines Matching full:cmd

66 static int wilc_sdio_cmd52(struct wilc *wilc, struct sdio_cmd52 *cmd)  in wilc_sdio_cmd52()  argument
74 func->num = cmd->function; in wilc_sdio_cmd52()
75 if (cmd->read_write) { /* write */ in wilc_sdio_cmd52()
76 if (cmd->raw) { in wilc_sdio_cmd52()
77 sdio_writeb(func, cmd->data, cmd->address, &ret); in wilc_sdio_cmd52()
78 data = sdio_readb(func, cmd->address, &ret); in wilc_sdio_cmd52()
79 cmd->data = data; in wilc_sdio_cmd52()
81 sdio_writeb(func, cmd->data, cmd->address, &ret); in wilc_sdio_cmd52()
84 data = sdio_readb(func, cmd->address, &ret); in wilc_sdio_cmd52()
85 cmd->data = data; in wilc_sdio_cmd52()
95 static int wilc_sdio_cmd53(struct wilc *wilc, struct sdio_cmd53 *cmd) in wilc_sdio_cmd53() argument
100 u8 *buf = cmd->buffer; in wilc_sdio_cmd53()
104 func->num = cmd->function; in wilc_sdio_cmd53()
105 func->cur_blksize = cmd->block_size; in wilc_sdio_cmd53()
106 if (cmd->block_mode) in wilc_sdio_cmd53()
107 size = cmd->count * cmd->block_size; in wilc_sdio_cmd53()
109 size = cmd->count; in wilc_sdio_cmd53()
111 if (cmd->use_global_buf) { in wilc_sdio_cmd53()
119 if (cmd->read_write) { /* write */ in wilc_sdio_cmd53()
120 if (cmd->use_global_buf) in wilc_sdio_cmd53()
121 memcpy(buf, cmd->buffer, size); in wilc_sdio_cmd53()
123 ret = sdio_memcpy_toio(func, cmd->address, buf, size); in wilc_sdio_cmd53()
125 ret = sdio_memcpy_fromio(func, buf, cmd->address, size); in wilc_sdio_cmd53()
127 if (cmd->use_global_buf) in wilc_sdio_cmd53()
128 memcpy(cmd->buffer, buf, size); in wilc_sdio_cmd53()
237 struct sdio_cmd52 cmd; in wilc_sdio_reset() local
241 cmd.read_write = 1; in wilc_sdio_reset()
242 cmd.function = 0; in wilc_sdio_reset()
243 cmd.raw = 0; in wilc_sdio_reset()
244 cmd.address = SDIO_CCCR_ABORT; in wilc_sdio_reset()
245 cmd.data = WILC_SDIO_CCCR_ABORT_RESET; in wilc_sdio_reset()
246 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_reset()
248 dev_err(&func->dev, "Fail cmd 52, reset cmd ...\n"); in wilc_sdio_reset()
298 struct sdio_cmd52 cmd; in wilc_sdio_set_func0_csa_address() local
304 cmd.read_write = 1; in wilc_sdio_set_func0_csa_address()
305 cmd.function = 0; in wilc_sdio_set_func0_csa_address()
306 cmd.raw = 0; in wilc_sdio_set_func0_csa_address()
307 cmd.address = WILC_SDIO_FBR_CSA_REG; in wilc_sdio_set_func0_csa_address()
308 cmd.data = (u8)adr; in wilc_sdio_set_func0_csa_address()
309 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_set_func0_csa_address()
312 cmd.address); in wilc_sdio_set_func0_csa_address()
316 cmd.address = WILC_SDIO_FBR_CSA_REG + 1; in wilc_sdio_set_func0_csa_address()
317 cmd.data = (u8)(adr >> 8); in wilc_sdio_set_func0_csa_address()
318 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_set_func0_csa_address()
321 cmd.address); in wilc_sdio_set_func0_csa_address()
325 cmd.address = WILC_SDIO_FBR_CSA_REG + 2; in wilc_sdio_set_func0_csa_address()
326 cmd.data = (u8)(adr >> 16); in wilc_sdio_set_func0_csa_address()
327 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_set_func0_csa_address()
330 cmd.address); in wilc_sdio_set_func0_csa_address()
341 struct sdio_cmd52 cmd; in wilc_sdio_set_block_size() local
344 cmd.read_write = 1; in wilc_sdio_set_block_size()
345 cmd.function = 0; in wilc_sdio_set_block_size()
346 cmd.raw = 0; in wilc_sdio_set_block_size()
347 cmd.address = SDIO_FBR_BASE(func_num) + SDIO_CCCR_BLKSIZE; in wilc_sdio_set_block_size()
348 cmd.data = (u8)block_size; in wilc_sdio_set_block_size()
349 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_set_block_size()
352 cmd.address); in wilc_sdio_set_block_size()
356 cmd.address = SDIO_FBR_BASE(func_num) + SDIO_CCCR_BLKSIZE + 1; in wilc_sdio_set_block_size()
357 cmd.data = (u8)(block_size >> 8); in wilc_sdio_set_block_size()
358 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_set_block_size()
361 cmd.address); in wilc_sdio_set_block_size()
382 struct sdio_cmd52 cmd; in wilc_sdio_write_reg() local
384 cmd.read_write = 1; in wilc_sdio_write_reg()
385 cmd.function = 0; in wilc_sdio_write_reg()
386 cmd.raw = 0; in wilc_sdio_write_reg()
387 cmd.address = addr; in wilc_sdio_write_reg()
388 cmd.data = data; in wilc_sdio_write_reg()
389 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_write_reg()
392 "Failed cmd 52, read reg (%08x) ...\n", addr); in wilc_sdio_write_reg()
394 struct sdio_cmd53 cmd; in wilc_sdio_write_reg() local
403 cmd.read_write = 1; in wilc_sdio_write_reg()
404 cmd.function = 0; in wilc_sdio_write_reg()
405 cmd.address = WILC_SDIO_FBR_DATA_REG; in wilc_sdio_write_reg()
406 cmd.block_mode = 0; in wilc_sdio_write_reg()
407 cmd.increment = 1; in wilc_sdio_write_reg()
408 cmd.count = sizeof(u32); in wilc_sdio_write_reg()
409 cmd.buffer = (u8 *)&data; in wilc_sdio_write_reg()
410 cmd.use_global_buf = true; in wilc_sdio_write_reg()
411 cmd.block_size = sdio_priv->block_size; in wilc_sdio_write_reg()
412 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_write_reg()
426 struct sdio_cmd53 cmd; in wilc_sdio_write() local
429 cmd.read_write = 1; in wilc_sdio_write()
434 cmd.function = 0; in wilc_sdio_write()
435 cmd.address = WILC_SDIO_FBR_DATA_REG; in wilc_sdio_write()
440 cmd.function = 1; in wilc_sdio_write()
441 cmd.address = WILC_SDIO_F1_DATA_REG; in wilc_sdio_write()
448 cmd.use_global_buf = false; in wilc_sdio_write()
450 cmd.block_mode = 1; in wilc_sdio_write()
451 cmd.increment = 1; in wilc_sdio_write()
452 cmd.count = nblk; in wilc_sdio_write()
453 cmd.buffer = buf; in wilc_sdio_write()
454 cmd.block_size = block_size; in wilc_sdio_write()
460 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_write()
472 cmd.block_mode = 0; in wilc_sdio_write()
473 cmd.increment = 1; in wilc_sdio_write()
474 cmd.count = nleft; in wilc_sdio_write()
475 cmd.buffer = buf; in wilc_sdio_write()
477 cmd.block_size = block_size; in wilc_sdio_write()
484 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_write()
502 struct sdio_cmd52 cmd; in wilc_sdio_read_reg() local
504 cmd.read_write = 0; in wilc_sdio_read_reg()
505 cmd.function = 0; in wilc_sdio_read_reg()
506 cmd.raw = 0; in wilc_sdio_read_reg()
507 cmd.address = addr; in wilc_sdio_read_reg()
508 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_read_reg()
511 "Failed cmd 52, read reg (%08x) ...\n", addr); in wilc_sdio_read_reg()
514 *data = cmd.data; in wilc_sdio_read_reg()
516 struct sdio_cmd53 cmd; in wilc_sdio_read_reg() local
522 cmd.read_write = 0; in wilc_sdio_read_reg()
523 cmd.function = 0; in wilc_sdio_read_reg()
524 cmd.address = WILC_SDIO_FBR_DATA_REG; in wilc_sdio_read_reg()
525 cmd.block_mode = 0; in wilc_sdio_read_reg()
526 cmd.increment = 1; in wilc_sdio_read_reg()
527 cmd.count = sizeof(u32); in wilc_sdio_read_reg()
528 cmd.buffer = (u8 *)data; in wilc_sdio_read_reg()
529 cmd.use_global_buf = true; in wilc_sdio_read_reg()
531 cmd.block_size = sdio_priv->block_size; in wilc_sdio_read_reg()
532 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_read_reg()
549 struct sdio_cmd53 cmd; in wilc_sdio_read() local
552 cmd.read_write = 0; in wilc_sdio_read()
557 cmd.function = 0; in wilc_sdio_read()
558 cmd.address = WILC_SDIO_FBR_DATA_REG; in wilc_sdio_read()
563 cmd.function = 1; in wilc_sdio_read()
564 cmd.address = WILC_SDIO_F1_DATA_REG; in wilc_sdio_read()
571 cmd.use_global_buf = false; in wilc_sdio_read()
573 cmd.block_mode = 1; in wilc_sdio_read()
574 cmd.increment = 1; in wilc_sdio_read()
575 cmd.count = nblk; in wilc_sdio_read()
576 cmd.buffer = buf; in wilc_sdio_read()
577 cmd.block_size = block_size; in wilc_sdio_read()
583 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_read()
595 cmd.block_mode = 0; in wilc_sdio_read()
596 cmd.increment = 1; in wilc_sdio_read()
597 cmd.count = nleft; in wilc_sdio_read()
598 cmd.buffer = buf; in wilc_sdio_read()
600 cmd.block_size = block_size; in wilc_sdio_read()
607 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_read()
628 struct sdio_cmd52 cmd; in wilc_sdio_deinit() local
631 cmd.read_write = 1; in wilc_sdio_deinit()
632 cmd.function = 0; in wilc_sdio_deinit()
633 cmd.raw = 1; in wilc_sdio_deinit()
636 cmd.address = SDIO_CCCR_IENx; in wilc_sdio_deinit()
637 cmd.data = 0; in wilc_sdio_deinit()
638 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_deinit()
645 cmd.address = SDIO_CCCR_IOEx; in wilc_sdio_deinit()
646 cmd.data = 0; in wilc_sdio_deinit()
647 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_deinit()
655 cmd.read_write = 0; in wilc_sdio_deinit()
656 cmd.address = SDIO_FBR_BASE(1); in wilc_sdio_deinit()
657 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_deinit()
663 cmd.read_write = 1; in wilc_sdio_deinit()
664 cmd.address = SDIO_FBR_BASE(1); in wilc_sdio_deinit()
665 cmd.data &= ~SDIO_FBR_ENABLE_CSA; in wilc_sdio_deinit()
666 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_deinit()
681 struct sdio_cmd52 cmd; in wilc_sdio_init() local
687 cmd.read_write = 1; in wilc_sdio_init()
688 cmd.function = 0; in wilc_sdio_init()
689 cmd.raw = 1; in wilc_sdio_init()
690 cmd.address = SDIO_FBR_BASE(1); in wilc_sdio_init()
691 cmd.data = SDIO_FBR_ENABLE_CSA; in wilc_sdio_init()
692 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_init()
694 dev_err(&func->dev, "Fail cmd 52, enable csa...\n"); in wilc_sdio_init()
703 dev_err(&func->dev, "Fail cmd 52, set func 0 block size...\n"); in wilc_sdio_init()
711 cmd.read_write = 1; in wilc_sdio_init()
712 cmd.function = 0; in wilc_sdio_init()
713 cmd.raw = 1; in wilc_sdio_init()
714 cmd.address = SDIO_CCCR_IOEx; in wilc_sdio_init()
715 cmd.data = WILC_SDIO_CCCR_IO_EN_FUNC1; in wilc_sdio_init()
716 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_init()
719 "Fail cmd 52, set IOE register...\n"); in wilc_sdio_init()
726 cmd.read_write = 0; in wilc_sdio_init()
727 cmd.function = 0; in wilc_sdio_init()
728 cmd.raw = 0; in wilc_sdio_init()
729 cmd.address = SDIO_CCCR_IORx; in wilc_sdio_init()
732 cmd.data = 0; in wilc_sdio_init()
733 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_init()
736 "Fail cmd 52, get IOR register...\n"); in wilc_sdio_init()
739 if (cmd.data == WILC_SDIO_CCCR_IO_EN_FUNC1) in wilc_sdio_init()
760 cmd.read_write = 1; in wilc_sdio_init()
761 cmd.function = 0; in wilc_sdio_init()
762 cmd.raw = 1; in wilc_sdio_init()
763 cmd.address = SDIO_CCCR_IENx; in wilc_sdio_init()
764 cmd.data = WILC_SDIO_CCCR_IEN_MASTER | WILC_SDIO_CCCR_IEN_FUNC1; in wilc_sdio_init()
765 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_init()
767 dev_err(&func->dev, "Fail cmd 52, set IEN register...\n"); in wilc_sdio_init()
778 struct sdio_cmd52 cmd; in wilc_sdio_read_size() local
783 cmd.read_write = 0; in wilc_sdio_read_size()
784 cmd.function = 0; in wilc_sdio_read_size()
785 cmd.raw = 0; in wilc_sdio_read_size()
786 cmd.address = WILC_SDIO_INTERRUPT_DATA_SZ_REG; in wilc_sdio_read_size()
787 cmd.data = 0; in wilc_sdio_read_size()
788 wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_read_size()
789 tmp = cmd.data; in wilc_sdio_read_size()
791 cmd.address = WILC_SDIO_INTERRUPT_DATA_SZ_REG + 1; in wilc_sdio_read_size()
792 cmd.data = 0; in wilc_sdio_read_size()
793 wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_read_size()
794 tmp |= (cmd.data << 8); in wilc_sdio_read_size()
806 struct sdio_cmd52 cmd; in wilc_sdio_read_int() local
814 cmd.function = 1; in wilc_sdio_read_int()
815 cmd.address = WILC_SDIO_EXT_IRQ_FLAG_REG; in wilc_sdio_read_int()
817 cmd.function = 0; in wilc_sdio_read_int()
818 cmd.address = is_wilc1000(wilc->chipid) ? in wilc_sdio_read_int()
822 cmd.raw = 0; in wilc_sdio_read_int()
823 cmd.read_write = 0; in wilc_sdio_read_int()
824 cmd.data = 0; in wilc_sdio_read_int()
825 wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_read_int()
826 irq_flags = cmd.data; in wilc_sdio_read_int()
831 tmp |= FIELD_PREP(IRG_FLAGS_MASK, cmd.data); in wilc_sdio_read_int()
864 struct sdio_cmd52 cmd; in wilc_sdio_clear_int_ext() local
866 cmd.read_write = 1; in wilc_sdio_clear_int_ext()
867 cmd.function = 0; in wilc_sdio_clear_int_ext()
868 cmd.raw = 0; in wilc_sdio_clear_int_ext()
869 cmd.address = WILC3000_SDIO_IRQ_FLAG_REG; in wilc_sdio_clear_int_ext()
870 cmd.data = reg; in wilc_sdio_clear_int_ext()
872 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_clear_int_ext()
894 struct sdio_cmd52 cmd; in wilc_sdio_clear_int_ext() local
896 cmd.read_write = 1; in wilc_sdio_clear_int_ext()
897 cmd.function = 0; in wilc_sdio_clear_int_ext()
898 cmd.raw = 0; in wilc_sdio_clear_int_ext()
899 cmd.address = is_wilc1000(wilc->chipid) ? in wilc_sdio_clear_int_ext()
902 cmd.data = reg; in wilc_sdio_clear_int_ext()
904 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_clear_int_ext()
908 cmd.address, __LINE__); in wilc_sdio_clear_int_ext()