[1/4] media: vidtv: Add media controller support
Commit Message
From: "Daniel W. S. Almeida" <dwlsalmeida@gmail.com>
Add media controller support when CONFIG_MEDIA_CONTROLLER_DVB is set
so that, in the future, a test sequence in v4l-utils can be written
without having to know which /dev/fooX device should be used.
Signed-off-by: Daniel W. S. Almeida <dwlsalmeida@gmail.com>
---
.../media/test-drivers/vidtv/vidtv_bridge.c | 26 +++++++++++++++++++
.../media/test-drivers/vidtv/vidtv_bridge.h | 6 +++++
2 files changed, 32 insertions(+)
Comments
Hi "Daniel,
I love your patch! Yet something to improve:
[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.11-rc2 next-20210104]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Daniel-W-S-Almeida/media-vidtv-add-media-controller-support/20210105-211434
base: git://linuxtv.org/media_tree.git master
config: x86_64-randconfig-s022-20210105 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-208-g46a52ca4-dirty
# https://github.com/0day-ci/linux/commit/c06a13465ff899cdd2a6badae988b0f8f157f382
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Daniel-W-S-Almeida/media-vidtv-add-media-controller-support/20210105-211434
git checkout c06a13465ff899cdd2a6badae988b0f8f157f382
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/media/test-drivers/vidtv/vidtv_bridge.c: In function 'vidtv_bridge_probe':
>> drivers/media/test-drivers/vidtv/vidtv_bridge.c:527:29: error: 'struct vidtv_dvb' has no member named 'mdev'; did you mean 'pdev'?
527 | media_device_cleanup(&dvb->mdev);
| ^~~~
| pdev
drivers/media/test-drivers/vidtv/vidtv_bridge.c:526:1: warning: label 'err_media_device_register' defined but not used [-Wunused-label]
526 | err_media_device_register:
| ^~~~~~~~~~~~~~~~~~~~~~~~~
vim +527 drivers/media/test-drivers/vidtv/vidtv_bridge.c
522
523 dev_info(&pdev->dev, "Successfully initialized vidtv!\n");
524 return ret;
525
526 err_media_device_register:
> 527 media_device_cleanup(&dvb->mdev);
528 err_dvb:
529 kfree(dvb);
530 return ret;
531 }
532
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi "Daniel,
I love your patch! Yet something to improve:
[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.11-rc2 next-20210104]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Daniel-W-S-Almeida/media-vidtv-add-media-controller-support/20210105-211434
base: git://linuxtv.org/media_tree.git master
config: arm-randconfig-r021-20210105 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 5c951623bc8965fa1e89660f2f5f4a2944e4981a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/0day-ci/linux/commit/c06a13465ff899cdd2a6badae988b0f8f157f382
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Daniel-W-S-Almeida/media-vidtv-add-media-controller-support/20210105-211434
git checkout c06a13465ff899cdd2a6badae988b0f8f157f382
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/media/test-drivers/vidtv/vidtv_bridge.c:527:2: error: implicit declaration of function 'media_device_cleanup' [-Werror,-Wimplicit-function-declaration]
media_device_cleanup(&dvb->mdev);
^
drivers/media/test-drivers/vidtv/vidtv_bridge.c:527:2: note: did you mean 'media_device_pci_init'?
include/media/media-device.h:468:20: note: 'media_device_pci_init' declared here
static inline void media_device_pci_init(struct media_device *mdev,
^
drivers/media/test-drivers/vidtv/vidtv_bridge.c:527:29: error: no member named 'mdev' in 'struct vidtv_dvb'; did you mean 'pdev'?
media_device_cleanup(&dvb->mdev);
^~~~
pdev
drivers/media/test-drivers/vidtv/vidtv_bridge.h:49:26: note: 'pdev' declared here
struct platform_device *pdev;
^
2 errors generated.
vim +/media_device_cleanup +527 drivers/media/test-drivers/vidtv/vidtv_bridge.c
522
523 dev_info(&pdev->dev, "Successfully initialized vidtv!\n");
524 return ret;
525
526 err_media_device_register:
> 527 media_device_cleanup(&dvb->mdev);
528 err_dvb:
529 kfree(dvb);
530 return ret;
531 }
532
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi "Daniel,
I love your patch! Yet something to improve:
[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.11-rc2 next-20210104]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Daniel-W-S-Almeida/media-vidtv-add-media-controller-support/20210105-211434
base: git://linuxtv.org/media_tree.git master
config: h8300-randconfig-r014-20210105 (attached as .config)
compiler: h8300-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/c06a13465ff899cdd2a6badae988b0f8f157f382
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Daniel-W-S-Almeida/media-vidtv-add-media-controller-support/20210105-211434
git checkout c06a13465ff899cdd2a6badae988b0f8f157f382
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=h8300
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/media/test-drivers/vidtv/vidtv_bridge.c: In function 'vidtv_bridge_probe':
>> drivers/media/test-drivers/vidtv/vidtv_bridge.c:527:2: error: implicit declaration of function 'media_device_cleanup'; did you mean 'media_entity_cleanup'? [-Werror=implicit-function-declaration]
527 | media_device_cleanup(&dvb->mdev);
| ^~~~~~~~~~~~~~~~~~~~
| media_entity_cleanup
drivers/media/test-drivers/vidtv/vidtv_bridge.c:527:29: error: 'struct vidtv_dvb' has no member named 'mdev'; did you mean 'pdev'?
527 | media_device_cleanup(&dvb->mdev);
| ^~~~
| pdev
drivers/media/test-drivers/vidtv/vidtv_bridge.c:526:1: warning: label 'err_media_device_register' defined but not used [-Wunused-label]
526 | err_media_device_register:
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +527 drivers/media/test-drivers/vidtv/vidtv_bridge.c
522
523 dev_info(&pdev->dev, "Successfully initialized vidtv!\n");
524 return ret;
525
526 err_media_device_register:
> 527 media_device_cleanup(&dvb->mdev);
528 err_dvb:
529 kfree(dvb);
530 return ret;
531 }
532
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
@@ -17,6 +17,8 @@
#include <linux/time.h>
#include <linux/types.h>
#include <linux/workqueue.h>
+#include <media/dvbdev.h>
+#include <media/media-device.h>
#include "vidtv_bridge.h"
#include "vidtv_common.h"
@@ -501,9 +503,28 @@ 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");
return ret;
+err_media_device_register:
+ media_device_cleanup(&dvb->mdev);
err_dvb:
kfree(dvb);
return ret;
@@ -516,6 +537,11 @@ static int vidtv_bridge_remove(struct platform_device *pdev)
dvb = platform_get_drvdata(pdev);
+#ifdef CONFIG_MEDIA_CONTROLLER_DVB
+ media_device_unregister(&dvb->mdev);
+ media_device_cleanup(&dvb->mdev);
+#endif //CONFIG_MEDIA_CONTROLLER_DVB
+
mutex_destroy(&dvb->feed_lock);
for (i = 0; i < NUM_FE; ++i) {
@@ -24,6 +24,7 @@
#include <media/dmxdev.h>
#include <media/dvb_demux.h>
#include <media/dvb_frontend.h>
+#include <media/media-device.h>
#include "vidtv_mux.h"
@@ -42,6 +43,7 @@
* @feed_lock: Protects access to the start/stop stream logic/data.
* @streaming: Whether we are streaming now.
* @mux: The abstraction responsible for delivering MPEG TS packets to the bridge.
+ * @mdev: The media_device struct for media controller support.
*/
struct vidtv_dvb {
struct platform_device *pdev;
@@ -60,6 +62,10 @@ struct vidtv_dvb {
bool streaming;
struct vidtv_mux *mux;
+
+#ifdef CONFIG_MEDIA_CONTROLLER_DVB
+ struct media_device mdev;
+#endif //CONFIG_MEDIA_CONTROLLER_DVB
};
#endif // VIDTV_BRIDG_H