Lines Matching refs:this

82 	struct gpmi_nand_data *this = cookie;  in bch_irq()  local
84 gpmi_clear_bch(this); in bch_irq()
85 complete(&this->bch_done); in bch_irq()
107 static inline int get_ecc_strength(struct gpmi_nand_data *this) in get_ecc_strength() argument
109 struct bch_geometry *geo = &this->bch_geometry; in get_ecc_strength()
110 struct mtd_info *mtd = &this->mtd; in get_ecc_strength()
120 static inline bool gpmi_check_ecc(struct gpmi_nand_data *this) in gpmi_check_ecc() argument
122 struct bch_geometry *geo = &this->bch_geometry; in gpmi_check_ecc()
125 if (GPMI_IS_MX23(this) || GPMI_IS_MX28(this)) { in gpmi_check_ecc()
130 return geo->ecc_strength <= this->devdata->bch_max_ecc_strength; in gpmi_check_ecc()
139 static bool set_geometry_by_ecc_info(struct gpmi_nand_data *this) in set_geometry_by_ecc_info() argument
141 struct bch_geometry *geo = &this->bch_geometry; in set_geometry_by_ecc_info()
142 struct mtd_info *mtd = &this->mtd; in set_geometry_by_ecc_info()
158 dev_err(this->dev, in set_geometry_by_ecc_info()
165 if (!gpmi_check_ecc(this)) in set_geometry_by_ecc_info()
170 dev_err(this->dev, in set_geometry_by_ecc_info()
244 if (!this->swap_block_mark) in set_geometry_by_ecc_info()
257 static int legacy_set_geometry(struct gpmi_nand_data *this) in legacy_set_geometry() argument
259 struct bch_geometry *geo = &this->bch_geometry; in legacy_set_geometry()
260 struct mtd_info *mtd = &this->mtd; in legacy_set_geometry()
285 geo->ecc_strength = get_ecc_strength(this); in legacy_set_geometry()
286 if (!gpmi_check_ecc(this)) { in legacy_set_geometry()
287 dev_err(this->dev, in legacy_set_geometry()
290 this->devdata->bch_max_ecc_strength); in legacy_set_geometry()
309 if (!this->swap_block_mark) in legacy_set_geometry()
367 int common_nfc_set_geometry(struct gpmi_nand_data *this) in common_nfc_set_geometry() argument
369 if (of_property_read_bool(this->dev->of_node, "fsl,use-minimum-ecc") in common_nfc_set_geometry()
370 && set_geometry_by_ecc_info(this)) in common_nfc_set_geometry()
372 return legacy_set_geometry(this); in common_nfc_set_geometry()
375 struct dma_chan *get_dma_chan(struct gpmi_nand_data *this) in get_dma_chan() argument
378 return this->dma_chans[0]; in get_dma_chan()
382 void prepare_data_dma(struct gpmi_nand_data *this, enum dma_data_direction dr) in prepare_data_dma() argument
384 struct scatterlist *sgl = &this->data_sgl; in prepare_data_dma()
388 if (virt_addr_valid(this->upper_buf) && in prepare_data_dma()
389 !object_is_on_stack(this->upper_buf)) { in prepare_data_dma()
390 sg_init_one(sgl, this->upper_buf, this->upper_len); in prepare_data_dma()
391 ret = dma_map_sg(this->dev, sgl, 1, dr); in prepare_data_dma()
395 this->direct_dma_map_ok = true; in prepare_data_dma()
401 sg_init_one(sgl, this->data_buffer_dma, this->upper_len); in prepare_data_dma()
404 memcpy(this->data_buffer_dma, this->upper_buf, this->upper_len); in prepare_data_dma()
406 dma_map_sg(this->dev, sgl, 1, dr); in prepare_data_dma()
408 this->direct_dma_map_ok = false; in prepare_data_dma()
414 struct gpmi_nand_data *this = param; in dma_irq_callback() local
415 struct completion *dma_c = &this->dma_done; in dma_irq_callback()
417 switch (this->dma_type) { in dma_irq_callback()
419 dma_unmap_sg(this->dev, &this->cmd_sgl, 1, DMA_TO_DEVICE); in dma_irq_callback()
423 dma_unmap_sg(this->dev, &this->data_sgl, 1, DMA_FROM_DEVICE); in dma_irq_callback()
424 if (this->direct_dma_map_ok == false) in dma_irq_callback()
425 memcpy(this->upper_buf, this->data_buffer_dma, in dma_irq_callback()
426 this->upper_len); in dma_irq_callback()
430 dma_unmap_sg(this->dev, &this->data_sgl, 1, DMA_TO_DEVICE); in dma_irq_callback()
439 dev_err(this->dev, "in wrong DMA operation.\n"); in dma_irq_callback()
445 int start_dma_without_bch_irq(struct gpmi_nand_data *this, in start_dma_without_bch_irq() argument
448 struct completion *dma_c = &this->dma_done; in start_dma_without_bch_irq()
454 desc->callback_param = this; in start_dma_without_bch_irq()
456 dma_async_issue_pending(get_dma_chan(this)); in start_dma_without_bch_irq()
461 dev_err(this->dev, "DMA timeout, last DMA :%d\n", in start_dma_without_bch_irq()
462 this->last_dma_type); in start_dma_without_bch_irq()
463 gpmi_dump_info(this); in start_dma_without_bch_irq()
476 int start_dma_with_bch_irq(struct gpmi_nand_data *this, in start_dma_with_bch_irq() argument
479 struct completion *bch_c = &this->bch_done; in start_dma_with_bch_irq()
486 start_dma_without_bch_irq(this, desc); in start_dma_with_bch_irq()
491 dev_err(this->dev, "BCH timeout, last DMA :%d\n", in start_dma_with_bch_irq()
492 this->last_dma_type); in start_dma_with_bch_irq()
493 gpmi_dump_info(this); in start_dma_with_bch_irq()
499 static int acquire_register_block(struct gpmi_nand_data *this, in acquire_register_block() argument
502 struct platform_device *pdev = this->pdev; in acquire_register_block()
503 struct resources *res = &this->resources; in acquire_register_block()
517 dev_err(this->dev, "unknown resource name : %s\n", res_name); in acquire_register_block()
522 static int acquire_bch_irq(struct gpmi_nand_data *this, irq_handler_t irq_h) in acquire_bch_irq() argument
524 struct platform_device *pdev = this->pdev; in acquire_bch_irq()
531 dev_err(this->dev, "Can't get resource for %s\n", res_name); in acquire_bch_irq()
535 err = devm_request_irq(this->dev, r->start, irq_h, 0, res_name, this); in acquire_bch_irq()
537 dev_err(this->dev, "error requesting BCH IRQ\n"); in acquire_bch_irq()
542 static void release_dma_channels(struct gpmi_nand_data *this) in release_dma_channels() argument
546 if (this->dma_chans[i]) { in release_dma_channels()
547 dma_release_channel(this->dma_chans[i]); in release_dma_channels()
548 this->dma_chans[i] = NULL; in release_dma_channels()
552 static int acquire_dma_channels(struct gpmi_nand_data *this) in acquire_dma_channels() argument
554 struct platform_device *pdev = this->pdev; in acquire_dma_channels()
560 dev_err(this->dev, "Failed to request DMA channel.\n"); in acquire_dma_channels()
564 this->dma_chans[0] = dma_chan; in acquire_dma_channels()
568 release_dma_channels(this); in acquire_dma_channels()
576 static int gpmi_get_clks(struct gpmi_nand_data *this) in gpmi_get_clks() argument
578 struct resources *r = &this->resources; in gpmi_get_clks()
584 r->clock[0] = devm_clk_get(this->dev, "gpmi_io"); in gpmi_get_clks()
591 if (GPMI_IS_MX6(this)) in gpmi_get_clks()
600 clk = devm_clk_get(this->dev, extra_clks[i - 1]); in gpmi_get_clks()
609 if (GPMI_IS_MX6(this)) in gpmi_get_clks()
621 dev_dbg(this->dev, "failed in finding the clocks.\n"); in gpmi_get_clks()
625 static int acquire_resources(struct gpmi_nand_data *this) in acquire_resources() argument
629 ret = acquire_register_block(this, GPMI_NAND_GPMI_REGS_ADDR_RES_NAME); in acquire_resources()
633 ret = acquire_register_block(this, GPMI_NAND_BCH_REGS_ADDR_RES_NAME); in acquire_resources()
637 ret = acquire_bch_irq(this, bch_irq); in acquire_resources()
641 ret = acquire_dma_channels(this); in acquire_resources()
645 ret = gpmi_get_clks(this); in acquire_resources()
651 release_dma_channels(this); in acquire_resources()
656 static void release_resources(struct gpmi_nand_data *this) in release_resources() argument
658 release_dma_channels(this); in release_resources()
661 static int init_hardware(struct gpmi_nand_data *this) in init_hardware() argument
681 ret = gpmi_init(this); in init_hardware()
685 this->timing = safe_timing; in init_hardware()
689 static int read_page_prepare(struct gpmi_nand_data *this, in read_page_prepare() argument
694 struct device *dev = this->dev; in read_page_prepare()
710 this->direct_dma_map_ok = true; in read_page_prepare()
717 this->direct_dma_map_ok = false; in read_page_prepare()
721 static inline void read_page_end(struct gpmi_nand_data *this, in read_page_end() argument
726 if (this->direct_dma_map_ok) in read_page_end()
727 dma_unmap_single(this->dev, used_phys, length, DMA_FROM_DEVICE); in read_page_end()
730 static inline void read_page_swap_end(struct gpmi_nand_data *this, in read_page_swap_end() argument
735 if (!this->direct_dma_map_ok) in read_page_swap_end()
739 static int send_page_prepare(struct gpmi_nand_data *this, in send_page_prepare() argument
744 struct device *dev = this->dev; in send_page_prepare()
774 static void send_page_end(struct gpmi_nand_data *this, in send_page_end() argument
779 struct device *dev = this->dev; in send_page_end()
784 static void gpmi_free_dma_buffer(struct gpmi_nand_data *this) in gpmi_free_dma_buffer() argument
786 struct device *dev = this->dev; in gpmi_free_dma_buffer()
788 if (this->page_buffer_virt && virt_addr_valid(this->page_buffer_virt)) in gpmi_free_dma_buffer()
789 dma_free_coherent(dev, this->page_buffer_size, in gpmi_free_dma_buffer()
790 this->page_buffer_virt, in gpmi_free_dma_buffer()
791 this->page_buffer_phys); in gpmi_free_dma_buffer()
792 kfree(this->cmd_buffer); in gpmi_free_dma_buffer()
793 kfree(this->data_buffer_dma); in gpmi_free_dma_buffer()
794 kfree(this->raw_buffer); in gpmi_free_dma_buffer()
796 this->cmd_buffer = NULL; in gpmi_free_dma_buffer()
797 this->data_buffer_dma = NULL; in gpmi_free_dma_buffer()
798 this->page_buffer_virt = NULL; in gpmi_free_dma_buffer()
799 this->page_buffer_size = 0; in gpmi_free_dma_buffer()
803 static int gpmi_alloc_dma_buffer(struct gpmi_nand_data *this) in gpmi_alloc_dma_buffer() argument
805 struct bch_geometry *geo = &this->bch_geometry; in gpmi_alloc_dma_buffer()
806 struct device *dev = this->dev; in gpmi_alloc_dma_buffer()
807 struct mtd_info *mtd = &this->mtd; in gpmi_alloc_dma_buffer()
810 this->cmd_buffer = kzalloc(PAGE_SIZE, GFP_DMA | GFP_KERNEL); in gpmi_alloc_dma_buffer()
811 if (this->cmd_buffer == NULL) in gpmi_alloc_dma_buffer()
822 this->data_buffer_dma = kzalloc(mtd->writesize ?: PAGE_SIZE, in gpmi_alloc_dma_buffer()
824 if (this->data_buffer_dma == NULL) in gpmi_alloc_dma_buffer()
835 this->page_buffer_size = geo->payload_size + geo->auxiliary_size; in gpmi_alloc_dma_buffer()
836 this->page_buffer_virt = dma_alloc_coherent(dev, this->page_buffer_size, in gpmi_alloc_dma_buffer()
837 &this->page_buffer_phys, GFP_DMA); in gpmi_alloc_dma_buffer()
838 if (!this->page_buffer_virt) in gpmi_alloc_dma_buffer()
841 this->raw_buffer = kzalloc(mtd->writesize + mtd->oobsize, GFP_KERNEL); in gpmi_alloc_dma_buffer()
842 if (!this->raw_buffer) in gpmi_alloc_dma_buffer()
846 this->payload_virt = this->page_buffer_virt; in gpmi_alloc_dma_buffer()
847 this->payload_phys = this->page_buffer_phys; in gpmi_alloc_dma_buffer()
848 this->auxiliary_virt = this->payload_virt + geo->payload_size; in gpmi_alloc_dma_buffer()
849 this->auxiliary_phys = this->payload_phys + geo->payload_size; in gpmi_alloc_dma_buffer()
853 gpmi_free_dma_buffer(this); in gpmi_alloc_dma_buffer()
860 struct gpmi_nand_data *this = chip->priv; in gpmi_cmd_ctrl() local
876 this->cmd_buffer[this->command_length++] = data; in gpmi_cmd_ctrl()
880 if (!this->command_length) in gpmi_cmd_ctrl()
883 ret = gpmi_send_command(this); in gpmi_cmd_ctrl()
885 dev_err(this->dev, "Chip: %u, Error %d\n", in gpmi_cmd_ctrl()
886 this->current_chip, ret); in gpmi_cmd_ctrl()
888 this->command_length = 0; in gpmi_cmd_ctrl()
894 struct gpmi_nand_data *this = chip->priv; in gpmi_dev_ready() local
896 return gpmi_is_ready(this, this->current_chip); in gpmi_dev_ready()
902 struct gpmi_nand_data *this = chip->priv; in gpmi_select_chip() local
904 if ((this->current_chip < 0) && (chipnr >= 0)) in gpmi_select_chip()
905 gpmi_begin(this); in gpmi_select_chip()
906 else if ((this->current_chip >= 0) && (chipnr < 0)) in gpmi_select_chip()
907 gpmi_end(this); in gpmi_select_chip()
909 this->current_chip = chipnr; in gpmi_select_chip()
915 struct gpmi_nand_data *this = chip->priv; in gpmi_read_buf() local
917 dev_dbg(this->dev, "len is %d\n", len); in gpmi_read_buf()
918 this->upper_buf = buf; in gpmi_read_buf()
919 this->upper_len = len; in gpmi_read_buf()
921 gpmi_read_data(this); in gpmi_read_buf()
927 struct gpmi_nand_data *this = chip->priv; in gpmi_write_buf() local
929 dev_dbg(this->dev, "len is %d\n", len); in gpmi_write_buf()
930 this->upper_buf = (uint8_t *)buf; in gpmi_write_buf()
931 this->upper_len = len; in gpmi_write_buf()
933 gpmi_send_data(this); in gpmi_write_buf()
939 struct gpmi_nand_data *this = chip->priv; in gpmi_read_byte() local
940 uint8_t *buf = this->data_buffer_dma; in gpmi_read_byte()
951 static void block_mark_swapping(struct gpmi_nand_data *this, in block_mark_swapping() argument
954 struct bch_geometry *nfc_geo = &this->bch_geometry; in block_mark_swapping()
962 if (!this->swap_block_mark) in block_mark_swapping()
997 struct gpmi_nand_data *this = chip->priv; in gpmi_ecc_read_page() local
998 struct bch_geometry *nfc_geo = &this->bch_geometry; in gpmi_ecc_read_page()
1008 dev_dbg(this->dev, "page number is : %d\n", page); in gpmi_ecc_read_page()
1009 ret = read_page_prepare(this, buf, nfc_geo->payload_size, in gpmi_ecc_read_page()
1010 this->payload_virt, this->payload_phys, in gpmi_ecc_read_page()
1014 dev_err(this->dev, "Inadequate DMA buffer\n"); in gpmi_ecc_read_page()
1018 auxiliary_virt = this->auxiliary_virt; in gpmi_ecc_read_page()
1019 auxiliary_phys = this->auxiliary_phys; in gpmi_ecc_read_page()
1022 ret = gpmi_read_page(this, payload_phys, auxiliary_phys); in gpmi_ecc_read_page()
1023 read_page_end(this, buf, nfc_geo->payload_size, in gpmi_ecc_read_page()
1024 this->payload_virt, this->payload_phys, in gpmi_ecc_read_page()
1028 dev_err(this->dev, "Error in ECC-based read: %d\n", ret); in gpmi_ecc_read_page()
1033 block_mark_swapping(this, payload_virt, auxiliary_virt); in gpmi_ecc_read_page()
1065 read_page_swap_end(this, buf, nfc_geo->payload_size, in gpmi_ecc_read_page()
1066 this->payload_virt, this->payload_phys, in gpmi_ecc_read_page()
1077 struct gpmi_nand_data *this = chip->priv; in gpmi_ecc_read_subpage() local
1078 void __iomem *bch_regs = this->resources.bch_regs; in gpmi_ecc_read_subpage()
1079 struct bch_geometry old_geo = this->bch_geometry; in gpmi_ecc_read_subpage()
1080 struct bch_geometry *geo = &this->bch_geometry; in gpmi_ecc_read_subpage()
1088 int old_swap_block_mark = this->swap_block_mark; in gpmi_ecc_read_subpage()
1097 if (this->swap_block_mark) { in gpmi_ecc_read_subpage()
1107 dev_dbg(this->dev, in gpmi_ecc_read_subpage()
1146 dev_dbg(this->dev, "page:%d(%d:%d)%d, chunk:(%d:%d), BCH PG size:%d\n", in gpmi_ecc_read_subpage()
1150 this->swap_block_mark = false; in gpmi_ecc_read_subpage()
1156 this->bch_geometry = old_geo; in gpmi_ecc_read_subpage()
1157 this->swap_block_mark = old_swap_block_mark; in gpmi_ecc_read_subpage()
1165 struct gpmi_nand_data *this = chip->priv; in gpmi_ecc_write_page() local
1166 struct bch_geometry *nfc_geo = &this->bch_geometry; in gpmi_ecc_write_page()
1173 dev_dbg(this->dev, "ecc write page.\n"); in gpmi_ecc_write_page()
1174 if (this->swap_block_mark) { in gpmi_ecc_write_page()
1180 memcpy(this->payload_virt, buf, mtd->writesize); in gpmi_ecc_write_page()
1181 payload_virt = this->payload_virt; in gpmi_ecc_write_page()
1182 payload_phys = this->payload_phys; in gpmi_ecc_write_page()
1184 memcpy(this->auxiliary_virt, chip->oob_poi, in gpmi_ecc_write_page()
1186 auxiliary_virt = this->auxiliary_virt; in gpmi_ecc_write_page()
1187 auxiliary_phys = this->auxiliary_phys; in gpmi_ecc_write_page()
1190 block_mark_swapping(this, in gpmi_ecc_write_page()
1197 ret = send_page_prepare(this, in gpmi_ecc_write_page()
1199 this->payload_virt, this->payload_phys, in gpmi_ecc_write_page()
1203 dev_err(this->dev, "Inadequate payload DMA buffer\n"); in gpmi_ecc_write_page()
1207 ret = send_page_prepare(this, in gpmi_ecc_write_page()
1209 this->auxiliary_virt, this->auxiliary_phys, in gpmi_ecc_write_page()
1213 dev_err(this->dev, "Inadequate auxiliary DMA buffer\n"); in gpmi_ecc_write_page()
1219 ret = gpmi_send_page(this, payload_phys, auxiliary_phys); in gpmi_ecc_write_page()
1221 dev_err(this->dev, "Error in ECC-based write: %d\n", ret); in gpmi_ecc_write_page()
1223 if (!this->swap_block_mark) { in gpmi_ecc_write_page()
1224 send_page_end(this, chip->oob_poi, mtd->oobsize, in gpmi_ecc_write_page()
1225 this->auxiliary_virt, this->auxiliary_phys, in gpmi_ecc_write_page()
1229 send_page_end(this, buf, mtd->writesize, in gpmi_ecc_write_page()
1230 this->payload_virt, this->payload_phys, in gpmi_ecc_write_page()
1301 struct gpmi_nand_data *this = chip->priv; in gpmi_ecc_read_oob() local
1303 dev_dbg(this->dev, "page number is %d\n", page); in gpmi_ecc_read_oob()
1316 if (GPMI_IS_MX23(this)) { in gpmi_ecc_read_oob()
1362 struct gpmi_nand_data *this = chip->priv; in gpmi_ecc_read_page_raw() local
1363 struct bch_geometry *nfc_geo = &this->bch_geometry; in gpmi_ecc_read_page_raw()
1366 u8 *tmp_buf = this->raw_buffer; in gpmi_ecc_read_page_raw()
1383 if (this->swap_block_mark) { in gpmi_ecc_read_page_raw()
1451 struct gpmi_nand_data *this = chip->priv; in gpmi_ecc_write_page_raw() local
1452 struct bch_geometry *nfc_geo = &this->bch_geometry; in gpmi_ecc_write_page_raw()
1455 u8 *tmp_buf = this->raw_buffer; in gpmi_ecc_write_page_raw()
1511 if (this->swap_block_mark) { in gpmi_ecc_write_page_raw()
1542 struct gpmi_nand_data *this = chip->priv; in gpmi_block_markbad() local
1550 column = !GPMI_IS_MX23(this) ? mtd->writesize : 0; in gpmi_block_markbad()
1553 block_mark = this->data_buffer_dma; in gpmi_block_markbad()
1572 static int nand_boot_set_geometry(struct gpmi_nand_data *this) in nand_boot_set_geometry() argument
1574 struct boot_rom_geometry *geometry = &this->rom_geometry; in nand_boot_set_geometry()
1599 static int mx23_check_transcription_stamp(struct gpmi_nand_data *this) in mx23_check_transcription_stamp() argument
1601 struct boot_rom_geometry *rom_geo = &this->rom_geometry; in mx23_check_transcription_stamp()
1602 struct device *dev = this->dev; in mx23_check_transcription_stamp()
1603 struct mtd_info *mtd = &this->mtd; in mx23_check_transcription_stamp()
1604 struct nand_chip *chip = &this->nand; in mx23_check_transcription_stamp()
1615 saved_chip_number = this->current_chip; in mx23_check_transcription_stamp()
1654 static int mx23_write_transcription_stamp(struct gpmi_nand_data *this) in mx23_write_transcription_stamp() argument
1656 struct device *dev = this->dev; in mx23_write_transcription_stamp()
1657 struct boot_rom_geometry *rom_geo = &this->rom_geometry; in mx23_write_transcription_stamp()
1658 struct mtd_info *mtd = &this->mtd; in mx23_write_transcription_stamp()
1659 struct nand_chip *chip = &this->nand; in mx23_write_transcription_stamp()
1686 saved_chip_number = this->current_chip; in mx23_write_transcription_stamp()
1734 static int mx23_boot_init(struct gpmi_nand_data *this) in mx23_boot_init() argument
1736 struct device *dev = this->dev; in mx23_boot_init()
1737 struct nand_chip *chip = &this->nand; in mx23_boot_init()
1738 struct mtd_info *mtd = &this->mtd; in mx23_boot_init()
1753 if (mx23_check_transcription_stamp(this)) in mx23_boot_init()
1800 mx23_write_transcription_stamp(this); in mx23_boot_init()
1804 static int nand_boot_init(struct gpmi_nand_data *this) in nand_boot_init() argument
1806 nand_boot_set_geometry(this); in nand_boot_init()
1809 if (GPMI_IS_MX23(this)) in nand_boot_init()
1810 return mx23_boot_init(this); in nand_boot_init()
1814 static int gpmi_set_geometry(struct gpmi_nand_data *this) in gpmi_set_geometry() argument
1819 gpmi_free_dma_buffer(this); in gpmi_set_geometry()
1822 ret = bch_set_geometry(this); in gpmi_set_geometry()
1824 dev_err(this->dev, "Error setting BCH geometry : %d\n", ret); in gpmi_set_geometry()
1829 return gpmi_alloc_dma_buffer(this); in gpmi_set_geometry()
1832 static void gpmi_nand_exit(struct gpmi_nand_data *this) in gpmi_nand_exit() argument
1834 nand_release(&this->mtd); in gpmi_nand_exit()
1835 gpmi_free_dma_buffer(this); in gpmi_nand_exit()
1838 static int gpmi_init_last(struct gpmi_nand_data *this) in gpmi_init_last() argument
1840 struct mtd_info *mtd = &this->mtd; in gpmi_init_last()
1843 struct bch_geometry *bch_geo = &this->bch_geometry; in gpmi_init_last()
1847 ret = gpmi_set_geometry(this); in gpmi_init_last()
1870 if (GPMI_IS_MX6(this) && in gpmi_init_last()
1882 gpmi_extra_init(this); in gpmi_init_last()
1887 static int gpmi_nand_init(struct gpmi_nand_data *this) in gpmi_nand_init() argument
1889 struct mtd_info *mtd = &this->mtd; in gpmi_nand_init()
1890 struct nand_chip *chip = &this->nand; in gpmi_nand_init()
1895 this->current_chip = -1; in gpmi_nand_init()
1903 chip->priv = this; in gpmi_nand_init()
1915 this->swap_block_mark = !GPMI_IS_MX23(this); in gpmi_nand_init()
1917 if (of_get_nand_on_flash_bbt(this->dev->of_node)) { in gpmi_nand_init()
1920 if (of_property_read_bool(this->dev->of_node, in gpmi_nand_init()
1922 this->swap_block_mark = false; in gpmi_nand_init()
1924 dev_dbg(this->dev, "Blockmark swapping %sabled\n", in gpmi_nand_init()
1925 this->swap_block_mark ? "en" : "dis"); in gpmi_nand_init()
1931 this->bch_geometry.payload_size = 1024; in gpmi_nand_init()
1932 this->bch_geometry.auxiliary_size = 128; in gpmi_nand_init()
1933 ret = gpmi_alloc_dma_buffer(this); in gpmi_nand_init()
1937 ret = nand_scan_ident(mtd, GPMI_IS_MX6(this) ? 2 : 1, NULL); in gpmi_nand_init()
1941 ret = gpmi_init_last(this); in gpmi_nand_init()
1950 ret = nand_boot_init(this); in gpmi_nand_init()
1957 ppdata.of_node = this->pdev->dev.of_node; in gpmi_nand_init()
1964 gpmi_nand_exit(this); in gpmi_nand_init()
1987 struct gpmi_nand_data *this; in gpmi_nand_probe() local
1991 this = devm_kzalloc(&pdev->dev, sizeof(*this), GFP_KERNEL); in gpmi_nand_probe()
1992 if (!this) in gpmi_nand_probe()
1997 this->devdata = of_id->data; in gpmi_nand_probe()
2003 platform_set_drvdata(pdev, this); in gpmi_nand_probe()
2004 this->pdev = pdev; in gpmi_nand_probe()
2005 this->dev = &pdev->dev; in gpmi_nand_probe()
2007 ret = acquire_resources(this); in gpmi_nand_probe()
2011 ret = init_hardware(this); in gpmi_nand_probe()
2015 ret = gpmi_nand_init(this); in gpmi_nand_probe()
2019 dev_info(this->dev, "driver registered.\n"); in gpmi_nand_probe()
2024 release_resources(this); in gpmi_nand_probe()
2032 struct gpmi_nand_data *this = platform_get_drvdata(pdev); in gpmi_nand_remove() local
2034 gpmi_nand_exit(this); in gpmi_nand_remove()
2035 release_resources(this); in gpmi_nand_remove()