[PATCH 1/4] misc: Add iodevice support
Trent Piepho
tpiepho at kymetacorp.com
Thu Dec 10 12:42:42 PST 2015
On Tue, 2015-12-08 at 10:05 +0100, Sascha Hauer wrote:
> +int iodevice_register(struct iodevice *iodev)
> +{
> + const char *devname = NULL;
> + int i, ret;
> +
> + if (iodev->hwdev->device_node) {
> + devname = of_alias_get(iodev->hwdev->device_node);
> + iodev->dev.id = DEVICE_ID_SINGLE;
> + }
> +
> + if (!devname) {
> + devname = "io";
> + iodev->dev.id = DEVICE_ID_DYNAMIC;
> + }
> +
> + strcpy(iodev->dev.name, devname);
> +
> + iodev->dev.parent = iodev->hwdev;
> +
> + ret = register_device(&iodev->dev);
Why does every driver/subsystem need to implement its own alias
support?
Since register_device() has access to
(&iodev->dev)->parent->device_node, couldn't it do the alias lookup
instead, so that each driver doesn't need to?
Then one could write:
iodev->dev.parent = iodev->hwdev;
strcpy(iodev->dev.name, "io");
iodev->dev.id = DEVICE_ID_DYNAMIC;
ret = register_device(&iodev->dev);
I guess this doesn't work exactly for net drivers, since they want to do
s/ethernet(\d+)/eth\1/ on the alias name.
And some drivers create a cdev the alias should be applied to instead of
a dev. Though I supposed devfs_create() could do the same thing.
More information about the barebox
mailing list