summaryrefslogtreecommitdiff
path: root/cmd/usb_mass_storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/usb_mass_storage.c')
-rw-r--r--cmd/usb_mass_storage.c11
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,