diff options
Diffstat (limited to 'cmd/usb_mass_storage.c')
| -rw-r--r-- | cmd/usb_mass_storage.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c index 47e8b70cd10..e8b87045bdc 100644 --- a/cmd/usb_mass_storage.c +++ b/cmd/usb_mass_storage.c @@ -24,6 +24,11 @@ static int ums_read_sector(struct ums *ums_dev, { struct blk_desc *block_dev = &ums_dev->block_dev; lbaint_t blkstart = start + ums_dev->start_sector; + int ret; + + ret = blk_dselect_hwpart(block_dev, ums_dev->hwpart); + if (ret && ret != -ENOSYS) + return ret; return blk_dread(block_dev, blkstart, blkcnt, buf); } @@ -33,6 +38,11 @@ static int ums_write_sector(struct ums *ums_dev, { struct blk_desc *block_dev = &ums_dev->block_dev; lbaint_t blkstart = start + ums_dev->start_sector; + int ret; + + ret = blk_dselect_hwpart(block_dev, ums_dev->hwpart); + if (ret && ret != -ENOSYS) + return ret; return blk_dwrite(block_dev, blkstart, blkcnt, buf); } @@ -110,6 +120,7 @@ static int ums_init(const char *devtype, const char *devnums_part_str) snprintf(name, UMS_NAME_LEN, "UMS disk %d", ums_count); ums[ums_count].name = name; ums[ums_count].block_dev = *block_dev; + ums[ums_count].hwpart = block_dev->hwpart; printf("UMS: LUN %d, dev %s %d, hwpart %d, sector %#x, count %#x\n", ums_count, devtype, ums[ums_count].block_dev.devnum, |
