Lines Matching refs:flash

178 	struct spear_snor_flash *flash[MAX_NUM_FLASH_CHIP];  member
420 get_sector_erase_cmd(struct spear_snor_flash *flash, u32 offset) in get_sector_erase_cmd() argument
425 x[0] = flash->erase_cmd; in get_sector_erase_cmd()
496 struct spear_snor_flash *flash = get_flash_data(mtd); in spear_mtd_erase() local
501 if (!flash || !dev) in spear_mtd_erase()
504 bank = flash->bank; in spear_mtd_erase()
513 mutex_lock(&flash->lock); in spear_mtd_erase()
517 command = get_sector_erase_cmd(flash, addr); in spear_mtd_erase()
521 mutex_unlock(&flash->lock); in spear_mtd_erase()
528 mutex_unlock(&flash->lock); in spear_mtd_erase()
548 struct spear_snor_flash *flash = get_flash_data(mtd); in spear_mtd_read() local
554 if (!flash || !dev) in spear_mtd_read()
557 if (flash->bank > dev->num_flashes - 1) { in spear_mtd_read()
563 src = flash->base_addr + from; in spear_mtd_read()
565 mutex_lock(&flash->lock); in spear_mtd_read()
568 ret = spear_smi_wait_till_ready(dev, flash->bank, SMI_MAX_TIME_OUT); in spear_mtd_read()
570 mutex_unlock(&flash->lock); in spear_mtd_read()
578 if (flash->fast_mode) in spear_mtd_read()
590 mutex_unlock(&flash->lock); in spear_mtd_read()
641 struct spear_snor_flash *flash = get_flash_data(mtd); in spear_mtd_write() local
647 if (!flash || !dev) in spear_mtd_write()
650 if (flash->bank > dev->num_flashes - 1) { in spear_mtd_write()
656 dest = flash->base_addr + to; in spear_mtd_write()
657 mutex_lock(&flash->lock); in spear_mtd_write()
659 page_offset = (u32)to % flash->page_size; in spear_mtd_write()
662 if (page_offset + len <= flash->page_size) { in spear_mtd_write()
663 ret = spear_smi_cpy_toio(dev, flash->bank, dest, buf, len); in spear_mtd_write()
670 page_size = flash->page_size - page_offset; in spear_mtd_write()
672 ret = spear_smi_cpy_toio(dev, flash->bank, dest, buf, in spear_mtd_write()
682 if (page_size > flash->page_size) in spear_mtd_write()
683 page_size = flash->page_size; in spear_mtd_write()
685 ret = spear_smi_cpy_toio(dev, flash->bank, dest + i, in spear_mtd_write()
695 mutex_unlock(&flash->lock); in spear_mtd_write()
814 struct spear_snor_flash *flash; in spear_smi_setup_banks() local
828 flash = devm_kzalloc(&pdev->dev, sizeof(*flash), GFP_ATOMIC); in spear_smi_setup_banks()
829 if (!flash) in spear_smi_setup_banks()
831 flash->bank = bank; in spear_smi_setup_banks()
832 flash->fast_mode = flash_info->fast_mode ? 1 : 0; in spear_smi_setup_banks()
833 mutex_init(&flash->lock); in spear_smi_setup_banks()
842 flash->base_addr = devm_ioremap(&pdev->dev, flash_info->mem_base, in spear_smi_setup_banks()
844 if (!flash->base_addr) in spear_smi_setup_banks()
847 dev->flash[bank] = flash; in spear_smi_setup_banks()
848 flash->mtd.priv = dev; in spear_smi_setup_banks()
851 flash->mtd.name = flash_info->name; in spear_smi_setup_banks()
853 flash->mtd.name = flash_devices[flash_index].name; in spear_smi_setup_banks()
855 flash->mtd.dev.parent = &pdev->dev; in spear_smi_setup_banks()
856 mtd_set_of_node(&flash->mtd, np); in spear_smi_setup_banks()
857 flash->mtd.type = MTD_NORFLASH; in spear_smi_setup_banks()
858 flash->mtd.writesize = 1; in spear_smi_setup_banks()
859 flash->mtd.flags = MTD_CAP_NORFLASH; in spear_smi_setup_banks()
860 flash->mtd.size = flash_info->size; in spear_smi_setup_banks()
861 flash->mtd.erasesize = flash_devices[flash_index].sectorsize; in spear_smi_setup_banks()
862 flash->page_size = flash_devices[flash_index].pagesize; in spear_smi_setup_banks()
863 flash->mtd.writebufsize = flash->page_size; in spear_smi_setup_banks()
864 flash->erase_cmd = flash_devices[flash_index].erase_cmd; in spear_smi_setup_banks()
865 flash->mtd._erase = spear_mtd_erase; in spear_smi_setup_banks()
866 flash->mtd._read = spear_mtd_read; in spear_smi_setup_banks()
867 flash->mtd._write = spear_mtd_write; in spear_smi_setup_banks()
868 flash->dev_id = flash_devices[flash_index].device_id; in spear_smi_setup_banks()
871 flash->mtd.name, flash->mtd.size, in spear_smi_setup_banks()
872 flash->mtd.size / (1024 * 1024)); in spear_smi_setup_banks()
875 flash->mtd.erasesize, flash->mtd.erasesize / 1024); in spear_smi_setup_banks()
884 ret = mtd_device_register(&flash->mtd, parts, count); in spear_smi_setup_banks()
1015 struct spear_snor_flash *flash; in spear_smi_remove() local
1026 flash = dev->flash[i]; in spear_smi_remove()
1027 if (!flash) in spear_smi_remove()
1031 ret = mtd_device_unregister(&flash->mtd); in spear_smi_remove()