As pointed by https://github.com/systemd/systemd/issues/31406,
currently, udev doesn't have pesistent names for the subsystem.
Add adapter's name and device's parent device, as those may help
adding unique persistent names.
While here, also change em28xx-dvb to use a real name instead of
the parent dev name. With that, uevent for DVB devnodes will
resemble this:
/sys/class/dvb/dvb0.demux0/uevent:MAJOR=212
/sys/class/dvb/dvb0.demux0/uevent:MINOR=1
/sys/class/dvb/dvb0.demux0/uevent:DEVNAME=dvb/adapter0/demux0
/sys/class/dvb/dvb0.demux0/uevent:DVB_ADAPTER_NAME=PCTV nanoStick T2 290e
/sys/class/dvb/dvb0.demux0/uevent:DVB_ADAPTER_PDEV=2-1:1.0
/sys/class/dvb/dvb0.demux0/uevent:DVB_ADAPTER_NUM=0
/sys/class/dvb/dvb0.demux0/uevent:DVB_DEVICE_TYPE=demux
/sys/class/dvb/dvb0.demux0/uevent:DVB_DEVICE_NUM=0
Tested with a PCTV nanoStick T2 290e device.
Mauro Carvalho Chehab (2):
media: dvbdev: export adapter's name and bus ID to DVB uevent
variables
em28xx-dvb: fix DVB adapter device name
drivers/media/dvb-core/dvbdev.c | 2 ++
drivers/media/usb/em28xx/em28xx-dvb.c | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
--
2.43.0
Add two new variables for uevent, helping udev to be able to setup
a persistent name for the device.
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
drivers/media/dvb-core/dvbdev.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
index 733d0bc4b4cc..01227c695cbd 100644
--- a/drivers/media/dvb-core/dvbdev.c
+++ b/drivers/media/dvb-core/dvbdev.c
@@ -1064,6 +1064,8 @@ static int dvb_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
const struct dvb_device *dvbdev = dev_get_drvdata(dev);
+ add_uevent_var(env, "DVB_ADAPTER_NAME=%s", dvbdev->adapter->name);
+ add_uevent_var(env, "DVB_ADAPTER_PDEV=%s", dev_name(dev->parent));
add_uevent_var(env, "DVB_ADAPTER_NUM=%d", dvbdev->adapter->num);
add_uevent_var(env, "DVB_DEVICE_TYPE=%s", dnames[dvbdev->type]);
add_uevent_var(env, "DVB_DEVICE_NUM=%d", dvbdev->id);
--
2.43.0
On 20/02/2024 10:46, Mauro Carvalho Chehab wrote:
> Add two new variables for uevent, helping udev to be able to setup
> a persistent name for the device.
>
> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
Reviewed-by: Hans Verkuil <[email protected]>
Regards,
Hans
> ---
> drivers/media/dvb-core/dvbdev.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
> index 733d0bc4b4cc..01227c695cbd 100644
> --- a/drivers/media/dvb-core/dvbdev.c
> +++ b/drivers/media/dvb-core/dvbdev.c
> @@ -1064,6 +1064,8 @@ static int dvb_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> const struct dvb_device *dvbdev = dev_get_drvdata(dev);
>
> + add_uevent_var(env, "DVB_ADAPTER_NAME=%s", dvbdev->adapter->name);
> + add_uevent_var(env, "DVB_ADAPTER_PDEV=%s", dev_name(dev->parent));
> add_uevent_var(env, "DVB_ADAPTER_NUM=%d", dvbdev->adapter->num);
> add_uevent_var(env, "DVB_DEVICE_TYPE=%s", dnames[dvbdev->type]);
> add_uevent_var(env, "DVB_DEVICE_NUM=%d", dvbdev->id);