Lines Matching refs:chip
144 struct nor_chip * const chip = &sc->sc_chip; in nor_attach() local
153 if (nor_scan_media(self, chip)) in nor_attach()
157 sc->sc_flash_if.erasesize = chip->nc_block_size; in nor_attach()
158 sc->sc_flash_if.page_size = chip->nc_page_size; in nor_attach()
159 sc->sc_flash_if.writesize = chip->nc_page_size; in nor_attach()
163 chip->nc_oob_cache = kmem_alloc(chip->nc_spare_size, KM_SLEEP); in nor_attach()
165 chip->nc_page_cache = kmem_alloc(chip->nc_page_size, KM_SLEEP); in nor_attach()
192 kmem_free(chip->nc_oob_cache, chip->nc_spare_size); in nor_attach()
194 kmem_free(chip->nc_page_cache, chip->nc_page_size); in nor_attach()
202 struct nor_chip * const chip = &sc->sc_chip; in nor_search() local
209 chip->nc_size - faa.partinfo.part_offset; in nor_search()
237 struct nor_chip * const chip = &sc->sc_chip; in nor_detach() local
251 kmem_free(chip->nc_oob_cache, chip->nc_spare_size); in nor_detach()
253 kmem_free(chip->nc_page_cache, chip->nc_page_size); in nor_detach()
333 nor_quirks(device_t self, struct nor_chip * const chip) in nor_quirks() argument
336 switch (chip->nc_manf_id) { in nor_quirks()
338 if (chip->nc_dev_id == 0x00) { in nor_quirks()
354 nor_scan_media(device_t self, struct nor_chip * const chip) in nor_scan_media() argument
361 int error = sc->sc_nor_if->scan_media(self, chip); in nor_scan_media()
368 chip->nc_manf_id, in nor_scan_media()
369 nor_midtoname(chip->nc_manf_id), in nor_scan_media()
370 chip->nc_dev_id); in nor_scan_media()
373 format_bytes(pbuf[0], sizeof(pbuf[0]), chip->nc_page_size); in nor_scan_media()
374 format_bytes(pbuf[1], sizeof(pbuf[1]), chip->nc_spare_size); in nor_scan_media()
375 format_bytes(pbuf[2], sizeof(pbuf[2]), chip->nc_block_size); in nor_scan_media()
380 format_bytes(pbuf[0], sizeof(pbuf[0]), chip->nc_size); in nor_scan_media()
384 chip->nc_lun_blocks, chip->nc_num_luns, pbuf[0]); in nor_scan_media()
392 if (chip->nc_page_size > 512) in nor_scan_media()
393 chip->nc_badmarker_offs = 0; in nor_scan_media()
395 chip->nc_badmarker_offs = 5; in nor_scan_media()
399 chip->nc_page_shift = ffs(chip->nc_page_size) - 1; in nor_scan_media()
400 chip->nc_page_mask = ~(chip->nc_page_size - 1); in nor_scan_media()
402 chip->nc_block_shift = ffs(chip->nc_block_size) - 1; in nor_scan_media()
403 chip->nc_block_mask = ~(chip->nc_block_size - 1); in nor_scan_media()
407 nor_quirks(self, chip); in nor_scan_media()
427 struct nor_chip * const chip = &sc->sc_chip; in nor_default_read_page() local
435 nor_read_buf_1(self, offset, data, chip->nc_page_size); in nor_default_read_page()
438 nor_read_buf_2(self, offset, data, chip->nc_page_size); in nor_default_read_page()
441 nor_read_buf_4(self, offset, data, chip->nc_page_size); in nor_default_read_page()
445 nor_read_buf_8(self, offset, data, chip->nc_page_size); in nor_default_read_page()
454 nor_dump_data("page", data, chip->nc_page_size); in nor_default_read_page()
466 struct nor_chip * const chip = &sc->sc_chip; in nor_default_program_page() local
474 nor_write_buf_1(self, offset, data, chip->nc_page_size); in nor_default_program_page()
477 nor_write_buf_2(self, offset, data, chip->nc_page_size); in nor_default_program_page()
480 nor_write_buf_4(self, offset, data, chip->nc_page_size); in nor_default_program_page()
484 nor_write_buf_8(self, offset, data, chip->nc_page_size); in nor_default_program_page()
494 nor_dump_data("page", data, chip->nc_page_size); in nor_default_program_page()
522 struct nor_chip * const chip = &sc->sc_chip; in nor_flash_erase() local
526 if (ei->ei_addr < 0 || ei->ei_len < chip->nc_block_size) in nor_flash_erase()
529 if (ei->ei_addr + ei->ei_len > chip->nc_size) { in nor_flash_erase()
535 if ((ei->ei_addr == 0) && (ei->ei_len == chip->nc_size) in nor_flash_erase()
540 if (ei->ei_addr % chip->nc_block_size != 0) { in nor_flash_erase()
545 (uintmax_t)chip->nc_block_size); in nor_flash_erase()
549 if (ei->ei_len % chip->nc_block_size != 0) { in nor_flash_erase()
554 (uintmax_t)chip->nc_block_size); in nor_flash_erase()
576 addr += chip->nc_block_size; in nor_flash_erase()
600 struct nor_chip * const chip = &sc->sc_chip; in nor_flash_write_unaligned() local
607 first = offset & chip->nc_page_mask; in nor_flash_write_unaligned()
608 firstoff = offset & ~chip->nc_page_mask; in nor_flash_write_unaligned()
610 last = (offset + len) & chip->nc_page_mask; in nor_flash_write_unaligned()
628 error = nor_read_page(self, addr, chip->nc_page_cache); in nor_flash_write_unaligned()
633 memcpy(chip->nc_page_cache + firstoff, buf, len); in nor_flash_write_unaligned()
635 error = nor_program_page(self, addr, chip->nc_page_cache); in nor_flash_write_unaligned()
659 error = nor_read_page(self, addr, chip->nc_page_cache); in nor_flash_write_unaligned()
664 memcpy(chip->nc_page_cache + firstoff, in nor_flash_write_unaligned()
665 bufp, chip->nc_page_size - firstoff); in nor_flash_write_unaligned()
669 chip->nc_page_cache); in nor_flash_write_unaligned()
674 bufp += chip->nc_page_size - firstoff; in nor_flash_write_unaligned()
675 left -= chip->nc_page_size - firstoff; in nor_flash_write_unaligned()
676 *retlen += chip->nc_page_size - firstoff; in nor_flash_write_unaligned()
679 error = nor_read_page(self, addr, chip->nc_page_cache); in nor_flash_write_unaligned()
684 memcpy(chip->nc_page_cache, bufp, left); in nor_flash_write_unaligned()
687 chip->nc_page_cache); in nor_flash_write_unaligned()
693 KASSERT(left < chip->nc_page_size); in nor_flash_write_unaligned()
697 if (left > chip->nc_page_size) { in nor_flash_write_unaligned()
701 KASSERT(left > chip->nc_page_size); in nor_flash_write_unaligned()
708 bufp += chip->nc_page_size; in nor_flash_write_unaligned()
709 left -= chip->nc_page_size; in nor_flash_write_unaligned()
710 *retlen += chip->nc_page_size; in nor_flash_write_unaligned()
713 addr += chip->nc_page_size; in nor_flash_write_unaligned()
728 struct nor_chip * const chip = &sc->sc_chip; in nor_flash_write() local
734 if ((offset + len) > chip->nc_size) { in nor_flash_write()
738 (uintmax_t)chip->nc_size)); in nor_flash_write()
742 if (len % chip->nc_page_size != 0 || in nor_flash_write()
743 offset % chip->nc_page_size != 0) { in nor_flash_write()
748 pages = len / chip->nc_page_size; in nor_flash_write()
773 addr += chip->nc_page_size; in nor_flash_write()
774 bufp += chip->nc_page_size; in nor_flash_write()
775 *retlen += chip->nc_page_size; in nor_flash_write()
792 struct nor_chip * const chip = &sc->sc_chip; in nor_flash_read_unaligned() local
799 first = offset & chip->nc_page_mask; in nor_flash_read_unaligned()
800 firstoff = offset & ~chip->nc_page_mask; in nor_flash_read_unaligned()
801 last = (offset + len) & chip->nc_page_mask; in nor_flash_read_unaligned()
802 count = (last - first) / chip->nc_page_size + 1; in nor_flash_read_unaligned()
811 error = nor_read_page(self, addr, chip->nc_page_cache); in nor_flash_read_unaligned()
816 memcpy(bufp, chip->nc_page_cache + firstoff, len); in nor_flash_read_unaligned()
824 error = nor_read_page(self, addr, chip->nc_page_cache); in nor_flash_read_unaligned()
830 memcpy(bufp, chip->nc_page_cache + firstoff, in nor_flash_read_unaligned()
831 chip->nc_page_size - firstoff); in nor_flash_read_unaligned()
833 bufp += chip->nc_page_size - firstoff; in nor_flash_read_unaligned()
834 left -= chip->nc_page_size - firstoff; in nor_flash_read_unaligned()
835 *retlen += chip->nc_page_size - firstoff; in nor_flash_read_unaligned()
838 memcpy(bufp, chip->nc_page_cache, left); in nor_flash_read_unaligned()
840 KASSERT(left < chip->nc_page_size); in nor_flash_read_unaligned()
843 memcpy(bufp, chip->nc_page_cache, chip->nc_page_size); in nor_flash_read_unaligned()
845 bufp += chip->nc_page_size; in nor_flash_read_unaligned()
846 left -= chip->nc_page_size; in nor_flash_read_unaligned()
847 *retlen += chip->nc_page_size; in nor_flash_read_unaligned()
850 addr += chip->nc_page_size; in nor_flash_read_unaligned()
864 struct nor_chip * const chip = &sc->sc_chip; in nor_flash_read() local
875 if (__predict_false((offset + len) > chip->nc_size)) { in nor_flash_read()
878 (uintmax_t)offset, len, (uintmax_t)chip->nc_size)); in nor_flash_read()
888 if (len < chip->nc_page_size) in nor_flash_read()
892 if (len % chip->nc_page_size != 0 || in nor_flash_read()
893 offset % chip->nc_page_size != 0) { in nor_flash_read()
900 pages = len / chip->nc_page_size; in nor_flash_read()
916 bufp += chip->nc_page_size; in nor_flash_read()
917 addr += chip->nc_page_size; in nor_flash_read()
918 *retlen += chip->nc_page_size; in nor_flash_read()
930 struct nor_chip * const chip = &sc->sc_chip; in nor_flash_isbad() local
935 if (ofs > chip->nc_size) { in nor_flash_isbad()
938 (uintmax_t)ofs, (uintmax_t)chip->nc_size)); in nor_flash_isbad()
942 if (ofs % chip->nc_block_size != 0) { in nor_flash_isbad()
945 (uintmax_t)ofs, (uintmax_t)chip->nc_block_size)); in nor_flash_isbad()
966 struct nor_chip * const chip = &sc->sc_chip; in nor_flash_markbad() local
968 if (ofs > chip->nc_size) { in nor_flash_markbad()
971 ofs, (uintmax_t)chip->nc_size)); in nor_flash_markbad()
975 if (ofs % chip->nc_block_size != 0) { in nor_flash_markbad()
977 (uintmax_t)ofs, (uintmax_t)chip->nc_block_size); in nor_flash_markbad()