Skip to content

Commit

Permalink
[media] em28xx: prevent registering wrong interfaces for audio-only
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
mchehab committed Jan 7, 2014
1 parent d8992b0 commit 822b8de
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 0 deletions.
10 changes: 10 additions & 0 deletions drivers/media/usb/em28xx/em28xx-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
10 changes: 10 additions & 0 deletions drivers/media/usb/em28xx/em28xx-input.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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 */
Expand Down
10 changes: 10 additions & 0 deletions drivers/media/usb/em28xx/em28xx-video.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 822b8de

Please sign in to comment.