From: Simon Glass Date: Tue, 25 Apr 2023 16:54:51 +0000 (-0600) Subject: ide: Correct LBA setting X-Git-Url: http://git.dujemihanovic.xyz/%22/img/sics.gif/%22/static/git-favicon.png?a=commitdiff_plain;h=49aa778406a28f45dafdeb6df30f7f378ccb3925;p=u-boot.git 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 Fixes: 68e6f221ed0 ("block: ide: Fix block read/write with driver model") --- diff --git a/drivers/block/ide.c b/drivers/block/ide.c index 4c2a6a8e53..72216540d0 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;