summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/block/blk-uclass.c51
1 files changed, 34 insertions, 17 deletions
diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c
index bcc14a684be..e82789f4a38 100644
--- a/drivers/block/blk-uclass.c
+++ b/drivers/block/blk-uclass.c
@@ -444,53 +444,70 @@ int blk_get_device(int uclass_id, int devnum, struct udevice **devp)
return device_probe(*devp);
}
-unsigned long blk_dread(struct blk_desc *block_dev, lbaint_t start,
- lbaint_t blkcnt, void *buffer)
+long blk_read(struct udevice *dev, lbaint_t start, lbaint_t blkcnt, void *buf)
{
- struct udevice *dev = block_dev->bdev;
+ struct blk_desc *desc = dev_get_uclass_plat(dev);
const struct blk_ops *ops = blk_get_ops(dev);
ulong blks_read;
if (!ops->read)
return -ENOSYS;
- if (blkcache_read(block_dev->uclass_id, block_dev->devnum,
- start, blkcnt, block_dev->blksz, buffer))
+ if (blkcache_read(desc->uclass_id, desc->devnum,
+ start, blkcnt, desc->blksz, buf))
return blkcnt;
- blks_read = ops->read(dev, start, blkcnt, buffer);
+ blks_read = ops->read(dev, start, blkcnt, buf);
if (blks_read == blkcnt)
- blkcache_fill(block_dev->uclass_id, block_dev->devnum,
- start, blkcnt, block_dev->blksz, buffer);
+ blkcache_fill(desc->uclass_id, desc->devnum, start, blkcnt,
+ desc->blksz, buf);
return blks_read;
}
-unsigned long blk_dwrite(struct blk_desc *block_dev, lbaint_t start,
- lbaint_t blkcnt, const void *buffer)
+long blk_write(struct udevice *dev, lbaint_t start, lbaint_t blkcnt,
+ const void *buf)
{
- struct udevice *dev = block_dev->bdev;
+ struct blk_desc *desc = dev_get_uclass_plat(dev);
const struct blk_ops *ops = blk_get_ops(dev);
if (!ops->write)
return -ENOSYS;
- blkcache_invalidate(block_dev->uclass_id, block_dev->devnum);
- return ops->write(dev, start, blkcnt, buffer);
+ blkcache_invalidate(desc->uclass_id, desc->devnum);
+
+ return ops->write(dev, start, blkcnt, buf);
}
-unsigned long blk_derase(struct blk_desc *block_dev, lbaint_t start,
- lbaint_t blkcnt)
+long blk_erase(struct udevice *dev, lbaint_t start, lbaint_t blkcnt)
{
- struct udevice *dev = block_dev->bdev;
+ struct blk_desc *desc = dev_get_uclass_plat(dev);
const struct blk_ops *ops = blk_get_ops(dev);
if (!ops->erase)
return -ENOSYS;
- blkcache_invalidate(block_dev->uclass_id, block_dev->devnum);
+ blkcache_invalidate(desc->uclass_id, desc->devnum);
+
return ops->erase(dev, start, blkcnt);
}
+ulong blk_dread(struct blk_desc *desc, lbaint_t start, lbaint_t blkcnt,
+ void *buffer)
+{
+ return blk_read(desc->bdev, start, blkcnt, buffer);
+}
+
+ulong blk_dwrite(struct blk_desc *desc, lbaint_t start, lbaint_t blkcnt,
+ const void *buffer)
+{
+ return blk_write(desc->bdev, start, blkcnt, buffer);
+}
+
+ulong blk_derase(struct blk_desc *desc, lbaint_t start, lbaint_t blkcnt)
+{
+ return blk_erase(desc->bdev, start, blkcnt);
+}
+
int blk_get_from_parent(struct udevice *parent, struct udevice **devp)
{
struct udevice *dev;