Lines Matching defs:dev

126     uint32_t dev;            /* offset in nand_devs for the device that is
147 QFIELD_INT32(dev),
160 QFIELD_INT32(dev),
225 static void nand_dev_save_disk_state(QEMUFile *f, nand_dev *dev)
236 lseek_ret = do_lseek(dev->fd, 0, SEEK_END);
246 lseek_ret = do_lseek(dev->fd, 0, SEEK_SET);
253 ret = do_read(dev->fd, buffer, buf_size);
263 while (ret == buf_size && total_copied < dev->max_size);
284 static int nand_dev_load_disk_state(QEMUFile *f, nand_dev *dev)
293 if (total_size > dev->max_size) {
295 __FUNCTION__, total_size, dev->max_size);
301 lseek_ret = do_lseek(dev->fd, 0, SEEK_SET);
319 ret = do_write(dev->fd, buffer, buf_size);
328 ret = do_ftruncate(dev->fd, total_size);
387 static uint32_t nand_dev_read_file(nand_dev *dev, target_ulong data, uint64_t addr, uint32_t total_len)
390 size_t read_len = dev->erase_size;
395 do_lseek(dev->fd, addr, SEEK_SET);
397 if(read_len < dev->erase_size) {
398 memset(dev->data, 0xff, dev->erase_size);
399 read_len = dev->erase_size;
405 read_len = do_read(dev->fd, dev->data, read_len);
407 safe_memory_rw_debug(current_cpu, data, dev->data, read_len, 1);
414 static uint32_t nand_dev_write_file(nand_dev *dev, target_ulong data, uint64_t addr, uint32_t total_len)
417 size_t write_len = dev->erase_size;
422 do_lseek(dev->fd, addr, SEEK_SET);
426 safe_memory_rw_debug(current_cpu, data, dev->data, write_len, 0);
427 ret = do_write(dev->fd, dev->data, write_len);
438 static uint32_t nand_dev_erase_file(nand_dev *dev, uint64_t addr, uint32_t total_len)
441 size_t write_len = dev->erase_size;
444 do_lseek(dev->fd, addr, SEEK_SET);
445 memset(dev->data, 0xff, dev->erase_size);
449 ret = do_write(dev->fd, dev->data, write_len);
476 nand_dev *dev;
485 s->dev = bd64.dev;
492 s->dev = bd.dev;
501 if(s->dev >= nand_dev_count)
503 dev = nand_devs + s->dev;
507 if(size > dev->devname_len)
508 size = dev->devname_len;
509 safe_memory_rw_debug(current_cpu, s->data, (uint8_t*)dev->devname, size, 1);
513 if(addr >= dev->max_size)
515 if(size > dev->max_size - addr)
516 size = dev->max_size - addr;
517 if(dev->fd >= 0)
518 return nand_dev_read_file(dev, s->data, addr, size);
519 safe_memory_rw_debug(current_cpu, s->data, &dev->data[addr], size, 1);
523 if(dev->flags & NAND_DEV_FLAG_READ_ONLY)
525 if(addr >= dev->max_size)
527 if(size > dev->max_size - addr)
528 size = dev->max_size - addr;
529 if(dev->fd >= 0)
530 return nand_dev_write_file(dev, s->data, addr, size);
531 safe_memory_rw_debug(current_cpu, s->data, &dev->data[addr], size, 0);
535 if(dev->flags & NAND_DEV_FLAG_READ_ONLY)
537 if(addr >= dev->max_size)
539 if(size > dev->max_size - addr)
540 size = dev->max_size - addr;
541 if(dev->fd >= 0)
542 return nand_dev_erase_file(dev, addr, size);
543 memset(&dev->data[addr], 0xff, size);
548 if(dev->flags & NAND_DEV_FLAG_READ_ONLY)
564 s->dev = value;
565 if(s->dev >= nand_dev_count) {
566 cpu_abort(cpu_single_env, "nand_dev_write: Bad dev %x\n", value);
616 nand_dev *dev;
627 if(s->dev >= nand_dev_count)
630 dev = nand_devs + s->dev;
634 return dev->flags;
637 return dev->devname_len;
640 return dev->page_size;
643 return dev->extra_size;
646 return dev->erase_size;
649 return (uint32_t)dev->max_size;
652 return (uint32_t)(dev->max_size >> 32);
708 nand_dev *new_devs, *dev;
864 dev = &new_devs[nand_dev_count];
866 dev->page_size = page_size;
867 dev->extra_size = extra_size;
868 dev->erase_size = erase_pages * (page_size + extra_size);
869 pad = dev_size % dev->erase_size;
871 dev_size += (dev->erase_size - pad);
874 dev->devname = devname;
875 dev->devname_len = devname_len;
876 dev->max_size = dev_size;
877 dev->data = malloc(dev->erase_size);
878 if(dev->data == NULL)
880 dev->flags = read_only ? NAND_DEV_FLAG_READ_ONLY : 0;
882 dev->flags |= NAND_DEV_FLAG_BATCH_CAP;
887 read_size = do_read(initfd, dev->data, dev->erase_size);
892 if(do_write(rwfd, dev->data, read_size) != read_size) {
896 } while(read_size == dev->erase_size);
899 dev->fd = rwfd;