summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-04-25 10:54:51 -0600
committerTom Rini <trini@konsulko.com>2023-04-27 13:51:07 -0400
commit49aa778406a28f45dafdeb6df30f7f378ccb3925 (patch)
tree0954975e55a10550a7e4cec41e53f9d53d1acced
parentd7d57436e7a65cb724d04d987cd00428aea995a5 (diff)
ide: Correct LBA setting
Fix a longstanding bug where the LBA is calculated as the size of the media instead of the number of blocks. This was perhaps not noticed earlier since it prints the correct value first, before setting the wrong value. Drop the unnecessary blksz variable while we are here. Signed-off-by: Simon Glass <sjg@chromium.org> Fixes: 68e6f221ed0 ("block: ide: Fix block read/write with driver model")
-rw-r--r--drivers/block/ide.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/block/ide.c b/drivers/block/ide.c
index 4c2a6a8e530..72216540d04 100644
--- a/drivers/block/ide.c
+++ b/drivers/block/ide.c
@@ -1029,9 +1029,7 @@ static int ide_probe(struct udevice *udev)
for (i = 0; i < CONFIG_SYS_IDE_MAXDEVICE; i++) {
struct blk_desc *desc, pdesc;
struct udevice *blk;
- lbaint_t size;
char name[20];
- int blksz;
int ret;
if (!bus_ok[IDE_BUS(i)])
@@ -1045,17 +1043,14 @@ static int ide_probe(struct udevice *udev)
sprintf(name, "blk#%d", i);
- blksz = pdesc.blksz;
- size = blksz * pdesc.lba;
-
/*
* With CDROM, if there is no CD inserted, blksz will
* be zero, don't bother to create IDE block device.
*/
- if (!blksz)
+ if (!pdesc.blksz)
continue;
ret = blk_create_devicef(udev, "ide_blk", name, UCLASS_IDE, i,
- blksz, size, &blk);
+ pdesc.blksz, pdesc.lba, &blk);
if (ret)
return ret;