From c90c103c8dc42a6d236491cf9f80145a5aaf968d Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Mon, 1 Feb 2021 09:37:40 +0100 Subject: [PATCH] media: vidtv: adapter->mdev was set too late The media device has to be initialized and assigned to adapter->mdev before the dvb devices are created, since that will trigger the automatic creation of the topology. Rework this code to achieve this. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- drivers/media/test-drivers/vidtv/vidtv_bridge.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/media/test-drivers/vidtv/vidtv_bridge.c b/drivers/media/test-drivers/vidtv/vidtv_bridge.c index 6ab17a83bced..75617709c8ce 100644 --- a/drivers/media/test-drivers/vidtv/vidtv_bridge.c +++ b/drivers/media/test-drivers/vidtv/vidtv_bridge.c @@ -416,6 +416,7 @@ static int vidtv_bridge_dvb_init(struct vidtv_dvb *dvb) ret = vidtv_bridge_register_adap(dvb); if (ret < 0) goto fail_adapter; + dvb_register_media_controller(&dvb->adapter, &dvb->mdev); for (i = 0; i < NUM_FE; ++i) { ret = vidtv_bridge_probe_demod(dvb, i); @@ -495,6 +496,15 @@ static int vidtv_bridge_probe(struct platform_device *pdev) dvb->pdev = pdev; +#ifdef CONFIG_MEDIA_CONTROLLER_DVB + dvb->mdev.dev = &pdev->dev; + + strscpy(dvb->mdev.model, "vidtv", sizeof(dvb->mdev.model)); + strscpy(dvb->mdev.bus_info, "platform:vidtv", sizeof(dvb->mdev.bus_info)); + + media_device_init(&dvb->mdev); +#endif + ret = vidtv_bridge_dvb_init(dvb); if (ret < 0) goto err_dvb; @@ -504,20 +514,12 @@ static int vidtv_bridge_probe(struct platform_device *pdev) platform_set_drvdata(pdev, dvb); #ifdef CONFIG_MEDIA_CONTROLLER_DVB - dvb->mdev.dev = &pdev->dev; - - strscpy(dvb->mdev.model, "vidtv", sizeof(dvb->mdev.model)); - strscpy(dvb->mdev.bus_info, "platform:vidtv", sizeof(dvb->mdev.bus_info)); - - media_device_init(&dvb->mdev); ret = media_device_register(&dvb->mdev); if (ret) { dev_err(dvb->mdev.dev, "media device register failed (err=%d)\n", ret); goto err_media_device_register; } - - dvb_register_media_controller(&dvb->adapter, &dvb->mdev); #endif /* CONFIG_MEDIA_CONTROLLER_DVB */ dev_info(&pdev->dev, "Successfully initialized vidtv!\n"); -- 2.11.0