docg3 412 arch/arm/mach-pxa/mioa701.c static struct platform_device docg3 = { docg3 689 arch/arm/mach-pxa/mioa701.c &docg3, docg3 92 drivers/mtd/devices/docg3.c static inline u8 doc_readb(struct docg3 *docg3, u16 reg) docg3 94 drivers/mtd/devices/docg3.c u8 val = readb(docg3->cascade->base + reg); docg3 100 drivers/mtd/devices/docg3.c static inline u16 doc_readw(struct docg3 *docg3, u16 reg) docg3 102 drivers/mtd/devices/docg3.c u16 val = readw(docg3->cascade->base + reg); docg3 108 drivers/mtd/devices/docg3.c static inline void doc_writeb(struct docg3 *docg3, u8 val, u16 reg) docg3 110 drivers/mtd/devices/docg3.c writeb(val, docg3->cascade->base + reg); docg3 114 drivers/mtd/devices/docg3.c static inline void doc_writew(struct docg3 *docg3, u16 val, u16 reg) docg3 116 drivers/mtd/devices/docg3.c writew(val, docg3->cascade->base + reg); docg3 120 drivers/mtd/devices/docg3.c static inline void doc_flash_command(struct docg3 *docg3, u8 cmd) docg3 122 drivers/mtd/devices/docg3.c doc_writeb(docg3, cmd, DOC_FLASHCOMMAND); docg3 125 drivers/mtd/devices/docg3.c static inline void doc_flash_sequence(struct docg3 *docg3, u8 seq) docg3 127 drivers/mtd/devices/docg3.c doc_writeb(docg3, seq, DOC_FLASHSEQUENCE); docg3 130 drivers/mtd/devices/docg3.c static inline void doc_flash_address(struct docg3 *docg3, u8 addr) docg3 132 drivers/mtd/devices/docg3.c doc_writeb(docg3, addr, DOC_FLASHADDRESS); docg3 137 drivers/mtd/devices/docg3.c static int doc_register_readb(struct docg3 *docg3, int reg) docg3 141 drivers/mtd/devices/docg3.c doc_writew(docg3, reg, DOC_READADDRESS); docg3 142 drivers/mtd/devices/docg3.c val = doc_readb(docg3, reg); docg3 147 drivers/mtd/devices/docg3.c static int doc_register_readw(struct docg3 *docg3, int reg) docg3 151 drivers/mtd/devices/docg3.c doc_writew(docg3, reg, DOC_READADDRESS); docg3 152 drivers/mtd/devices/docg3.c val = doc_readw(docg3, reg); docg3 168 drivers/mtd/devices/docg3.c static void doc_delay(struct docg3 *docg3, int nbNOPs) docg3 174 drivers/mtd/devices/docg3.c doc_writeb(docg3, 0, DOC_NOP); docg3 177 drivers/mtd/devices/docg3.c static int is_prot_seq_error(struct docg3 *docg3) docg3 181 drivers/mtd/devices/docg3.c ctrl = doc_register_readb(docg3, DOC_FLASHCONTROL); docg3 185 drivers/mtd/devices/docg3.c static int doc_is_ready(struct docg3 *docg3) docg3 189 drivers/mtd/devices/docg3.c ctrl = doc_register_readb(docg3, DOC_FLASHCONTROL); docg3 193 drivers/mtd/devices/docg3.c static int doc_wait_ready(struct docg3 *docg3) docg3 198 drivers/mtd/devices/docg3.c doc_delay(docg3, 4); docg3 200 drivers/mtd/devices/docg3.c } while (!doc_is_ready(docg3) && maxWaitCycles--); docg3 201 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 208 drivers/mtd/devices/docg3.c static int doc_reset_seq(struct docg3 *docg3) docg3 212 drivers/mtd/devices/docg3.c doc_writeb(docg3, 0x10, DOC_FLASHCONTROL); docg3 213 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_RESET); docg3 214 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_RESET); docg3 215 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 216 drivers/mtd/devices/docg3.c ret = doc_wait_ready(docg3); docg3 231 drivers/mtd/devices/docg3.c static void doc_read_data_area(struct docg3 *docg3, void *buf, int len, docg3 243 drivers/mtd/devices/docg3.c doc_writew(docg3, DOC_IOSPACE_DATA, DOC_READADDRESS); docg3 246 drivers/mtd/devices/docg3.c data16 = doc_readw(docg3, DOC_IOSPACE_DATA); docg3 254 drivers/mtd/devices/docg3.c doc_writew(docg3, DOC_IOSPACE_DATA | DOC_READADDR_ONE_BYTE, docg3 256 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 259 drivers/mtd/devices/docg3.c data8 = doc_readb(docg3, DOC_IOSPACE_DATA); docg3 276 drivers/mtd/devices/docg3.c static void doc_write_data_area(struct docg3 *docg3, const void *buf, int len) docg3 286 drivers/mtd/devices/docg3.c doc_writew(docg3, DOC_IOSPACE_DATA, DOC_READADDRESS); docg3 289 drivers/mtd/devices/docg3.c doc_writew(docg3, *src16, DOC_IOSPACE_DATA); docg3 295 drivers/mtd/devices/docg3.c doc_writew(docg3, DOC_IOSPACE_DATA | DOC_READADDR_ONE_BYTE, docg3 297 drivers/mtd/devices/docg3.c doc_writeb(docg3, *src8, DOC_IOSPACE_DATA); docg3 317 drivers/mtd/devices/docg3.c static void doc_set_reliable_mode(struct docg3 *docg3) docg3 321 drivers/mtd/devices/docg3.c doc_dbg("doc_set_reliable_mode(%s)\n", strmode[docg3->reliable]); docg3 322 drivers/mtd/devices/docg3.c switch (docg3->reliable) { docg3 326 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_SET_FASTMODE); docg3 327 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_FAST_MODE); docg3 330 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_SET_RELIABLEMODE); docg3 331 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_FAST_MODE); docg3 332 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_RELIABLE_MODE); docg3 338 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 351 drivers/mtd/devices/docg3.c static void doc_set_asic_mode(struct docg3 *docg3, u8 mode) docg3 356 drivers/mtd/devices/docg3.c doc_readb(docg3, DOC_IOSPACE_IPL); docg3 360 drivers/mtd/devices/docg3.c doc_writeb(docg3, mode, DOC_ASICMODE); docg3 361 drivers/mtd/devices/docg3.c doc_writeb(docg3, ~mode, DOC_ASICMODECONFIRM); docg3 362 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 373 drivers/mtd/devices/docg3.c static void doc_set_device_id(struct docg3 *docg3, int id) docg3 378 drivers/mtd/devices/docg3.c doc_writeb(docg3, id, DOC_DEVICESELECT); docg3 379 drivers/mtd/devices/docg3.c ctrl = doc_register_readb(docg3, DOC_FLASHCONTROL); docg3 383 drivers/mtd/devices/docg3.c doc_writeb(docg3, ctrl, DOC_FLASHCONTROL); docg3 397 drivers/mtd/devices/docg3.c static int doc_set_extra_page_mode(struct docg3 *docg3) docg3 402 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_PAGE_SIZE_532); docg3 403 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_PAGE_SIZE_532); docg3 404 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 406 drivers/mtd/devices/docg3.c fctrl = doc_register_readb(docg3, DOC_FLASHCONTROL); docg3 418 drivers/mtd/devices/docg3.c static void doc_setup_addr_sector(struct docg3 *docg3, int sector) docg3 420 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 421 drivers/mtd/devices/docg3.c doc_flash_address(docg3, sector & 0xff); docg3 422 drivers/mtd/devices/docg3.c doc_flash_address(docg3, (sector >> 8) & 0xff); docg3 423 drivers/mtd/devices/docg3.c doc_flash_address(docg3, (sector >> 16) & 0xff); docg3 424 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 433 drivers/mtd/devices/docg3.c static void doc_setup_writeaddr_sector(struct docg3 *docg3, int sector, int ofs) docg3 436 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 437 drivers/mtd/devices/docg3.c doc_flash_address(docg3, ofs & 0xff); docg3 438 drivers/mtd/devices/docg3.c doc_flash_address(docg3, sector & 0xff); docg3 439 drivers/mtd/devices/docg3.c doc_flash_address(docg3, (sector >> 8) & 0xff); docg3 440 drivers/mtd/devices/docg3.c doc_flash_address(docg3, (sector >> 16) & 0xff); docg3 441 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 456 drivers/mtd/devices/docg3.c static int doc_read_seek(struct docg3 *docg3, int block0, int block1, int page, docg3 465 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_SET_PLANE1); docg3 466 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_READ_PLANE1); docg3 467 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 469 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_SET_PLANE2); docg3 470 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_READ_PLANE2); docg3 471 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 474 drivers/mtd/devices/docg3.c doc_set_reliable_mode(docg3); docg3 476 drivers/mtd/devices/docg3.c ret = doc_set_extra_page_mode(docg3); docg3 480 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_READ); docg3 482 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_PROG_BLOCK_ADDR); docg3 483 drivers/mtd/devices/docg3.c doc_setup_addr_sector(docg3, sector); docg3 486 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_PROG_BLOCK_ADDR); docg3 487 drivers/mtd/devices/docg3.c doc_setup_addr_sector(docg3, sector); docg3 488 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 505 drivers/mtd/devices/docg3.c static int doc_write_seek(struct docg3 *docg3, int block0, int block1, int page, docg3 513 drivers/mtd/devices/docg3.c doc_set_reliable_mode(docg3); docg3 516 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_SET_PLANE1); docg3 517 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_READ_PLANE1); docg3 518 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 520 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_SET_PLANE2); docg3 521 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_READ_PLANE2); docg3 522 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 525 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_PAGE_SETUP); docg3 526 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_PROG_CYCLE1); docg3 529 drivers/mtd/devices/docg3.c doc_setup_writeaddr_sector(docg3, sector, ofs); docg3 531 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_PROG_CYCLE3); docg3 532 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 533 drivers/mtd/devices/docg3.c ret = doc_wait_ready(docg3); docg3 537 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_PROG_CYCLE1); docg3 539 drivers/mtd/devices/docg3.c doc_setup_writeaddr_sector(docg3, sector, ofs); docg3 540 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 557 drivers/mtd/devices/docg3.c static int doc_read_page_ecc_init(struct docg3 *docg3, int len) docg3 559 drivers/mtd/devices/docg3.c doc_writew(docg3, DOC_ECCCONF0_READ_MODE docg3 563 drivers/mtd/devices/docg3.c doc_delay(docg3, 4); docg3 564 drivers/mtd/devices/docg3.c doc_register_readb(docg3, DOC_FLASHCONTROL); docg3 565 drivers/mtd/devices/docg3.c return doc_wait_ready(docg3); docg3 578 drivers/mtd/devices/docg3.c static int doc_write_page_ecc_init(struct docg3 *docg3, int len) docg3 580 drivers/mtd/devices/docg3.c doc_writew(docg3, DOC_ECCCONF0_WRITE_MODE docg3 584 drivers/mtd/devices/docg3.c doc_delay(docg3, 4); docg3 585 drivers/mtd/devices/docg3.c doc_register_readb(docg3, DOC_FLASHCONTROL); docg3 586 drivers/mtd/devices/docg3.c return doc_wait_ready(docg3); docg3 596 drivers/mtd/devices/docg3.c static void doc_ecc_disable(struct docg3 *docg3) docg3 598 drivers/mtd/devices/docg3.c doc_writew(docg3, DOC_ECCCONF0_READ_MODE, DOC_ECCCONF0); docg3 599 drivers/mtd/devices/docg3.c doc_delay(docg3, 4); docg3 610 drivers/mtd/devices/docg3.c static void doc_hamming_ecc_init(struct docg3 *docg3, int nb_bytes) docg3 614 drivers/mtd/devices/docg3.c ecc_conf1 = doc_register_readb(docg3, DOC_ECCCONF1); docg3 617 drivers/mtd/devices/docg3.c doc_writeb(docg3, ecc_conf1, DOC_ECCCONF1); docg3 643 drivers/mtd/devices/docg3.c static int doc_ecc_bch_fix_data(struct docg3 *docg3, void *buf, u8 *hwecc) docg3 650 drivers/mtd/devices/docg3.c numerrs = decode_bch(docg3->cascade->bch, NULL, docg3 695 drivers/mtd/devices/docg3.c static int doc_read_page_prepare(struct docg3 *docg3, int block0, int block1, docg3 707 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, docg3->device_id); docg3 708 drivers/mtd/devices/docg3.c ret = doc_reset_seq(docg3); docg3 713 drivers/mtd/devices/docg3.c ret = doc_read_seek(docg3, block0, block1, page, wear_area, offset); docg3 717 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_READ_ALL_PLANES); docg3 718 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 719 drivers/mtd/devices/docg3.c doc_wait_ready(docg3); docg3 721 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_SET_ADDR_READ); docg3 722 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 725 drivers/mtd/devices/docg3.c doc_flash_address(docg3, offset >> 2); docg3 726 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 727 drivers/mtd/devices/docg3.c doc_wait_ready(docg3); docg3 729 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_READ_FLASH); docg3 733 drivers/mtd/devices/docg3.c doc_writeb(docg3, 0, DOC_DATAEND); docg3 734 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 753 drivers/mtd/devices/docg3.c static int doc_read_page_getbytes(struct docg3 *docg3, int len, u_char *buf, docg3 757 drivers/mtd/devices/docg3.c doc_read_data_area(docg3, buf, 1, first); docg3 758 drivers/mtd/devices/docg3.c doc_read_data_area(docg3, buf ? buf + 1 : buf, len - 1, 0); docg3 760 drivers/mtd/devices/docg3.c doc_read_data_area(docg3, buf, len, first); docg3 762 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 773 drivers/mtd/devices/docg3.c static void doc_write_page_putbytes(struct docg3 *docg3, int len, docg3 776 drivers/mtd/devices/docg3.c doc_write_data_area(docg3, buf, len); docg3 777 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 785 drivers/mtd/devices/docg3.c static void doc_get_bch_hw_ecc(struct docg3 *docg3, u8 *hwecc) docg3 790 drivers/mtd/devices/docg3.c hwecc[i] = doc_register_readb(docg3, DOC_BCH_HW_ECC(i)); docg3 797 drivers/mtd/devices/docg3.c static void doc_page_finish(struct docg3 *docg3) docg3 799 drivers/mtd/devices/docg3.c doc_writeb(docg3, 0, DOC_DATAEND); docg3 800 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 811 drivers/mtd/devices/docg3.c static void doc_read_page_finish(struct docg3 *docg3) docg3 813 drivers/mtd/devices/docg3.c doc_page_finish(docg3); docg3 814 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, 0); docg3 868 drivers/mtd/devices/docg3.c struct docg3 *docg3 = mtd->priv; docg3 897 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 900 drivers/mtd/devices/docg3.c docg3->reliable); docg3 903 drivers/mtd/devices/docg3.c ret = doc_read_page_prepare(docg3, block0, block1, page, ofs); docg3 906 drivers/mtd/devices/docg3.c ret = doc_read_page_ecc_init(docg3, DOC_ECC_BCH_TOTAL_BYTES); docg3 909 drivers/mtd/devices/docg3.c ret = doc_read_page_getbytes(docg3, skip, NULL, 1, 0); docg3 912 drivers/mtd/devices/docg3.c ret = doc_read_page_getbytes(docg3, nbdata, buf, 0, skip % 2); docg3 915 drivers/mtd/devices/docg3.c doc_read_page_getbytes(docg3, docg3 918 drivers/mtd/devices/docg3.c ret = doc_read_page_getbytes(docg3, nboob, oobbuf, 0, 0); docg3 921 drivers/mtd/devices/docg3.c doc_read_page_getbytes(docg3, DOC_LAYOUT_OOB_SIZE - nboob, docg3 924 drivers/mtd/devices/docg3.c doc_get_bch_hw_ecc(docg3, hwecc); docg3 925 drivers/mtd/devices/docg3.c eccconf1 = doc_register_readb(docg3, DOC_ECCCONF1); docg3 937 drivers/mtd/devices/docg3.c if (is_prot_seq_error(docg3)) docg3 945 drivers/mtd/devices/docg3.c ret = doc_ecc_bch_fix_data(docg3, buf, hwecc); docg3 957 drivers/mtd/devices/docg3.c doc_read_page_finish(docg3); docg3 969 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 972 drivers/mtd/devices/docg3.c doc_read_page_finish(docg3); docg3 976 drivers/mtd/devices/docg3.c static int doc_reload_bbt(struct docg3 *docg3) docg3 980 drivers/mtd/devices/docg3.c u_char *buf = docg3->bbt; docg3 982 drivers/mtd/devices/docg3.c nbpages = DIV_ROUND_UP(docg3->max_block + 1, 8 * DOC_LAYOUT_PAGE_SIZE); docg3 984 drivers/mtd/devices/docg3.c ret = doc_read_page_prepare(docg3, block, block + 1, docg3 987 drivers/mtd/devices/docg3.c ret = doc_read_page_ecc_init(docg3, docg3 990 drivers/mtd/devices/docg3.c doc_read_page_getbytes(docg3, DOC_LAYOUT_PAGE_SIZE, docg3 994 drivers/mtd/devices/docg3.c doc_read_page_finish(docg3); docg3 1007 drivers/mtd/devices/docg3.c struct docg3 *docg3 = mtd->priv; docg3 1011 drivers/mtd/devices/docg3.c docg3->reliable); docg3 1017 drivers/mtd/devices/docg3.c if (block1 > docg3->max_block) docg3 1020 drivers/mtd/devices/docg3.c is_good = docg3->bbt[block0 >> 3] & (1 << (block0 & 0x7)); docg3 1035 drivers/mtd/devices/docg3.c static int doc_get_erase_count(struct docg3 *docg3, loff_t from) docg3 1044 drivers/mtd/devices/docg3.c calc_block_sector(from, &block0, &block1, &page, &ofs, docg3->reliable); docg3 1045 drivers/mtd/devices/docg3.c if (block1 > docg3->max_block) docg3 1048 drivers/mtd/devices/docg3.c ret = doc_reset_seq(docg3); docg3 1050 drivers/mtd/devices/docg3.c ret = doc_read_page_prepare(docg3, block0, block1, page, docg3 1053 drivers/mtd/devices/docg3.c ret = doc_read_page_getbytes(docg3, DOC_LAYOUT_WEAR_SIZE, docg3 1055 drivers/mtd/devices/docg3.c doc_read_page_finish(docg3); docg3 1076 drivers/mtd/devices/docg3.c static int doc_get_op_status(struct docg3 *docg3) docg3 1080 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_PLANES_STATUS); docg3 1081 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_PLANES_STATUS); docg3 1082 drivers/mtd/devices/docg3.c doc_delay(docg3, 5); docg3 1084 drivers/mtd/devices/docg3.c doc_ecc_disable(docg3); docg3 1085 drivers/mtd/devices/docg3.c doc_read_data_area(docg3, &status, 1, 1); docg3 1099 drivers/mtd/devices/docg3.c static int doc_write_erase_wait_status(struct docg3 *docg3) docg3 1103 drivers/mtd/devices/docg3.c for (i = 0; !doc_is_ready(docg3) && i < 5; i++) docg3 1105 drivers/mtd/devices/docg3.c if (!doc_is_ready(docg3)) { docg3 1111 drivers/mtd/devices/docg3.c status = doc_get_op_status(docg3); docg3 1119 drivers/mtd/devices/docg3.c doc_page_finish(docg3); docg3 1134 drivers/mtd/devices/docg3.c static int doc_erase_block(struct docg3 *docg3, int block0, int block1) docg3 1139 drivers/mtd/devices/docg3.c ret = doc_reset_seq(docg3); docg3 1143 drivers/mtd/devices/docg3.c doc_set_reliable_mode(docg3); docg3 1144 drivers/mtd/devices/docg3.c doc_flash_sequence(docg3, DOC_SEQ_ERASE); docg3 1147 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_PROG_BLOCK_ADDR); docg3 1148 drivers/mtd/devices/docg3.c doc_setup_addr_sector(docg3, sector); docg3 1150 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_PROG_BLOCK_ADDR); docg3 1151 drivers/mtd/devices/docg3.c doc_setup_addr_sector(docg3, sector); docg3 1152 drivers/mtd/devices/docg3.c doc_delay(docg3, 1); docg3 1154 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_ERASECYCLE2); docg3 1155 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 1157 drivers/mtd/devices/docg3.c if (is_prot_seq_error(docg3)) { docg3 1162 drivers/mtd/devices/docg3.c return doc_write_erase_wait_status(docg3); docg3 1178 drivers/mtd/devices/docg3.c struct docg3 *docg3 = mtd->priv; docg3 1185 drivers/mtd/devices/docg3.c &ofs, docg3->reliable); docg3 1190 drivers/mtd/devices/docg3.c docg3->reliable); docg3 1191 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 1192 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, docg3->device_id); docg3 1193 drivers/mtd/devices/docg3.c doc_set_reliable_mode(docg3); docg3 1195 drivers/mtd/devices/docg3.c ret = doc_erase_block(docg3, block0, block1); docg3 1199 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 1223 drivers/mtd/devices/docg3.c static int doc_write_page(struct docg3 *docg3, loff_t to, const u_char *buf, docg3 1230 drivers/mtd/devices/docg3.c calc_block_sector(to, &block0, &block1, &page, &ofs, docg3->reliable); docg3 1232 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, docg3->device_id); docg3 1233 drivers/mtd/devices/docg3.c ret = doc_reset_seq(docg3); docg3 1238 drivers/mtd/devices/docg3.c ret = doc_write_seek(docg3, block0, block1, page, ofs); docg3 1242 drivers/mtd/devices/docg3.c doc_write_page_ecc_init(docg3, DOC_ECC_BCH_TOTAL_BYTES); docg3 1243 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 1244 drivers/mtd/devices/docg3.c doc_write_page_putbytes(docg3, DOC_LAYOUT_PAGE_SIZE, buf); docg3 1247 drivers/mtd/devices/docg3.c doc_write_page_putbytes(docg3, DOC_LAYOUT_OOB_PAGEINFO_SZ, oob); docg3 1248 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 1251 drivers/mtd/devices/docg3.c hamming = doc_register_readb(docg3, DOC_HAMMINGPARITY); docg3 1252 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 1253 drivers/mtd/devices/docg3.c doc_write_page_putbytes(docg3, DOC_LAYOUT_OOB_HAMMING_SZ, docg3 1255 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 1257 drivers/mtd/devices/docg3.c doc_get_bch_hw_ecc(docg3, hwecc); docg3 1258 drivers/mtd/devices/docg3.c doc_write_page_putbytes(docg3, DOC_LAYOUT_OOB_BCH_SZ, hwecc); docg3 1259 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 1261 drivers/mtd/devices/docg3.c doc_write_page_putbytes(docg3, DOC_LAYOUT_OOB_UNUSED_SZ, oob); docg3 1264 drivers/mtd/devices/docg3.c doc_write_page_putbytes(docg3, DOC_LAYOUT_OOB_SIZE, oob); docg3 1266 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 1267 drivers/mtd/devices/docg3.c doc_page_finish(docg3); docg3 1268 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 1269 drivers/mtd/devices/docg3.c doc_flash_command(docg3, DOC_CMD_PROG_CYCLE2); docg3 1270 drivers/mtd/devices/docg3.c doc_delay(docg3, 2); docg3 1276 drivers/mtd/devices/docg3.c ret = doc_write_erase_wait_status(docg3); docg3 1279 drivers/mtd/devices/docg3.c doc_read_page_finish(docg3); docg3 1336 drivers/mtd/devices/docg3.c static int doc_backup_oob(struct docg3 *docg3, loff_t to, docg3 1347 drivers/mtd/devices/docg3.c docg3->oob_write_ofs = to; docg3 1348 drivers/mtd/devices/docg3.c docg3->oob_autoecc = autoecc; docg3 1350 drivers/mtd/devices/docg3.c doc_fill_autooob(docg3->oob_write_buf, ops->oobbuf); docg3 1353 drivers/mtd/devices/docg3.c memcpy(docg3->oob_write_buf, ops->oobbuf, DOC_LAYOUT_OOB_SIZE); docg3 1377 drivers/mtd/devices/docg3.c struct docg3 *docg3 = mtd->priv; docg3 1422 drivers/mtd/devices/docg3.c return doc_backup_oob(docg3, ofs, ops); docg3 1428 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 1431 drivers/mtd/devices/docg3.c if (ofs == docg3->oob_write_ofs) docg3 1432 drivers/mtd/devices/docg3.c memcpy(oob, docg3->oob_write_buf, DOC_LAYOUT_OOB_SIZE); docg3 1437 drivers/mtd/devices/docg3.c ret = doc_write_page(docg3, ofs, buf, oob, autoecc); docg3 1450 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, 0); docg3 1451 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 1455 drivers/mtd/devices/docg3.c static struct docg3 *sysfs_dev2docg3(struct device *dev, docg3 1471 drivers/mtd/devices/docg3.c struct docg3 *docg3 = sysfs_dev2docg3(dev, attr); docg3 1474 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 1475 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, docg3->device_id); docg3 1476 drivers/mtd/devices/docg3.c dps0 = doc_register_readb(docg3, DOC_DPS0_STATUS); docg3 1477 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, 0); docg3 1478 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 1486 drivers/mtd/devices/docg3.c struct docg3 *docg3 = sysfs_dev2docg3(dev, attr); docg3 1489 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 1490 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, docg3->device_id); docg3 1491 drivers/mtd/devices/docg3.c dps1 = doc_register_readb(docg3, DOC_DPS1_STATUS); docg3 1492 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, 0); docg3 1493 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 1502 drivers/mtd/devices/docg3.c struct docg3 *docg3 = sysfs_dev2docg3(dev, attr); docg3 1508 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 1509 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, docg3->device_id); docg3 1511 drivers/mtd/devices/docg3.c doc_writeb(docg3, buf[i], DOC_DPS0_KEY); docg3 1512 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, 0); docg3 1513 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 1521 drivers/mtd/devices/docg3.c struct docg3 *docg3 = sysfs_dev2docg3(dev, attr); docg3 1527 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 1528 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, docg3->device_id); docg3 1530 drivers/mtd/devices/docg3.c doc_writeb(docg3, buf[i], DOC_DPS1_KEY); docg3 1531 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, 0); docg3 1532 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 1594 drivers/mtd/devices/docg3.c struct docg3 *docg3 = (struct docg3 *)s->private; docg3 1598 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 1599 drivers/mtd/devices/docg3.c fctrl = doc_register_readb(docg3, DOC_FLASHCONTROL); docg3 1600 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 1616 drivers/mtd/devices/docg3.c struct docg3 *docg3 = (struct docg3 *)s->private; docg3 1620 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 1621 drivers/mtd/devices/docg3.c pctrl = doc_register_readb(docg3, DOC_ASICMODE); docg3 1623 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 1653 drivers/mtd/devices/docg3.c struct docg3 *docg3 = (struct docg3 *)s->private; docg3 1656 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 1657 drivers/mtd/devices/docg3.c id = doc_register_readb(docg3, DOC_DEVICESELECT); docg3 1658 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 1667 drivers/mtd/devices/docg3.c struct docg3 *docg3 = (struct docg3 *)s->private; docg3 1670 drivers/mtd/devices/docg3.c mutex_lock(&docg3->cascade->lock); docg3 1671 drivers/mtd/devices/docg3.c protect = doc_register_readb(docg3, DOC_PROTECTION); docg3 1672 drivers/mtd/devices/docg3.c dps0 = doc_register_readb(docg3, DOC_DPS0_STATUS); docg3 1673 drivers/mtd/devices/docg3.c dps0_low = doc_register_readw(docg3, DOC_DPS0_ADDRLOW); docg3 1674 drivers/mtd/devices/docg3.c dps0_high = doc_register_readw(docg3, DOC_DPS0_ADDRHIGH); docg3 1675 drivers/mtd/devices/docg3.c dps1 = doc_register_readb(docg3, DOC_DPS1_STATUS); docg3 1676 drivers/mtd/devices/docg3.c dps1_low = doc_register_readw(docg3, DOC_DPS1_ADDRLOW); docg3 1677 drivers/mtd/devices/docg3.c dps1_high = doc_register_readw(docg3, DOC_DPS1_ADDRHIGH); docg3 1678 drivers/mtd/devices/docg3.c mutex_unlock(&docg3->cascade->lock); docg3 1720 drivers/mtd/devices/docg3.c struct docg3 *docg3 = floor->priv; docg3 1730 drivers/mtd/devices/docg3.c debugfs_create_file("docg3_flashcontrol", S_IRUSR, root, docg3, docg3 1732 drivers/mtd/devices/docg3.c debugfs_create_file("docg3_asic_mode", S_IRUSR, root, docg3, docg3 1734 drivers/mtd/devices/docg3.c debugfs_create_file("docg3_device_id", S_IRUSR, root, docg3, docg3 1736 drivers/mtd/devices/docg3.c debugfs_create_file("docg3_protection", S_IRUSR, root, docg3, docg3 1747 drivers/mtd/devices/docg3.c struct docg3 *docg3 = mtd->priv; docg3 1750 drivers/mtd/devices/docg3.c cfg = doc_register_readb(docg3, DOC_CONFIGURATION); docg3 1751 drivers/mtd/devices/docg3.c docg3->if_cfg = (cfg & DOC_CONF_IF_CFG ? 1 : 0); docg3 1752 drivers/mtd/devices/docg3.c docg3->reliable = reliable_mode; docg3 1756 drivers/mtd/devices/docg3.c mtd->name = devm_kasprintf(docg3->dev, GFP_KERNEL, "docg3.%d", docg3 1757 drivers/mtd/devices/docg3.c docg3->device_id); docg3 1760 drivers/mtd/devices/docg3.c docg3->max_block = 2047; docg3 1765 drivers/mtd/devices/docg3.c mtd->size = (docg3->max_block + 1) * DOC_LAYOUT_BLOCK_SIZE; docg3 1766 drivers/mtd/devices/docg3.c if (docg3->reliable == 2) docg3 1769 drivers/mtd/devices/docg3.c if (docg3->reliable == 2) docg3 1802 drivers/mtd/devices/docg3.c struct docg3 *docg3; docg3 1806 drivers/mtd/devices/docg3.c docg3 = kzalloc(sizeof(struct docg3), GFP_KERNEL); docg3 1807 drivers/mtd/devices/docg3.c if (!docg3) docg3 1812 drivers/mtd/devices/docg3.c mtd->priv = docg3; docg3 1814 drivers/mtd/devices/docg3.c bbt_nbpages = DIV_ROUND_UP(docg3->max_block + 1, docg3 1816 drivers/mtd/devices/docg3.c docg3->bbt = kcalloc(DOC_LAYOUT_PAGE_SIZE, bbt_nbpages, GFP_KERNEL); docg3 1817 drivers/mtd/devices/docg3.c if (!docg3->bbt) docg3 1820 drivers/mtd/devices/docg3.c docg3->dev = dev; docg3 1821 drivers/mtd/devices/docg3.c docg3->device_id = floor; docg3 1822 drivers/mtd/devices/docg3.c docg3->cascade = cascade; docg3 1823 drivers/mtd/devices/docg3.c doc_set_device_id(docg3, docg3->device_id); docg3 1825 drivers/mtd/devices/docg3.c doc_set_asic_mode(docg3, DOC_ASICMODE_RESET); docg3 1826 drivers/mtd/devices/docg3.c doc_set_asic_mode(docg3, DOC_ASICMODE_NORMAL); docg3 1828 drivers/mtd/devices/docg3.c chip_id = doc_register_readw(docg3, DOC_CHIPID); docg3 1829 drivers/mtd/devices/docg3.c chip_id_inv = doc_register_readw(docg3, DOC_CHIPID_INV); docg3 1839 drivers/mtd/devices/docg3.c docg3->cascade->base, floor); docg3 1850 drivers/mtd/devices/docg3.c doc_hamming_ecc_init(docg3, DOC_LAYOUT_OOB_PAGEINFO_SZ); docg3 1851 drivers/mtd/devices/docg3.c doc_reload_bbt(docg3); docg3 1855 drivers/mtd/devices/docg3.c kfree(docg3->bbt); docg3 1859 drivers/mtd/devices/docg3.c kfree(docg3); docg3 1870 drivers/mtd/devices/docg3.c struct docg3 *docg3 = mtd->priv; docg3 1873 drivers/mtd/devices/docg3.c kfree(docg3->bbt); docg3 1874 drivers/mtd/devices/docg3.c kfree(docg3); docg3 1889 drivers/mtd/devices/docg3.c struct docg3 *docg3; docg3 1894 drivers/mtd/devices/docg3.c docg3 = mtd->priv; docg3 1898 drivers/mtd/devices/docg3.c doc_readb(docg3, DOC_IOSPACE_IPL); docg3 1916 drivers/mtd/devices/docg3.c struct docg3 *docg3; docg3 1925 drivers/mtd/devices/docg3.c docg3 = mtd->priv; docg3 1927 drivers/mtd/devices/docg3.c doc_writeb(docg3, floor, DOC_DEVICESELECT); docg3 1928 drivers/mtd/devices/docg3.c ctrl = doc_register_readb(docg3, DOC_FLASHCONTROL); docg3 1930 drivers/mtd/devices/docg3.c doc_writeb(docg3, ctrl, DOC_FLASHCONTROL); docg3 1934 drivers/mtd/devices/docg3.c pwr_down = doc_register_readb(docg3, DOC_POWERMODE); docg3 1949 drivers/mtd/devices/docg3.c docg3 = mtd->priv; docg3 1950 drivers/mtd/devices/docg3.c doc_set_asic_mode(docg3, DOC_ASICMODE_POWERDOWN); docg3 2040 drivers/mtd/devices/docg3.c struct docg3 *docg3 = cascade->floors[0]->priv; docg3 2048 drivers/mtd/devices/docg3.c free_bch(docg3->cascade->bch); docg3 302 drivers/mtd/devices/docg3.h #define doc_err(fmt, arg...) dev_err(docg3->dev, (fmt), ## arg) docg3 303 drivers/mtd/devices/docg3.h #define doc_info(fmt, arg...) dev_info(docg3->dev, (fmt), ## arg) docg3 304 drivers/mtd/devices/docg3.h #define doc_dbg(fmt, arg...) dev_dbg(docg3->dev, (fmt), ## arg) docg3 305 drivers/mtd/devices/docg3.h #define doc_vdbg(fmt, arg...) dev_vdbg(docg3->dev, (fmt), ## arg) docg3 312 drivers/mtd/devices/docg3.h #define TRACE_SYSTEM docg3 docg3 342 drivers/mtd/devices/docg3.h #define TRACE_INCLUDE_FILE docg3