(a better request) Hallo, I'm new to linux and step by step learning by working with debian. I'm using the 2.6.32-5-686 kernel and i have no knowledge about c+ other then common sense and copy-paste. (upgrading to the latest kernel will be a project in the future). I've mechanical opened a :ZOLID Hybrid TV Stick, a usb dvb-t analog and digital receiver (the : in front of the name is no typo mistake). Next hardware was found, EM2882 - XC3028L (needs XC3028L-v36.fw) - WJCE6353 (equal to ZL10353) - TVP5150 - EM202 - T24LC02. I believe every component is known by the EM28xx driver but not in this specific configuration and therefore no card in the EM28xx driver was found as a direct (or induced) match. I've made some modifications in the source code em28xx.h, em28xx-dvb.c and em28xx-cards.c (see below). Successfully compiled the driver, made progress but sadly no victory. After a "scan /usr/share/dvb/dvb-t/nl-all" and at each frequentie tuning failed, the following lines were added to the dmesg. [ 2876.028035] xc2028 3-0061: Loading firmware for type=BASE F8MHZ MTS (7), id 0000000000000000. [ 2876.949274] xc2028 3-0061: Loading firmware for type=D2633 DTV8 (210), id 0000000000000000. [ 2876.961893] xc2028 3-0061: Loading SCODE for type=DTV6 QAM DTV7 ZARLINK456 SCODE HAS_IF_4760 (620000e0), id 0000000000000000. At this point i think i have two problems which i cannot solve. * gpio values em2882. * dmesg informed me the stick uses a IF=4500 which isn't listed in tuner_xc2028.h (XC3028L-v36.fw ??). I'm stuck and i hope some one can help me to take the next step. Thanks. Marcel Stork (Netherlands). Modifications: ________________________________________________________________________ em28xx.h ------------------------------------------------------------------------ + #define EM2882_BOARD_ZOLID_HYBRID_TV_STICK 74 ________________________________________________________________________ em28xx-dvb.c ------------------------------------------------------------------------ + static struct zl10353_config em28xx_zl10353_with_xc3028_zolid = { + .demod_address = (0x1e >> 1), + .no_tuner = 1, + .parallel_ts = 1, + .if2 = 45000, + }; ------------------------------------------------------------------------ static int dvb_init(struct em28xx *dev) + case EM2882_BOARD_ZOLID_HYBRID_TV_STICK: + dvb->frontend = dvb_attach(zl10353_attach, + &em28xx_zl10353_with_xc3028_zolid, + &dev->i2c_adap); + if (attach_xc3028(0x61, dev) < 0) { + result = -EINVAL; + goto out_free; + } + break; ________________________________________________________________________ em28xx-cards.c ------------------------------------------------------------------------ + static struct em28xx_reg_seq zolid_tuner_gpio[] = { /* [FIXME-MJS] */ + {EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10}, + {EM28XX_R08_GPIO, 0 , EM_GPIO_4, 10}, + {EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10}, + { -1 , -1 , -1 , -1}, + }; + static struct em28xx_reg_seq zolid_digital[] = { /* [FIXME-MJS] */ + {EM28XX_R08_GPIO, 0x6e, ~EM_GPIO_4, 10}, + {EM2880_R04_GPO , 0x04, 0xff , 100}, /* zl10353 reset */ + {EM2880_R04_GPO , 0x0c, 0xff , 1}, + { -1 , -1 , -1 , -1}, + }; + static struct em28xx_reg_seq zolid_analog[] = { /* [FIXME-MJS] */ + {EM28XX_R08_GPIO, 0x6d, ~EM_GPIO_4, 10}, + { -1 , -1 , -1 , -1}, + }; ------------------------------------------------------------------------ struct em28xx_board em28xx_boards[] = { + [EM2882_BOARD_ZOLID_HYBRID_TV_STICK] = { + .name = ":ZOLID Hybrid TV Stick", + .tuner_type = TUNER_XC2028, + .tuner_gpio = zolid_tuner_gpio, + .decoder = EM28XX_TVP5150, + .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, + .mts_firmware = 1, + .has_dvb = 1, + .dvb_gpio = zolid_digital, + /* .ir_codes = &ir_codes_evga_indtube_table, [FIXME-MJS] */ + .input = { { + .type = EM28XX_VMUX_TELEVISION, + .vmux = TVP5150_COMPOSITE0, + .amux = EM28XX_AMUX_VIDEO, + .gpio = zolid_analog, + }, { + .type = EM28XX_VMUX_COMPOSITE1, + .vmux = TVP5150_COMPOSITE1, + .amux = EM28XX_AMUX_LINE_IN, + .gpio = zolid_analog, + }, { + .type = EM28XX_VMUX_SVIDEO, + .vmux = TVP5150_SVIDEO, + .amux = EM28XX_AMUX_LINE_IN, + .gpio = zolid_analog, + } }, + }, ------------------------------------------------------------------------ struct usb_device_id em28xx_id_table[] = { - { USB_DEVICE(0xeb1a, 0x2883), /* Delete cause */ - .driver_info = EM2880_BOARD_UNKNOWN }, /* same vid/pid */ + { USB_DEVICE(0xeb1a, 0x2883), + .driver_info = EM2882_BOARD_ZOLID_HYBRID_TV_STICK }, ------------------------------------------------------------------------ static struct em28xx_hash_table em28xx_eeprom_hash[] = { + {0x85dd871e, EM2882_BOARD_ZOLID_HYBRID_TV_STICK, TUNER_XC2028}, ------------------------------------------------------------------------ static struct em28xx_hash_table em28xx_i2c_hash[] = { + {0xb06a32c3, EM2882_BOARD_ZOLID_HYBRID_TV_STICK, TUNER_XC2028}, ------------------------------------------------------------------------ static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ ctrl *ctl) + case EM2882_BOARD_ZOLID_HYBRID_TV_STICK: /* [FIXME-MJS] */ + ctl->demod = XC3028_FE_ZARLINK456; /* according dmesg */ + ctl->fname = XC3028L_DEFAULT_FIRMWARE; /* if = 45000 */ + break; Lsmod: Module Size Used by zl10353 4961 1 em28xx_dvb 5609 0 dvb_core 62606 1 em28xx_dvb em28xx_alsa 4831 0 tuner_xc2028 14609 2 tuner 14428 1 tvp5150 9262 1 em28xx 63029 2 em28xx_dvb,em28xx_alsa v4l2_common 9776 3 tuner,tvp5150,em28xx ir_common 22187 1 em28xx videobuf_vmalloc 3860 1 em28xx videobuf_core 10452 2 em28xx,videobuf_vmalloc tveeprom 9393 1 em28xx aes_i586 6816 2 aes_generic 25738 1 aes_i586 lib80211_crypt_ccmp 3643 2 cpufreq_powersave 602 0 cpufreq_stats 1997 0 cpufreq_conservative 4018 0 cpufreq_userspace 1456 0 parport_pc 15799 0 ppdev 4058 0 lp 5570 0 parport 22554 3 parport_pc,ppdev,lp sco 5885 2 bridge 32943 0 stp 996 1 bridge bnep 7408 2 rfcomm 25147 0 l2cap 21745 4 bnep,rfcomm crc16 1027 1 l2cap bluetooth 36287 6 sco,bnep,rfcomm,l2cap rfkill 10220 3 bluetooth binfmt_misc 4879 1 uinput 4796 1 fuse 44196 1 gspca_sunplus 11210 0 gspca_main 15775 1 gspca_sunplus videodev 25573 5 tuner,tvp5150,em28xx,v4l2_common, gspca_main v4l1_compat 10250 1 videodev loop 9745 0 firewire_sbp2 9603 0 snd_hda_codec_realtek 163390 1 snd_hda_codec_si3054 2410 1 snd_hda_intel 16635 1 snd_hda_codec 46066 3 snd_hda_codec_realtek, snd_hda_codec_si3054,snd_hda_intel snd_hwdep 4054 1 snd_hda_codec snd_pcm 47226 4 em28xx_alsa,snd_hda_codec_si3054, snd_hda_intel,snd_hda_codec snd_seq 35375 0 joydev 6739 0 snd_timer 12270 2 snd_pcm,snd_seq ipw2200 108300 0 snd_seq_device 3673 1 snd_seq i915 223838 2 libipw 18415 1 ipw2200 drm_kms_helper 18545 1 i915 drm 112489 3 i915,drm_kms_helper i2c_algo_bit 3493 1 i915 i2c_i801 6462 0 psmouse 44817 0 snd 34399 12 em28xx_alsa,snd_hda_codec_realtek, snd_hda_codec_si3054,snd_hda_intel, snd_hda_codec,snd_hwdep,snd_pcm, snd_seq,snd_timer,snd_seq_device pcspkr 1207 0 evdev 5609 15 serio_raw 2916 0 ac 1636 0 battery 3782 0 video 14605 1 i915 processor 26283 1 button 3598 1 i915 i2c_core 12763 13 zl10353,tuner_xc2028,tuner,tvp5150, em28xx,v4l2_common,tveeprom,videodev, i915,drm_kms_helper,drm,i2c_algo_bit, i2c_i801 rng_core 2178 0 lib80211 2846 3 lib80211_crypt_ccmp,ipw2200,libipw soundcore 3450 1 snd output 1204 1 video snd_page_alloc 5001 2 snd_hda_intel,snd_pcm ext3 94204 5 jbd 32269 1 ext3 mbcache 3762 1 ext3 sg 19917 0 sr_mod 10770 0 sd_mod 25969 7 crc_t10dif 1012 1 sd_mod cdrom 26435 1 sr_mod ata_generic 2247 0 8139too 14885 0 ata_piix 17716 6 ahci 27786 0 8139cp 13333 0 firewire_ohci 16705 0 libata 115713 3 ata_generic,ata_piix,ahci uhci_hcd 16013 0 thermal 9206 0 mii 2714 2 8139too,8139cp firewire_core 31155 2 firewire_sbp2,firewire_ohci crc_itu_t 1035 1 firewire_core ehci_hcd 28533 0 scsi_mod 104949 5 firewire_sbp2,sg,sr_mod,sd_mod,libata usbcore 99350 8 em28xx_dvb,em28xx_alsa,em28xx,ehci_hcd, gspca_sunplus,gspca_main,uhci_hcd nls_base 4727 1 usbcore thermal_sys 9378 3 video,processor,thermal Dmesg: [ 2530.756044] usb 1-3: new high speed USB device using ehci_hcd and address 2 [ 2530.893179] usb 1-3: New USB device found, idVendor=eb1a, idProduct=2883 [ 2530.893190] usb 1-3: New USB device strings: Mfr=0, Product=1, SerialNumber=2 [ 2530.893200] usb 1-3: Product: USB 2883 Device [ 2530.893207] usb 1-3: SerialNumber: 200804 [ 2530.895014] usb 1-3: configuration #1 chosen from 1 choice [ 2531.425003] em28xx: New device USB 2883 Device @ 480 Mbps (eb1a:2883, interface 0, class 0) [ 2531.425200] em28xx #0: chip ID is em2882/em2883 [ 2531.581575] em28xx #0: i2c eeprom 00: 1a eb 67 95 1a eb 83 28 d0 12 65 00 6a 22 8c 10 [ 2531.581608] em28xx #0: i2c eeprom 10: 00 00 24 57 4e 37 01 00 60 00 00 00 02 00 00 00 [ 2531.581639] em28xx #0: i2c eeprom 20: 5e 00 01 00 f0 10 01 00 b8 00 00 00 5b 1e 00 00 [ 2531.581669] em28xx #0: i2c eeprom 30: 00 00 20 40 20 6e 04 20 01 01 00 00 00 00 00 00 [ 2531.581699] em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 d3 c4 00 00 [ 2531.581729] em28xx #0: i2c eeprom 50: 00 a2 b2 87 81 80 00 00 00 00 00 00 00 00 00 00 [ 2531.581758] em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 22 03 55 00 53 00 [ 2531.581788] em28xx #0: i2c eeprom 70: 42 00 20 00 32 00 38 00 38 00 33 00 20 00 44 00 [ 2531.581818] em28xx #0: i2c eeprom 80: 65 00 76 00 69 00 63 00 65 00 00 00 10 03 32 00 [ 2531.581848] em28xx #0: i2c eeprom 90: 30 00 30 00 38 00 30 00 34 00 00 00 00 00 00 00 [ 2531.581878] em28xx #0: i2c eeprom a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 2531.581907] em28xx #0: i2c eeprom b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 2531.581937] em28xx #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 2531.581966] em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 2531.581996] em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 2531.582025] em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 2531.582060] em28xx #0: EEPROM ID= 0x9567eb1a, EEPROM hash = 0x85dd871e [ 2531.582067] em28xx #0: EEPROM info: [ 2531.582073] em28xx #0: AC97 audio (5 sample rates) [ 2531.582079] em28xx #0: 500mA max power [ 2531.582087] em28xx #0: Table at 0x24, strings=0x226a, 0x108c, 0x0000 [ 2531.582819] em28xx #0: Identified as :ZOLID Hybrid TV Stick (card=74) [ 2531.616392] tvp5150 3-005c: chip found @ 0xb8 (em28xx #0) [ 2531.645143] tuner 3-0061: chip found @ 0xc2 (em28xx #0) [ 2531.691798] xc2028 3-0061: creating new instance [ 2531.691809] xc2028 3-0061: type set to XCeive xc2028/xc3028 tuner [ 2531.691826] usb 1-3: firmware: requesting xc3028L-v36.fw [ 2531.709045] xc2028 3-0061: Loading 81 firmware images from xc3028L-v36.fw, type: xc2028 firmware, ver 3.6 [ 2531.756034] xc2028 3-0061: Loading firmware for type=BASE MTS (5), id 0000000000000000. [ 2532.661365] xc2028 3-0061: Loading firmware for type=MTS (4), id 000000000000b700. [ 2532.675734] xc2028 3-0061: Loading SCODE for type=MTS LCD NOGD MONO IF SCODE HAS_IF_4500 (6002b004), id 000000000000b700. [ 2532.860114] em28xx #0: Config register raw data: 0xd0 [ 2532.860857] em28xx #0: AC97 vendor ID = 0xffffffff [ 2532.861233] em28xx #0: AC97 features = 0x6a90 [ 2532.861239] em28xx #0: Empia 202 AC97 audio processor detected [ 2532.972493] tvp5150 3-005c: tvp5150am1 detected. [ 2533.068873] em28xx #0: v4l2 driver version 0.1.2 [ 2533.139659] em28xx #0: V4L2 video device registered as /dev/video0 [ 2533.139668] em28xx #0: V4L2 VBI device registered as /dev/vbi0 [ 2533.156139] usbcore: registered new interface driver em28xx [ 2533.156795] em28xx driver loaded [ 2533.273556] em28xx-audio.c: probing for em28x1 non standard usbaudio [ 2533.273566] em28xx-audio.c: Copyright (C) 2006 Markus Rechberger [ 2533.276830] Em28xx: Initialized (Em28xx Audio Extension) extension [ 2533.642770] xc2028 3-0061: attaching existing instance [ 2533.642781] xc2028 3-0061: type set to XCeive xc2028/xc3028 tuner [ 2533.642789] em28xx #0/2: xc3028 attached [ 2533.642795] DVB: registering new adapter (em28xx #0) [ 2533.642806] DVB: registering adapter 0 frontend 0 (Zarlink ZL10353 DVB-T)... [ 2533.647152] Successfully loaded em28xx-dvb [ 2533.647161] Em28xx: Initialized (Em28xx dvb Extension) extension -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html