ide: Move setting of vendor strings into ide_probe()
The current implementation adds this information in the block device's probe() function, which is called in the blk_probe_or_unbind() in ide_probe(). It is simpler to do this in ide_probe() itself, since the effect is the same. This helps to consolidate use of ide_dev_desc[] which we would like to remove. Use strlcpy() to keep checkpatch happy. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
209ee95611
commit
db89e72302
1 changed files with 18 additions and 24 deletions
|
@ -987,24 +987,6 @@ ulong ide_or_atapi_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
|
|||
return ide_read(dev, blknr, blkcnt, buffer);
|
||||
}
|
||||
|
||||
static int ide_blk_probe(struct udevice *udev)
|
||||
{
|
||||
struct blk_desc *desc = dev_get_uclass_plat(udev);
|
||||
|
||||
/* fill in device vendor/product/rev strings */
|
||||
strncpy(desc->vendor, ide_dev_desc[desc->devnum].vendor,
|
||||
BLK_VEN_SIZE);
|
||||
desc->vendor[BLK_VEN_SIZE] = '\0';
|
||||
strncpy(desc->product, ide_dev_desc[desc->devnum].product,
|
||||
BLK_PRD_SIZE);
|
||||
desc->product[BLK_PRD_SIZE] = '\0';
|
||||
strncpy(desc->revision, ide_dev_desc[desc->devnum].revision,
|
||||
BLK_REV_SIZE);
|
||||
desc->revision[BLK_REV_SIZE] = '\0';
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct blk_ops ide_blk_ops = {
|
||||
.read = ide_or_atapi_read,
|
||||
.write = ide_write,
|
||||
|
@ -1014,7 +996,6 @@ U_BOOT_DRIVER(ide_blk) = {
|
|||
.name = "ide_blk",
|
||||
.id = UCLASS_BLK,
|
||||
.ops = &ide_blk_ops,
|
||||
.probe = ide_blk_probe,
|
||||
};
|
||||
|
||||
static int ide_bootdev_bind(struct udevice *dev)
|
||||
|
@ -1060,17 +1041,19 @@ BOOTDEV_HUNTER(ide_bootdev_hunter) = {
|
|||
|
||||
static int ide_probe(struct udevice *udev)
|
||||
{
|
||||
struct udevice *blk_dev;
|
||||
char name[20];
|
||||
int blksz;
|
||||
lbaint_t size;
|
||||
int i;
|
||||
int ret;
|
||||
|
||||
ide_init();
|
||||
|
||||
for (i = 0; i < CONFIG_SYS_IDE_MAXDEVICE; i++) {
|
||||
if (ide_dev_desc[i].type != DEV_TYPE_UNKNOWN) {
|
||||
struct udevice *blk_dev;
|
||||
struct blk_desc *desc;
|
||||
lbaint_t size;
|
||||
char name[20];
|
||||
int blksz;
|
||||
int ret;
|
||||
|
||||
sprintf(name, "blk#%d", i);
|
||||
|
||||
blksz = ide_dev_desc[i].blksz;
|
||||
|
@ -1095,6 +1078,17 @@ static int ide_probe(struct udevice *udev)
|
|||
ret = bootdev_setup_for_dev(udev, "ide_bootdev");
|
||||
if (ret)
|
||||
return log_msg_ret("bootdev", ret);
|
||||
|
||||
/* fill in device vendor/product/rev strings */
|
||||
desc = dev_get_uclass_plat(blk_dev);
|
||||
strlcpy(desc->vendor, ide_dev_desc[desc->devnum].vendor,
|
||||
BLK_VEN_SIZE);
|
||||
strlcpy(desc->product,
|
||||
ide_dev_desc[desc->devnum].product,
|
||||
BLK_PRD_SIZE);
|
||||
strlcpy(desc->revision,
|
||||
ide_dev_desc[desc->devnum].revision,
|
||||
BLK_REV_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue