Lines Matching full:lpddr
2 * LPDDR flash memory device operations. This module provides read, write,
3 * erase, lock/unlock support for LPDDR flash memories
50 struct lpddr_private *lpddr = map->fldrv_priv; in lpddr_cmdset() local
79 mtd->size = 1 << lpddr->qinfo->DevSizeShift; in lpddr_cmdset()
80 mtd->erasesize = 1 << lpddr->qinfo->UniformBlockSizeShift; in lpddr_cmdset()
81 mtd->writesize = 1 << lpddr->qinfo->BufSizeShift; in lpddr_cmdset()
83 shared = kmalloc(sizeof(struct flchip_shared) * lpddr->numchips, in lpddr_cmdset()
86 kfree(lpddr); in lpddr_cmdset()
91 chip = &lpddr->chips[0]; in lpddr_cmdset()
92 numchips = lpddr->numchips / lpddr->qinfo->HWPartsNum; in lpddr_cmdset()
96 for (j = 0; j < lpddr->qinfo->HWPartsNum; j++) { in lpddr_cmdset()
97 *chip = lpddr->chips[i]; in lpddr_cmdset()
98 chip->start += j << lpddr->chipshift; in lpddr_cmdset()
284 struct lpddr_private *lpddr = map->fldrv_priv; in chip_ready() local
298 if (!lpddr->qinfo->SuspEraseSupp || in chip_ready()
395 struct lpddr_private *lpddr = map->fldrv_priv; in do_write_buffer() local
402 wbufsize = 1 << lpddr->qinfo->BufSizeShift; in do_write_buffer()
460 ret = wait_for_ready(map, chip, (1<<lpddr->qinfo->ProgBufferTime)); in do_write_buffer()
475 struct lpddr_private *lpddr = map->fldrv_priv; in do_erase_oneblock() local
476 int chipnum = adr >> lpddr->chipshift; in do_erase_oneblock()
477 struct flchip *chip = &lpddr->chips[chipnum]; in do_erase_oneblock()
488 ret = wait_for_ready(map, chip, (1<<lpddr->qinfo->BlockEraseTime)*1000); in do_erase_oneblock()
503 struct lpddr_private *lpddr = map->fldrv_priv; in lpddr_read() local
504 int chipnum = adr >> lpddr->chipshift; in lpddr_read()
505 struct flchip *chip = &lpddr->chips[chipnum]; in lpddr_read()
527 struct lpddr_private *lpddr = map->fldrv_priv; in lpddr_point() local
528 int chipnum = adr >> lpddr->chipshift; in lpddr_point()
530 struct flchip *chip = &lpddr->chips[chipnum]; in lpddr_point()
537 ofs = adr - (chipnum << lpddr->chipshift); in lpddr_point()
545 if (chipnum >= lpddr->numchips) in lpddr_point()
554 if ((len + ofs - 1) >> lpddr->chipshift) in lpddr_point()
555 thislen = (1<<lpddr->chipshift) - ofs; in lpddr_point()
571 last_end += 1 << lpddr->chipshift; in lpddr_point()
573 chip = &lpddr->chips[chipnum]; in lpddr_point()
581 struct lpddr_private *lpddr = map->fldrv_priv; in lpddr_unpoint() local
582 int chipnum = adr >> lpddr->chipshift; in lpddr_unpoint()
586 ofs = adr - (chipnum << lpddr->chipshift); in lpddr_unpoint()
592 chip = &lpddr->chips[chipnum]; in lpddr_unpoint()
593 if (chipnum >= lpddr->numchips) in lpddr_unpoint()
596 if ((len + ofs - 1) >> lpddr->chipshift) in lpddr_unpoint()
597 thislen = (1<<lpddr->chipshift) - ofs; in lpddr_unpoint()
635 struct lpddr_private *lpddr = map->fldrv_priv; in lpddr_writev() local
639 int wbufsize = 1 << lpddr->qinfo->BufSizeShift; in lpddr_writev()
650 chipnum = to >> lpddr->chipshift; in lpddr_writev()
662 ret = do_write_buffer(map, &lpddr->chips[chipnum], in lpddr_writev()
685 struct lpddr_private *lpddr = map->fldrv_priv; in lpddr_erase() local
686 int size = 1 << lpddr->qinfo->UniformBlockSizeShift; in lpddr_erase()
713 struct lpddr_private *lpddr = map->fldrv_priv; in do_xxlock() local
714 int chipnum = adr >> lpddr->chipshift; in do_xxlock()
715 struct flchip *chip = &lpddr->chips[chipnum]; in do_xxlock()
757 struct lpddr_private *lpddr = map->fldrv_priv; in word_program() local
758 int chipnum = adr >> lpddr->chipshift; in word_program()
759 struct flchip *chip = &lpddr->chips[chipnum]; in word_program()
770 ret = wait_for_ready(map, chip, (1<<lpddr->qinfo->SingleWordProgTime)); in word_program()
784 MODULE_DESCRIPTION("MTD driver for LPDDR flash chips");