[media] em28xx: check if a device has audio earlier
Better to split chipset detection from the audio setup. So, move the detection code to em28xx_init_dev(). Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
Родитель
9634614f35
Коммит
b99f0aadd3
|
@ -2930,6 +2930,16 @@ static int em28xx_init_dev(struct em28xx *dev, struct usb_device *udev,
|
|||
}
|
||||
}
|
||||
|
||||
if (dev->chip_id == CHIP_ID_EM2870 ||
|
||||
dev->chip_id == CHIP_ID_EM2874 ||
|
||||
dev->chip_id == CHIP_ID_EM28174 ||
|
||||
dev->chip_id == CHIP_ID_EM28178) {
|
||||
/* Digital only device - don't load any alsa module */
|
||||
dev->audio_mode.has_audio = false;
|
||||
dev->has_audio_class = false;
|
||||
dev->has_alsa_audio = false;
|
||||
}
|
||||
|
||||
if (chip_name != default_chip_name)
|
||||
printk(KERN_INFO DRIVER_NAME
|
||||
": chip ID is %s\n", chip_name);
|
||||
|
@ -3199,6 +3209,7 @@ static int em28xx_usb_probe(struct usb_interface *interface,
|
|||
dev->alt = -1;
|
||||
dev->is_audio_only = has_audio && !(has_video || has_dvb);
|
||||
dev->has_alsa_audio = has_audio;
|
||||
dev->audio_mode.has_audio = has_audio;
|
||||
dev->has_video = has_video;
|
||||
dev->audio_ifnum = ifnum;
|
||||
|
||||
|
|
|
@ -505,18 +505,8 @@ int em28xx_audio_setup(struct em28xx *dev)
|
|||
int vid1, vid2, feat, cfg;
|
||||
u32 vid;
|
||||
|
||||
if (dev->chip_id == CHIP_ID_EM2870 ||
|
||||
dev->chip_id == CHIP_ID_EM2874 ||
|
||||
dev->chip_id == CHIP_ID_EM28174 ||
|
||||
dev->chip_id == CHIP_ID_EM28178) {
|
||||
/* Digital only device - don't load any alsa module */
|
||||
dev->audio_mode.has_audio = false;
|
||||
dev->has_audio_class = false;
|
||||
dev->has_alsa_audio = false;
|
||||
if (!dev->audio_mode.has_audio)
|
||||
return 0;
|
||||
}
|
||||
|
||||
dev->audio_mode.has_audio = true;
|
||||
|
||||
/* See how this device is configured */
|
||||
cfg = em28xx_read_reg(dev, EM28XX_R00_CHIPCFG);
|
||||
|
|
Загрузка…
Ссылка в новой задаче