Lines Matching defs:onenand
19 #include <linux/mtd/onenand.h>
143 static struct s3c_onenand *onenand;
147 return readl(onenand->base + offset);
152 writel(value, onenand->base + offset);
157 return readl(onenand->ahb_addr + cmd);
162 writel(value, onenand->ahb_addr + cmd);
172 (unsigned int) onenand->base + i,
218 struct onenand_chip *this = onenand->mtd->priv;
219 struct device *dev = &onenand->pdev->dev;
251 if ((unsigned long)addr < ONENAND_DATARAM && onenand->bootram_command) {
260 value = s3c_read_cmd(CMD_MAP_11(onenand, word_addr)) & 0xffff;
268 struct onenand_chip *this = onenand->mtd->priv;
269 struct device *dev = &onenand->pdev->dev;
294 onenand->bootram_command = 1;
299 onenand->bootram_command = 0;
307 s3c_write_cmd(value, CMD_MAP_11(onenand, word_addr));
312 struct device *dev = &onenand->pdev->dev;
390 mem_addr = onenand->mem_addr(fba, fpa, fsa);
391 cmd_map_01 = CMD_MAP_01(onenand, mem_addr);
392 cmd_map_10 = CMD_MAP_10(onenand, mem_addr);
408 m = onenand->page_buf;
409 s = onenand->oob_buf;
481 p = onenand->page_buf;
485 p = onenand->oob_buf;
519 void __iomem *base = onenand->dma_addr;
563 void __iomem *base = onenand->dma_addr;
577 if (!onenand->complete.done)
578 complete(&onenand->complete);
585 void __iomem *base = onenand->dma_addr;
610 wait_for_completion_timeout(&onenand->complete, msecs_to_jiffies(20));
623 struct device *dev = &onenand->pdev->dev;
634 !onenand->dma_addr || count != mtd->writesize)
653 dma_src = onenand->phys_base + (p - this->base);
657 dma_src = onenand->phys_base + (p - this->base);
729 struct device *dev = &onenand->pdev->dev;
735 unsigned int mem_addr = onenand->mem_addr(block, 0, 0);
736 s3c_read_cmd(CMD_MAP_01(onenand, mem_addr));
752 start_mem_addr = onenand->mem_addr(start, 0, 0);
754 end_mem_addr = onenand->mem_addr(end, 0, 0);
757 s3c_write_cmd(ONENAND_LOCK_START, CMD_MAP_10(onenand,
759 s3c_write_cmd(ONENAND_LOCK_END, CMD_MAP_10(onenand,
762 s3c_write_cmd(ONENAND_UNLOCK_START, CMD_MAP_10(onenand,
764 s3c_write_cmd(ONENAND_UNLOCK_END, CMD_MAP_10(onenand,
804 onenand->mtd = mtd;
806 if (onenand->type == TYPE_S3C6400) {
807 onenand->mem_addr = s3c6400_mem_addr;
808 onenand->cmd_map = s3c64xx_cmd_map;
809 } else if (onenand->type == TYPE_S3C6410) {
810 onenand->mem_addr = s3c6410_mem_addr;
811 onenand->cmd_map = s3c64xx_cmd_map;
812 } else if (onenand->type == TYPE_S5PC110) {
813 /* Use generic onenand functions */
849 onenand = devm_kzalloc(&pdev->dev, sizeof(struct s3c_onenand),
851 if (!onenand)
857 onenand->pdev = pdev;
858 onenand->type = platform_get_device_id(pdev)->driver_data;
863 onenand->base = devm_ioremap_resource(&pdev->dev, r);
864 if (IS_ERR(onenand->base))
865 return PTR_ERR(onenand->base);
867 onenand->phys_base = r->start;
870 this->base = onenand->base;
875 if (onenand->type != TYPE_S5PC110) {
877 onenand->ahb_addr = devm_ioremap_resource(&pdev->dev, r);
878 if (IS_ERR(onenand->ahb_addr))
879 return PTR_ERR(onenand->ahb_addr);
882 onenand->page_buf = devm_kzalloc(&pdev->dev, SZ_4K,
884 if (!onenand->page_buf)
888 onenand->oob_buf = devm_kzalloc(&pdev->dev, 128, GFP_KERNEL);
889 if (!onenand->oob_buf)
898 onenand->dma_addr = devm_ioremap_resource(&pdev->dev, r);
899 if (IS_ERR(onenand->dma_addr))
900 return PTR_ERR(onenand->dma_addr);
906 init_completion(&onenand->complete);
910 IRQF_SHARED, "onenand",
911 &onenand);
923 if (onenand->type != TYPE_S5PC110) {
930 dev_info(&onenand->pdev->dev, "OneNAND Sync. Burst Read enabled\n");
979 .name = "s3c6400-onenand",
982 .name = "s3c6410-onenand",
985 .name = "s5pc110-onenand",
993 .name = "samsung-onenand",