Lines Matching refs:dev

35 int tm6000_read_write_usb(struct tm6000_core *dev, u8 req_type, u8 req,  in tm6000_read_write_usb()  argument
49 mutex_lock(&dev->usb_lock); in tm6000_read_write_usb()
52 pipe = usb_rcvctrlpipe(dev->udev, 0); in tm6000_read_write_usb()
54 pipe = usb_sndctrlpipe(dev->udev, 0); in tm6000_read_write_usb()
59 printk(KERN_DEBUG "(dev %p, pipe %08x): ", dev->udev, pipe); in tm6000_read_write_usb()
74 ret = usb_control_msg(dev->udev, pipe, req, req_type, value, index, in tm6000_read_write_usb()
96 if (dev->quirks & TM6000_QUIRK_NO_USB_DELAY) in tm6000_read_write_usb()
110 mutex_unlock(&dev->usb_lock); in tm6000_read_write_usb()
114 int tm6000_set_reg(struct tm6000_core *dev, u8 req, u16 value, u16 index) in tm6000_set_reg() argument
117 tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR, in tm6000_set_reg()
122 int tm6000_get_reg(struct tm6000_core *dev, u8 req, u16 value, u16 index) in tm6000_get_reg() argument
127 rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR, req, in tm6000_get_reg()
137 int tm6000_set_reg_mask(struct tm6000_core *dev, u8 req, u16 value, in tm6000_set_reg_mask() argument
144 rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR, req, in tm6000_set_reg_mask()
155 return tm6000_read_write_usb(dev, USB_DIR_OUT | USB_TYPE_VENDOR, in tm6000_set_reg_mask()
160 int tm6000_get_reg16(struct tm6000_core *dev, u8 req, u16 value, u16 index) in tm6000_get_reg16() argument
165 rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR, req, in tm6000_get_reg16()
174 int tm6000_get_reg32(struct tm6000_core *dev, u8 req, u16 value, u16 index) in tm6000_get_reg32() argument
179 rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR, req, in tm6000_get_reg32()
188 int tm6000_i2c_reset(struct tm6000_core *dev, u16 tsleep) in tm6000_i2c_reset() argument
192 rc = tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6000_GPIO_CLK, 0); in tm6000_i2c_reset()
198 rc = tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6000_GPIO_CLK, 1); in tm6000_i2c_reset()
204 void tm6000_set_fourcc_format(struct tm6000_core *dev) in tm6000_set_fourcc_format() argument
206 if (dev->dev_type == TM6010) { in tm6000_set_fourcc_format()
209 val = tm6000_get_reg(dev, TM6010_REQ07_RCC_ACTIVE_IF, 0) & 0xfc; in tm6000_set_fourcc_format()
210 if (dev->fourcc == V4L2_PIX_FMT_UYVY) in tm6000_set_fourcc_format()
211 tm6000_set_reg(dev, TM6010_REQ07_RCC_ACTIVE_IF, val); in tm6000_set_fourcc_format()
213 tm6000_set_reg(dev, TM6010_REQ07_RCC_ACTIVE_IF, val | 1); in tm6000_set_fourcc_format()
215 if (dev->fourcc == V4L2_PIX_FMT_UYVY) in tm6000_set_fourcc_format()
216 tm6000_set_reg(dev, TM6010_REQ07_RC1_TRESHOLD, 0xd0); in tm6000_set_fourcc_format()
218 tm6000_set_reg(dev, TM6010_REQ07_RC1_TRESHOLD, 0x90); in tm6000_set_fourcc_format()
222 static void tm6000_set_vbi(struct tm6000_core *dev) in tm6000_set_vbi() argument
232 if (dev->dev_type == TM6010) { in tm6000_set_vbi()
233 tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x01); in tm6000_set_vbi()
234 tm6000_set_reg(dev, TM6010_REQ07_R41_TELETEXT_VBI_CODE1, 0x27); in tm6000_set_vbi()
235 tm6000_set_reg(dev, TM6010_REQ07_R42_VBI_DATA_HIGH_LEVEL, 0x55); in tm6000_set_vbi()
236 tm6000_set_reg(dev, TM6010_REQ07_R43_VBI_DATA_TYPE_LINE7, 0x66); in tm6000_set_vbi()
237 tm6000_set_reg(dev, TM6010_REQ07_R44_VBI_DATA_TYPE_LINE8, 0x66); in tm6000_set_vbi()
238 tm6000_set_reg(dev, TM6010_REQ07_R45_VBI_DATA_TYPE_LINE9, 0x66); in tm6000_set_vbi()
239 tm6000_set_reg(dev, in tm6000_set_vbi()
241 tm6000_set_reg(dev, in tm6000_set_vbi()
243 tm6000_set_reg(dev, in tm6000_set_vbi()
245 tm6000_set_reg(dev, in tm6000_set_vbi()
247 tm6000_set_reg(dev, in tm6000_set_vbi()
249 tm6000_set_reg(dev, in tm6000_set_vbi()
251 tm6000_set_reg(dev, in tm6000_set_vbi()
253 tm6000_set_reg(dev, in tm6000_set_vbi()
255 tm6000_set_reg(dev, in tm6000_set_vbi()
257 tm6000_set_reg(dev, in tm6000_set_vbi()
259 tm6000_set_reg(dev, in tm6000_set_vbi()
261 tm6000_set_reg(dev, in tm6000_set_vbi()
263 tm6000_set_reg(dev, in tm6000_set_vbi()
265 tm6000_set_reg(dev, in tm6000_set_vbi()
267 tm6000_set_reg(dev, in tm6000_set_vbi()
269 tm6000_set_reg(dev, in tm6000_set_vbi()
271 tm6000_set_reg(dev, in tm6000_set_vbi()
273 tm6000_set_reg(dev, in tm6000_set_vbi()
275 tm6000_set_reg(dev, TM6010_REQ07_R58_VBI_CAPTION_DTO1, 0x35); in tm6000_set_vbi()
276 tm6000_set_reg(dev, TM6010_REQ07_R59_VBI_CAPTION_DTO0, 0xa0); in tm6000_set_vbi()
277 tm6000_set_reg(dev, TM6010_REQ07_R5A_VBI_TELETEXT_DTO1, 0x11); in tm6000_set_vbi()
278 tm6000_set_reg(dev, TM6010_REQ07_R5B_VBI_TELETEXT_DTO0, 0x4c); in tm6000_set_vbi()
279 tm6000_set_reg(dev, TM6010_REQ07_R40_TELETEXT_VBI_CODE0, 0x01); in tm6000_set_vbi()
280 tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x00); in tm6000_set_vbi()
284 int tm6000_init_analog_mode(struct tm6000_core *dev) in tm6000_init_analog_mode() argument
288 if (dev->dev_type == TM6010) { in tm6000_init_analog_mode()
291 if (!dev->radio) in tm6000_init_analog_mode()
295 tm6000_set_reg_mask(dev, TM6010_REQ07_RCC_ACTIVE_IF, in tm6000_init_analog_mode()
298 tm6000_set_reg_mask(dev, TM6010_REQ07_RC0_ACTIVE_VIDEO_SOURCE, in tm6000_init_analog_mode()
302 tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x01); in tm6000_init_analog_mode()
304 if (dev->scaler) in tm6000_init_analog_mode()
306 tm6000_set_reg(dev, TM6010_REQ07_RC0_ACTIVE_VIDEO_SOURCE, 0x20); in tm6000_init_analog_mode()
308 tm6000_set_reg(dev, TM6010_REQ07_RC0_ACTIVE_VIDEO_SOURCE, 0x80); in tm6000_init_analog_mode()
310 tm6000_set_reg(dev, TM6010_REQ07_RC3_HSTART1, 0x88); in tm6000_init_analog_mode()
311 tm6000_set_reg(dev, TM6000_REQ07_RDA_CLK_SEL, 0x23); in tm6000_init_analog_mode()
312 tm6000_set_reg(dev, TM6010_REQ07_RD1_ADDR_FOR_REQ1, 0xc0); in tm6000_init_analog_mode()
313 tm6000_set_reg(dev, TM6010_REQ07_RD2_ADDR_FOR_REQ2, 0xd8); in tm6000_init_analog_mode()
314 tm6000_set_reg(dev, TM6010_REQ07_RD6_ENDP_REQ1_REQ2, 0x06); in tm6000_init_analog_mode()
315 tm6000_set_reg(dev, TM6000_REQ07_RDF_PWDOWN_ACLK, 0x1f); in tm6000_init_analog_mode()
318 tm6000_set_reg(dev, TM6010_REQ07_RFF_SOFT_RESET, 0x08); in tm6000_init_analog_mode()
319 tm6000_set_reg(dev, TM6010_REQ07_RFF_SOFT_RESET, 0x00); in tm6000_init_analog_mode()
321 tm6000_set_fourcc_format(dev); in tm6000_init_analog_mode()
324 tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x00); in tm6000_init_analog_mode()
340 f.frequency = dev->freq; in tm6000_init_analog_mode()
341 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_frequency, &f); in tm6000_init_analog_mode()
344 tm6000_set_standard(dev); in tm6000_init_analog_mode()
345 tm6000_set_vbi(dev); in tm6000_init_analog_mode()
346 tm6000_set_audio_bitrate(dev, 48000); in tm6000_init_analog_mode()
349 if (dev->gpio.dvb_led) { in tm6000_init_analog_mode()
350 tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, in tm6000_init_analog_mode()
351 dev->gpio.dvb_led, 0x01); in tm6000_init_analog_mode()
357 int tm6000_init_digital_mode(struct tm6000_core *dev) in tm6000_init_digital_mode() argument
359 if (dev->dev_type == TM6010) { in tm6000_init_digital_mode()
361 tm6000_set_reg_mask(dev, TM6010_REQ07_RCC_ACTIVE_IF, in tm6000_init_digital_mode()
364 tm6000_set_reg_mask(dev, TM6010_REQ07_RC0_ACTIVE_VIDEO_SOURCE, in tm6000_init_digital_mode()
367 tm6000_set_reg(dev, TM6010_REQ07_RFE_POWER_DOWN, 0x28); in tm6000_init_digital_mode()
368 tm6000_set_reg(dev, TM6010_REQ08_RE2_POWER_DOWN_CTRL1, 0xfc); in tm6000_init_digital_mode()
369 tm6000_set_reg(dev, TM6010_REQ08_RE6_POWER_DOWN_CTRL2, 0xff); in tm6000_init_digital_mode()
371 tm6000_set_reg(dev, TM6010_REQ07_RFF_SOFT_RESET, 0x08); in tm6000_init_digital_mode()
372 tm6000_set_reg(dev, TM6010_REQ07_RFF_SOFT_RESET, 0x00); in tm6000_init_digital_mode()
373 tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x01); in tm6000_init_digital_mode()
374 tm6000_set_reg(dev, TM6000_REQ07_RDF_PWDOWN_ACLK, 0x08); in tm6000_init_digital_mode()
375 tm6000_set_reg(dev, TM6000_REQ07_RE2_VADC_STATUS_CTL, 0x0c); in tm6000_init_digital_mode()
376 tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0xff); in tm6000_init_digital_mode()
377 tm6000_set_reg(dev, TM6000_REQ07_REB_VADC_AADC_MODE, 0xd8); in tm6000_init_digital_mode()
378 tm6000_set_reg(dev, TM6010_REQ07_RC0_ACTIVE_VIDEO_SOURCE, 0x40); in tm6000_init_digital_mode()
379 tm6000_set_reg(dev, TM6010_REQ07_RC1_TRESHOLD, 0xd0); in tm6000_init_digital_mode()
380 tm6000_set_reg(dev, TM6010_REQ07_RC3_HSTART1, 0x09); in tm6000_init_digital_mode()
381 tm6000_set_reg(dev, TM6000_REQ07_RDA_CLK_SEL, 0x37); in tm6000_init_digital_mode()
382 tm6000_set_reg(dev, TM6010_REQ07_RD1_ADDR_FOR_REQ1, 0xd8); in tm6000_init_digital_mode()
383 tm6000_set_reg(dev, TM6010_REQ07_RD2_ADDR_FOR_REQ2, 0xc0); in tm6000_init_digital_mode()
384 tm6000_set_reg(dev, TM6010_REQ07_RD6_ENDP_REQ1_REQ2, 0x60); in tm6000_init_digital_mode()
386 tm6000_set_reg(dev, TM6000_REQ07_RE2_VADC_STATUS_CTL, 0x0c); in tm6000_init_digital_mode()
387 tm6000_set_reg(dev, TM6000_REQ07_RE8_VADC_PWDOWN_CTL, 0xff); in tm6000_init_digital_mode()
388 tm6000_set_reg(dev, TM6000_REQ07_REB_VADC_AADC_MODE, 0x08); in tm6000_init_digital_mode()
391 tm6000_set_reg(dev, REQ_04_EN_DISABLE_MCU_INT, 0x0020, 0x00); in tm6000_init_digital_mode()
393 tm6000_set_reg(dev, REQ_04_EN_DISABLE_MCU_INT, 0x0020, 0x01); in tm6000_init_digital_mode()
395 tm6000_set_reg(dev, REQ_04_EN_DISABLE_MCU_INT, 0x0020, 0x00); in tm6000_init_digital_mode()
400 if (dev->gpio.dvb_led) { in tm6000_init_digital_mode()
401 tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, in tm6000_init_digital_mode()
402 dev->gpio.dvb_led, 0x00); in tm6000_init_digital_mode()
568 int tm6000_init(struct tm6000_core *dev) in tm6000_init() argument
574 board = tm6000_get_reg32(dev, REQ_40_GET_VERSION, 0, 0); in tm6000_init()
579 if (dev->dev_type != TM6000) in tm6000_init()
580 dev->dev_type = TM6000; in tm6000_init()
584 if (dev->dev_type != TM6010) in tm6000_init()
585 dev->dev_type = TM6010; in tm6000_init()
593 if (dev->dev_type == TM6010) { in tm6000_init()
603 rc = tm6000_set_reg(dev, tab[i].req, tab[i].reg, tab[i].val); in tm6000_init()
614 rc = tm6000_cards_setup(dev); in tm6000_init()
620 int tm6000_set_audio_bitrate(struct tm6000_core *dev, int bitrate) in tm6000_set_audio_bitrate() argument
630 dev->audio_bitrate = bitrate; in tm6000_set_audio_bitrate()
635 dev->audio_bitrate = bitrate; in tm6000_set_audio_bitrate()
643 if (dev->dev_type == TM6010) { in tm6000_set_audio_bitrate()
644 val = tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, areg_0a); in tm6000_set_audio_bitrate()
648 val = tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, in tm6000_set_audio_bitrate()
653 val = tm6000_set_reg_mask(dev, TM6000_REQ07_REB_VADC_AADC_MODE, in tm6000_set_audio_bitrate()
662 int tm6000_set_audio_rinput(struct tm6000_core *dev) in tm6000_set_audio_rinput() argument
664 if (dev->dev_type == TM6010) { in tm6000_set_audio_rinput()
669 switch (dev->rinput.amux) { in tm6000_set_audio_rinput()
686 dev->name); in tm6000_set_audio_rinput()
691 tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, in tm6000_set_audio_rinput()
694 tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, in tm6000_set_audio_rinput()
699 switch (dev->rinput.amux) { in tm6000_set_audio_rinput()
708 dev->name); in tm6000_set_audio_rinput()
713 tm6000_set_reg_mask(dev, TM6000_REQ07_REB_VADC_AADC_MODE, in tm6000_set_audio_rinput()
719 static void tm6010_set_mute_sif(struct tm6000_core *dev, u8 mute) in tm6010_set_mute_sif() argument
726 tm6000_set_reg_mask(dev, TM6010_REQ08_R0A_A_I2S_MOD, mute_reg, 0x08); in tm6010_set_mute_sif()
729 static void tm6010_set_mute_adc(struct tm6000_core *dev, u8 mute) in tm6010_set_mute_adc() argument
736 if (dev->dev_type == TM6010) { in tm6010_set_mute_adc()
737 tm6000_set_reg_mask(dev, TM6010_REQ08_RF2_LEFT_CHANNEL_VOL, in tm6010_set_mute_adc()
739 tm6000_set_reg_mask(dev, TM6010_REQ08_RF3_RIGHT_CHANNEL_VOL, in tm6010_set_mute_adc()
742 tm6000_set_reg_mask(dev, TM6000_REQ07_REC_VADC_AADC_LVOL, in tm6010_set_mute_adc()
744 tm6000_set_reg_mask(dev, TM6000_REQ07_RED_VADC_AADC_RVOL, in tm6010_set_mute_adc()
749 int tm6000_tvaudio_set_mute(struct tm6000_core *dev, u8 mute) in tm6000_tvaudio_set_mute() argument
753 if (dev->radio) in tm6000_tvaudio_set_mute()
754 mux = dev->rinput.amux; in tm6000_tvaudio_set_mute()
756 mux = dev->vinput[dev->input].amux; in tm6000_tvaudio_set_mute()
761 if (dev->dev_type == TM6010) in tm6000_tvaudio_set_mute()
762 tm6010_set_mute_sif(dev, mute); in tm6000_tvaudio_set_mute()
766 " configuration.\n", dev->name); in tm6000_tvaudio_set_mute()
772 tm6010_set_mute_adc(dev, mute); in tm6000_tvaudio_set_mute()
781 static void tm6010_set_volume_sif(struct tm6000_core *dev, int vol) in tm6010_set_volume_sif() argument
790 tm6000_set_reg(dev, TM6010_REQ08_R07_A_LEFT_VOL, vol_reg); in tm6010_set_volume_sif()
791 tm6000_set_reg(dev, TM6010_REQ08_R08_A_RIGHT_VOL, vol_reg); in tm6010_set_volume_sif()
794 static void tm6010_set_volume_adc(struct tm6000_core *dev, int vol) in tm6010_set_volume_adc() argument
800 if (dev->dev_type == TM6010) { in tm6010_set_volume_adc()
801 tm6000_set_reg(dev, TM6010_REQ08_RF2_LEFT_CHANNEL_VOL, vol_reg); in tm6010_set_volume_adc()
802 tm6000_set_reg(dev, TM6010_REQ08_RF3_RIGHT_CHANNEL_VOL, vol_reg); in tm6010_set_volume_adc()
804 tm6000_set_reg(dev, TM6000_REQ07_REC_VADC_AADC_LVOL, vol_reg); in tm6010_set_volume_adc()
805 tm6000_set_reg(dev, TM6000_REQ07_RED_VADC_AADC_RVOL, vol_reg); in tm6010_set_volume_adc()
809 void tm6000_set_volume(struct tm6000_core *dev, int vol) in tm6000_set_volume() argument
813 if (dev->radio) { in tm6000_set_volume()
814 mux = dev->rinput.amux; in tm6000_set_volume()
817 mux = dev->vinput[dev->input].amux; in tm6000_set_volume()
822 if (dev->dev_type == TM6010) in tm6000_set_volume()
823 tm6010_set_volume_sif(dev, vol); in tm6000_set_volume()
827 " configuration.\n", dev->name); in tm6000_set_volume()
831 tm6010_set_volume_adc(dev, vol); in tm6000_set_volume()
845 void tm6000_remove_from_devlist(struct tm6000_core *dev) in tm6000_remove_from_devlist() argument
848 list_del(&dev->devlist); in tm6000_remove_from_devlist()
852 void tm6000_add_into_devlist(struct tm6000_core *dev) in tm6000_add_into_devlist() argument
855 list_add_tail(&dev->devlist, &tm6000_devlist); in tm6000_add_into_devlist()
865 int tm6000_call_fillbuf(struct tm6000_core *dev, enum tm6000_ops_type type, in tm6000_call_fillbuf() argument
875 ops->fillbuf(dev, buf, size); in tm6000_call_fillbuf()
884 struct tm6000_core *dev = NULL; in tm6000_register_extension() local
888 list_for_each_entry(dev, &tm6000_devlist, devlist) { in tm6000_register_extension()
889 ops->init(dev); in tm6000_register_extension()
891 dev->name, ops->name); in tm6000_register_extension()
900 struct tm6000_core *dev = NULL; in tm6000_unregister_extension() local
903 list_for_each_entry(dev, &tm6000_devlist, devlist) in tm6000_unregister_extension()
904 ops->fini(dev); in tm6000_unregister_extension()
912 void tm6000_init_extension(struct tm6000_core *dev) in tm6000_init_extension() argument
920 ops->init(dev); in tm6000_init_extension()
926 void tm6000_close_extension(struct tm6000_core *dev) in tm6000_close_extension() argument
934 ops->fini(dev); in tm6000_close_extension()