Lines Matching +full:full +full:- +full:hd

1 /*-
123 if (dev->dv_type == DEVT_DISK) in efiblk_get_pdinfo_list()
125 if (dev->dv_type == DEVT_CD) in efiblk_get_pdinfo_list()
127 if (dev->dv_type == DEVT_FD) in efiblk_get_pdinfo_list()
139 pdi = efiblk_get_pdinfo_list(dev->d_dev); in efiblk_get_pdinfo()
144 if (pd->pd_unit == dev->d_unit) in efiblk_get_pdinfo()
157 status = BS->LocateDevicePath(&blkio_guid, &devp, &h); in efiblk_get_pdinfo_by_device_path()
167 return (pd->pd_handle == h || pd->pd_alias == h); in same_handle()
181 STAILQ_FOREACH(pp, &dp->pd_part, pd_link) { in efiblk_get_pdinfo_by_handle()
189 STAILQ_FOREACH(pp, &dp->pd_part, pd_link) { in efiblk_get_pdinfo_by_handle()
227 if (efi_devpath_match(pd->pd_devpath, parent)) in efipart_find_parent()
250 if (blkio->Media->BlockSize < 512 || in efipart_ignore_device()
251 blkio->Media->BlockSize > (1 << 16) || in efipart_ignore_device()
252 !powerof2(blkio->Media->BlockSize)) { in efipart_ignore_device()
258 if (blkio->Media->IoAlign > 1 && in efipart_ignore_device()
259 !powerof2(blkio->Media->IoAlign)) { in efipart_ignore_device()
298 if (blkio->Media->MediaPresent) in efipart_ignore_device()
362 status = BS->LocateHandle(ByProtocol, &blkio_guid, 0, &sz, hin); in efipart_inithandles()
367 status = BS->LocateHandle(ByProtocol, &blkio_guid, 0, &sz, in efipart_inithandles()
404 STAILQ_INIT(&pd->pd_part); in efipart_inithandles()
406 pd->pd_handle = hin[i]; in efipart_inithandles()
407 pd->pd_devpath = devpath; in efipart_inithandles()
408 pd->pd_blkio = blkio; in efipart_inithandles()
416 pd->pd_parent = efipart_find_parent(&pdinfo, pd->pd_devpath); in efipart_inithandles()
446 if (acpi->HID == EISA_PNP_ID(PNP0604) || in efipart_floppy()
447 acpi->HID == EISA_PNP_ID(PNP0700) || in efipart_floppy()
448 acpi->HID == EISA_PNP_ID(PNP0701)) { in efipart_floppy()
460 node = efi_devpath_last_node(fd->pd_devpath); in efipart_testfd()
478 if ((node = efi_devpath_last_node(fd->pd_devpath)) == NULL) in efipart_initfd()
485 parent = fd->pd_parent; in efipart_initfd()
488 parent->pd_alias = fd->pd_handle; in efipart_initfd()
489 parent->pd_unit = acpi->UID; in efipart_initfd()
493 fd->pd_unit = acpi->UID; in efipart_initfd()
495 fd->pd_devsw = &efipart_fddev; in efipart_initfd()
514 parent = cd->pd_parent; in efipart_cdinfo_add()
519 if (efi_devpath_match(pd->pd_devpath, cd->pd_devpath)) { in efipart_cdinfo_add()
530 last = STAILQ_LAST(&parent->pd_part, pdinfo, pd_link); in efipart_cdinfo_add()
532 cd->pd_unit = last->pd_unit + 1; in efipart_cdinfo_add()
534 cd->pd_unit = 0; in efipart_cdinfo_add()
535 cd->pd_devsw = &efipart_cddev; in efipart_cdinfo_add()
536 STAILQ_INSERT_TAIL(&parent->pd_part, cd, pd_link); in efipart_cdinfo_add()
542 cd->pd_unit = last->pd_unit + 1; in efipart_cdinfo_add()
544 cd->pd_unit = 0; in efipart_cdinfo_add()
546 cd->pd_devsw = &efipart_cddev; in efipart_cdinfo_add()
555 node = efi_devpath_last_node(cd->pd_devpath); in efipart_testcd()
568 if (cd->pd_blkio->Media->RemovableMedia && in efipart_testcd()
569 !cd->pd_blkio->Media->MediaPresent) { in efipart_testcd()
583 if (dev->pd_parent == NULL) in efipart_testchild()
586 if (efi_devpath_match(dev->pd_parent->pd_devpath, pd->pd_devpath)) { in efipart_testchild()
614 efipart_hdinfo_add_node(pdinfo_t *hd, EFI_DEVICE_PATH *node) in efipart_hdinfo_add_node() argument
621 parent = hd->pd_parent; in efipart_hdinfo_add_node()
623 * If the node is not MEDIA_HARDDRIVE_DP, it is sub-partition. in efipart_hdinfo_add_node()
628 ptr = STAILQ_LAST(&parent->pd_part, pdinfo, pd_link); in efipart_hdinfo_add_node()
630 hd->pd_unit = ptr->pd_unit + 1; in efipart_hdinfo_add_node()
632 hd->pd_unit = 0; in efipart_hdinfo_add_node()
634 hd->pd_unit = ((HARDDRIVE_DEVICE_PATH *)node)->PartitionNumber; in efipart_hdinfo_add_node()
637 hd->pd_devsw = &efipart_hddev; in efipart_hdinfo_add_node()
638 STAILQ_INSERT_TAIL(&parent->pd_part, hd, pd_link); in efipart_hdinfo_add_node()
643 * From U-Boot sources it looks like names are in the form
648 efipart_hdinfo_add_filepath(pdinfo_t *hd, FILEPATH_DEVICE_PATH *node) in efipart_hdinfo_add_filepath() argument
656 hd->pd_unit = last->pd_unit + 1; in efipart_hdinfo_add_filepath()
658 hd->pd_unit = 0; in efipart_hdinfo_add_filepath()
661 len = ucs2len(node->PathName); in efipart_hdinfo_add_filepath()
664 free(hd); in efipart_hdinfo_add_filepath()
667 cpy16to8(node->PathName, pathname, len + 1); in efipart_hdinfo_add_filepath()
676 hd->pd_devsw = &efipart_hddev; in efipart_hdinfo_add_filepath()
677 STAILQ_INSERT_TAIL(&hdinfo, hd, pd_link); in efipart_hdinfo_add_filepath()
683 hd->pd_unit = (int)strtol(p, NULL, 0); in efipart_hdinfo_add_filepath()
687 free(hd); in efipart_hdinfo_add_filepath()
700 free(hd); in efipart_hdinfo_add_filepath()
704 hd->pd_parent = last; in efipart_hdinfo_add_filepath()
705 hd->pd_devsw = &efipart_hddev; in efipart_hdinfo_add_filepath()
706 STAILQ_INSERT_TAIL(&last->pd_part, hd, pd_link); in efipart_hdinfo_add_filepath()
711 efipart_hdinfo_add(pdinfo_t *hd) in efipart_hdinfo_add() argument
716 if (hd == NULL) in efipart_hdinfo_add()
719 parent = hd->pd_parent; in efipart_hdinfo_add()
724 if (efi_devpath_match(pd->pd_devpath, hd->pd_devpath)) { in efipart_hdinfo_add()
725 STAILQ_REMOVE(&pdinfo, hd, pdinfo, pd_link); in efipart_hdinfo_add()
734 if ((node = efi_devpath_last_node(hd->pd_devpath)) == NULL) in efipart_hdinfo_add()
739 efipart_hdinfo_add_filepath(hd, in efipart_hdinfo_add()
745 efipart_hdinfo_add_node(hd, node); in efipart_hdinfo_add()
751 hd->pd_unit = last->pd_unit + 1; in efipart_hdinfo_add()
753 hd->pd_unit = 0; in efipart_hdinfo_add()
756 hd->pd_devsw = &efipart_hddev; in efipart_hdinfo_add()
757 STAILQ_INSERT_TAIL(&hdinfo, hd, pd_link); in efipart_hdinfo_add()
761 efipart_testhd(pdinfo_t *hd, pdinfo_t *data __unused) in efipart_testhd() argument
763 if (efipart_testfd(hd, NULL)) in efipart_testhd()
766 if (efipart_testcd(hd, NULL)) in efipart_testhd()
769 /* Anything else must be HD. */ in efipart_testhd()
776 pdinfo_t *hd; in efipart_inithd() local
778 while ((hd = efipart_get_pd(&pdinfo, efipart_testhd, NULL)) != NULL) in efipart_inithd()
779 efipart_hdinfo_add(hd); in efipart_inithd()
800 printf("%s devices:", dev->dv_name); in efipart_print_common()
805 h = pd->pd_handle; in efipart_print_common()
816 " %s%d", dev->dv_name, pd->pd_unit); in efipart_print_common()
821 blkio->Media->LastBlock == 0? 0: in efipart_print_common()
822 (unsigned long long) (blkio->Media->LastBlock + 1)); in efipart_print_common()
823 if (blkio->Media->LastBlock != 0) { in efipart_print_common()
824 printf(" X %u", blkio->Media->BlockSize); in efipart_print_common()
827 if (blkio->Media->MediaPresent) { in efipart_print_common()
828 if (blkio->Media->RemovableMedia) in efipart_print_common()
835 if (!blkio->Media->MediaPresent) in efipart_print_common()
838 pd->pd_blkio = blkio; in efipart_print_common()
840 pd_dev.dd.d_unit = pd->pd_unit; in efipart_print_common()
843 ret = disk_open(&pd_dev, blkio->Media->BlockSize * in efipart_print_common()
844 (blkio->Media->LastBlock + 1), in efipart_print_common()
845 blkio->Media->BlockSize); in efipart_print_common()
900 if (pd->pd_blkio == NULL) { in efipart_open()
901 status = OpenProtocolByHandle(pd->pd_handle, &blkio_guid, in efipart_open()
902 (void **)&pd->pd_blkio); in efipart_open()
907 blkio = pd->pd_blkio; in efipart_open()
908 if (!blkio->Media->MediaPresent) in efipart_open()
911 pd->pd_open++; in efipart_open()
912 if (pd->pd_bcache == NULL) in efipart_open()
913 pd->pd_bcache = bcache_allocate(); in efipart_open()
915 if (dev->dd.d_dev->dv_type == DEVT_DISK) { in efipart_open()
919 blkio->Media->BlockSize * (blkio->Media->LastBlock + 1), in efipart_open()
920 blkio->Media->BlockSize); in efipart_open()
922 pd->pd_open--; in efipart_open()
923 if (pd->pd_open == 0) { in efipart_open()
924 pd->pd_blkio = NULL; in efipart_open()
925 bcache_free(pd->pd_bcache); in efipart_open()
926 pd->pd_bcache = NULL; in efipart_open()
940 dev = (struct disk_devdesc *)(f->f_devdata); in efipart_close()
948 pd->pd_open--; in efipart_close()
949 if (pd->pd_open == 0) { in efipart_close()
950 pd->pd_blkio = NULL; in efipart_close()
951 if (dev->dd.d_dev->dv_type != DEVT_DISK) { in efipart_close()
952 bcache_free(pd->pd_bcache); in efipart_close()
953 pd->pd_bcache = NULL; in efipart_close()
956 if (dev->dd.d_dev->dv_type == DEVT_DISK) in efipart_close()
968 dev = (struct disk_devdesc *)(f->f_devdata); in efipart_ioctl()
976 if (dev->dd.d_dev->dv_type == DEVT_DISK) { in efipart_ioctl()
984 *(u_int *)data = pd->pd_blkio->Media->BlockSize; in efipart_ioctl()
987 *(uint64_t *)data = pd->pd_blkio->Media->BlockSize * in efipart_ioctl()
988 (pd->pd_blkio->Media->LastBlock + 1); in efipart_ioctl()
1000 * media-native block size. This function expects all I/O requests
1014 if (blk < 0 || blk > blkio->Media->LastBlock) in efipart_readwrite()
1016 if ((blk + nblks - 1) > blkio->Media->LastBlock) in efipart_readwrite()
1021 status = blkio->ReadBlocks(blkio, blkio->Media->MediaId, blk, in efipart_readwrite()
1022 nblks * blkio->Media->BlockSize, buf); in efipart_readwrite()
1025 if (blkio->Media->ReadOnly) in efipart_readwrite()
1027 status = blkio->WriteBlocks(blkio, blkio->Media->MediaId, blk, in efipart_readwrite()
1028 nblks * blkio->Media->BlockSize, buf); in efipart_readwrite()
1058 if (pd->pd_blkio->Media->RemovableMedia && in efipart_strategy()
1059 !pd->pd_blkio->Media->MediaPresent) in efipart_strategy()
1064 bcd.dv_cache = pd->pd_bcache; in efipart_strategy()
1066 if (dev->dd.d_dev->dv_type == DEVT_DISK) { in efipart_strategy()
1069 offset = dev->d_offset * pd->pd_blkio->Media->BlockSize; in efipart_strategy()
1099 blkio = pd->pd_blkio; in efipart_realstrategy()
1112 if (dev->dd.d_dev->dv_type == DEVT_DISK) { in efipart_realstrategy()
1115 disk_blocks /= blkio->Media->BlockSize; in efipart_realstrategy()
1117 d_offset = dev->d_offset; in efipart_realstrategy()
1120 disk_blocks = blkio->Media->LastBlock + 1 - d_offset; in efipart_realstrategy()
1123 if ((off + size) / blkio->Media->BlockSize > d_offset + disk_blocks) { in efipart_realstrategy()
1125 readstart = off / blkio->Media->BlockSize; in efipart_realstrategy()
1133 size = diskend - readstart; in efipart_realstrategy()
1134 size = size * blkio->Media->BlockSize; in efipart_realstrategy()
1139 if ((size % blkio->Media->BlockSize == 0) && in efipart_realstrategy()
1140 (off % blkio->Media->BlockSize == 0)) in efipart_realstrategy()
1144 ioalign = blkio->Media->IoAlign; in efipart_realstrategy()
1153 bio_size -= blkio->Media->BlockSize) { in efipart_realstrategy()
1170 blk = off / blkio->Media->BlockSize; in efipart_realstrategy()
1171 blkoff = off % blkio->Media->BlockSize; in efipart_realstrategy()
1176 if (x < blkio->Media->BlockSize) in efipart_realstrategy()
1179 x /= blkio->Media->BlockSize; in efipart_realstrategy()
1183 blksz = blkio->Media->BlockSize * x - blkoff; in efipart_realstrategy()
1202 blksz = blkio->Media->BlockSize - blkoff; in efipart_realstrategy()
1206 } else if (size < blkio->Media->BlockSize) { in efipart_realstrategy()
1208 * The remaining block is not full in efipart_realstrategy()
1216 /* We can write full sector(s). */ in efipart_realstrategy()
1217 blksz = blkio->Media->BlockSize * x; in efipart_realstrategy()
1240 size -= blksz; in efipart_realstrategy()
1246 *rsize -= size; in efipart_realstrategy()