History

[media] em28xx: fix xc3028 demod and firmware setup on DVB

Now that em28xx can be compiled without V4L support, we should call em28xx_setup_xc3028() on both em28xx-v4l and em28xx-dvb modules.

Mauro Carvalho Chehab committed 12 years ago

Commit ee972071 parent fa1e1de4 files · +55 −48Browse files

Unified · Split

4 files
  1. drivers/media/usb/em28xx/em28xx-cards.c +49 −0
  2. drivers/media/usb/em28xx/em28xx-dvb.c +5 −0
  3. drivers/media/usb/em28xx/em28xx-video.c +0 −48
  4. drivers/media/usb/em28xx/em28xx.h +1 −0
drivers/media/usb/em28xx/em28xx-cards.c+49−0
@@ -2768,6 +2768,55 @@ static void em28xx_card_setup(struct em28xx *dev) · 2767 unmodified lines
2768 dev->tuner_type = tuner;2768 dev->tuner_type = tuner;
2769}2769}
2770 2770
2771void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl)
2772{
2773 memset(ctl, 0, sizeof(*ctl));
2774
2775 ctl->fname = XC2028_DEFAULT_FIRMWARE;
2776 ctl->max_len = 64;
2777 ctl->mts = em28xx_boards[dev->model].mts_firmware;
2778
2779 switch (dev->model) {
2780 case EM2880_BOARD_EMPIRE_DUAL_TV:
2781 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
2782 case EM2882_BOARD_TERRATEC_HYBRID_XS:
2783 ctl->demod = XC3028_FE_ZARLINK456;
2784 break;
2785 case EM2880_BOARD_TERRATEC_HYBRID_XS:
2786 case EM2880_BOARD_TERRATEC_HYBRID_XS_FR:
2787 case EM2881_BOARD_PINNACLE_HYBRID_PRO:
2788 ctl->demod = XC3028_FE_ZARLINK456;
2789 break;
2790 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
2791 case EM2882_BOARD_PINNACLE_HYBRID_PRO_330E:
2792 ctl->demod = XC3028_FE_DEFAULT;
2793 break;
2794 case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
2795 ctl->demod = XC3028_FE_DEFAULT;
2796 ctl->fname = XC3028L_DEFAULT_FIRMWARE;
2797 break;
2798 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850:
2799 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950:
2800 case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
2801 /* FIXME: Better to specify the needed IF */
2802 ctl->demod = XC3028_FE_DEFAULT;
2803 break;
2804 case EM2883_BOARD_KWORLD_HYBRID_330U:
2805 case EM2882_BOARD_DIKOM_DK300:
2806 case EM2882_BOARD_KWORLD_VS_DVBT:
2807 ctl->demod = XC3028_FE_CHINA;
2808 ctl->fname = XC2028_DEFAULT_FIRMWARE;
2809 break;
2810 case EM2882_BOARD_EVGA_INDTUBE:
2811 ctl->demod = XC3028_FE_CHINA;
2812 ctl->fname = XC3028L_DEFAULT_FIRMWARE;
2813 break;
2814 default:
2815 ctl->demod = XC3028_FE_OREN538;
2816 }
2817}
2818EXPORT_SYMBOL_GPL(em28xx_setup_xc3028);
2819
2771static void request_module_async(struct work_struct *work)2820static void request_module_async(struct work_struct *work)
2772{2821{
2773 struct em28xx *dev = container_of(work,2822 struct em28xx *dev = container_of(work,
drivers/media/usb/em28xx/em28xx-dvb.c+5−0
@@ -828,11 +828,16 @@ static int em28xx_attach_xc3028(u8 addr, struct em28xx *dev) · 827 unmodified lines
828{828{
829 struct dvb_frontend *fe;829 struct dvb_frontend *fe;
830 struct xc2028_config cfg;830 struct xc2028_config cfg;
831 struct xc2028_ctrl ctl;
831 832
832 memset(&cfg, 0, sizeof(cfg));833 memset(&cfg, 0, sizeof(cfg));
833 cfg.i2c_adap = &dev->i2c_adap[dev->def_i2c_bus];834 cfg.i2c_adap = &dev->i2c_adap[dev->def_i2c_bus];
834 cfg.i2c_addr = addr;835 cfg.i2c_addr = addr;
835 836
837 memset(&ctl, 0, sizeof(ctl));
838 em28xx_setup_xc3028(dev, &ctl);
839 cfg.ctrl = &ctl;
840
836 if (!dev->dvb->fe[0]) {841 if (!dev->dvb->fe[0]) {
837 em28xx_errdev("/2: dvb frontend not attached. "842 em28xx_errdev("/2: dvb frontend not attached. "
838 "Can't attach xc3028\n");843 "Can't attach xc3028\n");
drivers/media/usb/em28xx/em28xx-video.c+0−48
@@ -2100,54 +2100,6 @@ static struct video_device *em28xx_vdev_init(struct em28xx *dev, · 2099 unmodified lines
2100 return vfd;2100 return vfd;
2101}2101}
2102 2102
2103static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl)
2104{
2105 memset(ctl, 0, sizeof(*ctl));
2106
2107 ctl->fname = XC2028_DEFAULT_FIRMWARE;
2108 ctl->max_len = 64;
2109 ctl->mts = em28xx_boards[dev->model].mts_firmware;
2110
2111 switch (dev->model) {
2112 case EM2880_BOARD_EMPIRE_DUAL_TV:
2113 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
2114 case EM2882_BOARD_TERRATEC_HYBRID_XS:
2115 ctl->demod = XC3028_FE_ZARLINK456;
2116 break;
2117 case EM2880_BOARD_TERRATEC_HYBRID_XS:
2118 case EM2880_BOARD_TERRATEC_HYBRID_XS_FR:
2119 case EM2881_BOARD_PINNACLE_HYBRID_PRO:
2120 ctl->demod = XC3028_FE_ZARLINK456;
2121 break;
2122 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
2123 case EM2882_BOARD_PINNACLE_HYBRID_PRO_330E:
2124 ctl->demod = XC3028_FE_DEFAULT;
2125 break;
2126 case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
2127 ctl->demod = XC3028_FE_DEFAULT;
2128 ctl->fname = XC3028L_DEFAULT_FIRMWARE;
2129 break;
2130 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850:
2131 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950:
2132 case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
2133 /* FIXME: Better to specify the needed IF */
2134 ctl->demod = XC3028_FE_DEFAULT;
2135 break;
2136 case EM2883_BOARD_KWORLD_HYBRID_330U:
2137 case EM2882_BOARD_DIKOM_DK300:
2138 case EM2882_BOARD_KWORLD_VS_DVBT:
2139 ctl->demod = XC3028_FE_CHINA;
2140 ctl->fname = XC2028_DEFAULT_FIRMWARE;
2141 break;
2142 case EM2882_BOARD_EVGA_INDTUBE:
2143 ctl->demod = XC3028_FE_CHINA;
2144 ctl->fname = XC3028L_DEFAULT_FIRMWARE;
2145 break;
2146 default:
2147 ctl->demod = XC3028_FE_OREN538;
2148 }
2149}
2150
2151static void em28xx_tuner_setup(struct em28xx *dev)2103static void em28xx_tuner_setup(struct em28xx *dev)
2152{2104{
2153 struct tuner_setup tun_setup;2105 struct tuner_setup tun_setup;
drivers/media/usb/em28xx/em28xx.h+1−0
@@ -762,6 +762,7 @@ void em28xx_close_extension(struct em28xx *dev); · 761 unmodified lines
762extern struct em28xx_board em28xx_boards[];762extern struct em28xx_board em28xx_boards[];
763extern struct usb_device_id em28xx_id_table[];763extern struct usb_device_id em28xx_id_table[];
764int em28xx_tuner_callback(void *ptr, int component, int command, int arg);764int em28xx_tuner_callback(void *ptr, int component, int command, int arg);
765void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl);
765void em28xx_release_resources(struct em28xx *dev);766void em28xx_release_resources(struct em28xx *dev);
766 767
767/* Provided by em28xx-camera.c */768/* Provided by em28xx-camera.c */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t