mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-11 23:23:52 +08:00
[media] em28xx: prevent registering wrong interfaces for audio-only
A few devices (em2860) use a separate interface for audio only Audio Vendor Class USB. That interface should not be used by Remote Controller, Analog TV or Digital TV. Prevents initializing all non-audio extensions for the audio only interface. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
d8992b0931
commit
822b8deab8
@ -992,6 +992,11 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||
int result = 0, mfe_shared = 0;
|
||||
struct em28xx_dvb *dvb;
|
||||
|
||||
if (dev->is_audio_only) {
|
||||
/* Shouldn't initialize IR for this interface */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!dev->board.has_dvb) {
|
||||
/* This device does not support the extension */
|
||||
return 0;
|
||||
@ -1431,6 +1436,11 @@ static inline void prevent_sleep(struct dvb_frontend_ops *ops)
|
||||
|
||||
static int em28xx_dvb_fini(struct em28xx *dev)
|
||||
{
|
||||
if (dev->is_audio_only) {
|
||||
/* Shouldn't initialize IR for this interface */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!dev->board.has_dvb) {
|
||||
/* This device does not support the extension */
|
||||
return 0;
|
||||
|
@ -673,6 +673,11 @@ static int em28xx_ir_init(struct em28xx *dev)
|
||||
u64 rc_type;
|
||||
u16 i2c_rc_dev_addr = 0;
|
||||
|
||||
if (dev->is_audio_only) {
|
||||
/* Shouldn't initialize IR for this interface */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (dev->board.buttons)
|
||||
em28xx_init_buttons(dev);
|
||||
|
||||
@ -802,6 +807,11 @@ static int em28xx_ir_fini(struct em28xx *dev)
|
||||
{
|
||||
struct em28xx_IR *ir = dev->ir;
|
||||
|
||||
if (dev->is_audio_only) {
|
||||
/* Shouldn't initialize IR for this interface */
|
||||
return 0;
|
||||
}
|
||||
|
||||
em28xx_shutdown_buttons(dev);
|
||||
|
||||
/* skip detach on non attached boards */
|
||||
|
@ -1877,6 +1877,11 @@ static int em28xx_v4l2_open(struct file *filp)
|
||||
*/
|
||||
static int em28xx_v4l2_fini(struct em28xx *dev)
|
||||
{
|
||||
if (dev->is_audio_only) {
|
||||
/* Shouldn't initialize IR for this interface */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!dev->has_video) {
|
||||
/* This device does not support the v4l2 extension */
|
||||
return 0;
|
||||
@ -2209,6 +2214,11 @@ static int em28xx_v4l2_init(struct em28xx *dev)
|
||||
unsigned int maxw;
|
||||
struct v4l2_ctrl_handler *hdl = &dev->ctrl_handler;
|
||||
|
||||
if (dev->is_audio_only) {
|
||||
/* Shouldn't initialize IR for this interface */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!dev->has_video) {
|
||||
/* This device does not support the v4l2 extension */
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user