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()
522 mutex_unlock(&flash->lock); in spear_mtd_erase()
529 mutex_unlock(&flash->lock); in spear_mtd_erase()
551 struct spear_snor_flash *flash = get_flash_data(mtd); in spear_mtd_read() local
557 if (!flash || !dev) in spear_mtd_read()
560 if (flash->bank > dev->num_flashes - 1) { in spear_mtd_read()
566 src = flash->base_addr + from; in spear_mtd_read()
568 mutex_lock(&flash->lock); in spear_mtd_read()
571 ret = spear_smi_wait_till_ready(dev, flash->bank, SMI_MAX_TIME_OUT); in spear_mtd_read()
573 mutex_unlock(&flash->lock); in spear_mtd_read()
581 if (flash->fast_mode) in spear_mtd_read()
593 mutex_unlock(&flash->lock); in spear_mtd_read()
644 struct spear_snor_flash *flash = get_flash_data(mtd); in spear_mtd_write() local
650 if (!flash || !dev) in spear_mtd_write()
653 if (flash->bank > dev->num_flashes - 1) { in spear_mtd_write()
659 dest = flash->base_addr + to; in spear_mtd_write()
660 mutex_lock(&flash->lock); in spear_mtd_write()
662 page_offset = (u32)to % flash->page_size; in spear_mtd_write()
665 if (page_offset + len <= flash->page_size) { in spear_mtd_write()
666 ret = spear_smi_cpy_toio(dev, flash->bank, dest, buf, len); in spear_mtd_write()
673 page_size = flash->page_size - page_offset; in spear_mtd_write()
675 ret = spear_smi_cpy_toio(dev, flash->bank, dest, buf, in spear_mtd_write()
685 if (page_size > flash->page_size) in spear_mtd_write()
686 page_size = flash->page_size; in spear_mtd_write()
688 ret = spear_smi_cpy_toio(dev, flash->bank, dest + i, in spear_mtd_write()
698 mutex_unlock(&flash->lock); in spear_mtd_write()
816 struct spear_snor_flash *flash; in spear_smi_setup_banks() local
830 flash = devm_kzalloc(&pdev->dev, sizeof(*flash), GFP_ATOMIC); in spear_smi_setup_banks()
831 if (!flash) in spear_smi_setup_banks()
833 flash->bank = bank; in spear_smi_setup_banks()
834 flash->fast_mode = flash_info->fast_mode ? 1 : 0; in spear_smi_setup_banks()
835 mutex_init(&flash->lock); in spear_smi_setup_banks()
844 flash->base_addr = devm_ioremap(&pdev->dev, flash_info->mem_base, in spear_smi_setup_banks()
846 if (!flash->base_addr) in spear_smi_setup_banks()
849 dev->flash[bank] = flash; in spear_smi_setup_banks()
850 flash->mtd.priv = dev; in spear_smi_setup_banks()
853 flash->mtd.name = flash_info->name; in spear_smi_setup_banks()
855 flash->mtd.name = flash_devices[flash_index].name; 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()
885 ret = mtd_device_parse_register(&flash->mtd, NULL, &ppdata, parts, in spear_smi_setup_banks()
1017 struct spear_snor_flash *flash; in spear_smi_remove() local
1028 flash = dev->flash[i]; in spear_smi_remove()
1029 if (!flash) in spear_smi_remove()
1033 ret = mtd_device_unregister(&flash->mtd); in spear_smi_remove()