On 10/15/2014 10:48 AM, Takashi Iwai wrote:
At Tue, 14 Oct 2014 08:58:36 -0600, Shuah Khan wrote:
Add media token device resource framework to allow sharing resources such as tuner, dma, audio etc. across media drivers and non-media sound drivers that control media hardware. The Media token resource is created at the main struct device that is common to all drivers that claim various pieces of the main media device, which allows them to find the resource using the main struct device. As an example, digital, analog, and snd-usb-audio drivers can use the media token resource API using the main struct device for the interface the media device is attached to.
This patch series consists of media token resource framework and changes to use it in dvb-core, v4l2-core, au0828 driver, and snd-usb-audio driver.
With these changes dvb and v4l2 can share the tuner without disrupting each other. Used tvtime, xawtv, kaffeine, and vlc, vlc audio capture option, arecord/aplay during development to identify v4l2 vb2 and vb1 ioctls and file operations that disrupt the digital stream and would require changes to check tuner ownership prior to changing the tuner configuration. vb2 changes are made in the v4l2-core and vb1 changes are made in the au0828 driver to encourage porting drivers to vb2 to advantage of the new media token resource framework with changes in the core.
In this patch v2 series, fixed problems identified in the patch v1 series. Important ones are changing snd-usb-audio to use media tokens, holding tuner lock in VIDIOC_ENUMINPUT, and VIDIOC_QUERYSTD.
Just took a quick glance over the patches, and my first concern is why this has to be lib/*. This means it's always built-in as long as this config is enabled (and will be so on distro kernel) even if it's not used at all.
Right this module gets built when CONFIG_MEDIA_SUPPORT is enabled and stubs are in place when it is not enabled. The intent is for this feature to be enabled by default when media support is enabled. When a driver doesn't create the resource, it will simply not find it and for drivers like snd-usb-audio that aren't tried to media support, the stubs are in place and feature is essentially disabled.
I picked lib so this module can be included in non-media drivers e.g: snd-usb-audio.
Does this help explain the design? I didn't want to introduce a new config for this feature. If lib isn't right place, could you recommend another one that makes this modules available to non-media drivers? moving isn't a problem.
thanks, -- Shuah