root/drivers/media/usb/dvb-usb/umt-010.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. umt_mt352_demod_init
  2. umt_mt352_frontend_attach
  3. umt_tuner_attach
  4. umt_probe

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /* DVB USB framework compliant Linux driver for the HanfTek UMT-010 USB2.0
   3  * DVB-T receiver.
   4  *
   5  * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@posteo.de)
   6  *
   7  * see Documentation/media/dvb-drivers/dvb-usb.rst for more information
   8  */
   9 #include "dibusb.h"
  10 
  11 #include "mt352.h"
  12 
  13 DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
  14 
  15 static int umt_mt352_demod_init(struct dvb_frontend *fe)
  16 {
  17         static u8 mt352_clock_config[] = { 0x89, 0xb8, 0x2d };
  18         static u8 mt352_reset[] = { 0x50, 0x80 };
  19         static u8 mt352_mclk_ratio[] = { 0x8b, 0x00 };
  20         static u8 mt352_adc_ctl_1_cfg[] = { 0x8E, 0x40 };
  21         static u8 mt352_agc_cfg[] = { 0x67, 0x10, 0xa0 };
  22 
  23         static u8 mt352_sec_agc_cfg1[] = { 0x6a, 0xff };
  24         static u8 mt352_sec_agc_cfg2[] = { 0x6d, 0xff };
  25         static u8 mt352_sec_agc_cfg3[] = { 0x70, 0x40 };
  26         static u8 mt352_sec_agc_cfg4[] = { 0x7b, 0x03 };
  27         static u8 mt352_sec_agc_cfg5[] = { 0x7d, 0x0f };
  28 
  29         static u8 mt352_acq_ctl[] = { 0x53, 0x50 };
  30         static u8 mt352_input_freq_1[] = { 0x56, 0x31, 0x06 };
  31 
  32         mt352_write(fe, mt352_clock_config, sizeof(mt352_clock_config));
  33         udelay(2000);
  34         mt352_write(fe, mt352_reset, sizeof(mt352_reset));
  35         mt352_write(fe, mt352_mclk_ratio, sizeof(mt352_mclk_ratio));
  36 
  37         mt352_write(fe, mt352_adc_ctl_1_cfg, sizeof(mt352_adc_ctl_1_cfg));
  38         mt352_write(fe, mt352_agc_cfg, sizeof(mt352_agc_cfg));
  39 
  40         mt352_write(fe, mt352_sec_agc_cfg1, sizeof(mt352_sec_agc_cfg1));
  41         mt352_write(fe, mt352_sec_agc_cfg2, sizeof(mt352_sec_agc_cfg2));
  42         mt352_write(fe, mt352_sec_agc_cfg3, sizeof(mt352_sec_agc_cfg3));
  43         mt352_write(fe, mt352_sec_agc_cfg4, sizeof(mt352_sec_agc_cfg4));
  44         mt352_write(fe, mt352_sec_agc_cfg5, sizeof(mt352_sec_agc_cfg5));
  45 
  46         mt352_write(fe, mt352_acq_ctl, sizeof(mt352_acq_ctl));
  47         mt352_write(fe, mt352_input_freq_1, sizeof(mt352_input_freq_1));
  48 
  49         return 0;
  50 }
  51 
  52 static int umt_mt352_frontend_attach(struct dvb_usb_adapter *adap)
  53 {
  54         struct mt352_config umt_config;
  55 
  56         memset(&umt_config,0,sizeof(struct mt352_config));
  57         umt_config.demod_init = umt_mt352_demod_init;
  58         umt_config.demod_address = 0xf;
  59 
  60         adap->fe_adap[0].fe = dvb_attach(mt352_attach, &umt_config, &adap->dev->i2c_adap);
  61 
  62         return 0;
  63 }
  64 
  65 static int umt_tuner_attach (struct dvb_usb_adapter *adap)
  66 {
  67         dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe, 0x61, NULL, DVB_PLL_TUA6034);
  68         return 0;
  69 }
  70 
  71 /* USB Driver stuff */
  72 static struct dvb_usb_device_properties umt_properties;
  73 
  74 static int umt_probe(struct usb_interface *intf,
  75                 const struct usb_device_id *id)
  76 {
  77         if (0 == dvb_usb_device_init(intf, &umt_properties,
  78                                      THIS_MODULE, NULL, adapter_nr))
  79                 return 0;
  80         return -EINVAL;
  81 }
  82 
  83 /* do not change the order of the ID table */
  84 static struct usb_device_id umt_table [] = {
  85 /* 00 */        { USB_DEVICE(USB_VID_HANFTEK, USB_PID_HANFTEK_UMT_010_COLD) },
  86 /* 01 */        { USB_DEVICE(USB_VID_HANFTEK, USB_PID_HANFTEK_UMT_010_WARM) },
  87                         { }             /* Terminating entry */
  88 };
  89 MODULE_DEVICE_TABLE (usb, umt_table);
  90 
  91 static struct dvb_usb_device_properties umt_properties = {
  92         .caps = DVB_USB_IS_AN_I2C_ADAPTER,
  93 
  94         .usb_ctrl = CYPRESS_FX2,
  95         .firmware = "dvb-usb-umt-010-02.fw",
  96 
  97         .num_adapters = 1,
  98         .adapter = {
  99                 {
 100                 .num_frontends = 1,
 101                 .fe = {{
 102                         .streaming_ctrl   = dibusb2_0_streaming_ctrl,
 103                         .frontend_attach  = umt_mt352_frontend_attach,
 104                         .tuner_attach     = umt_tuner_attach,
 105 
 106                         /* parameter for the MPEG2-data transfer */
 107                         .stream = {
 108                                 .type = USB_BULK,
 109                                 .count = MAX_NO_URBS_FOR_DATA_STREAM,
 110                                 .endpoint = 0x06,
 111                                 .u = {
 112                                         .bulk = {
 113                                                 .buffersize = 512,
 114                                         }
 115                                 }
 116                         },
 117                 }},
 118                         .size_of_priv     = sizeof(struct dibusb_state),
 119                 }
 120         },
 121         .power_ctrl       = dibusb_power_ctrl,
 122 
 123         .i2c_algo         = &dibusb_i2c_algo,
 124 
 125         .generic_bulk_ctrl_endpoint = 0x01,
 126 
 127         .num_device_descs = 1,
 128         .devices = {
 129                 {       "Hanftek UMT-010 DVB-T USB2.0",
 130                         { &umt_table[0], NULL },
 131                         { &umt_table[1], NULL },
 132                 },
 133         }
 134 };
 135 
 136 static struct usb_driver umt_driver = {
 137         .name           = "dvb_usb_umt_010",
 138         .probe          = umt_probe,
 139         .disconnect = dvb_usb_device_exit,
 140         .id_table       = umt_table,
 141 };
 142 
 143 module_usb_driver(umt_driver);
 144 
 145 MODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@posteo.de>");
 146 MODULE_DESCRIPTION("Driver for HanfTek UMT 010 USB2.0 DVB-T device");
 147 MODULE_VERSION("1.0");
 148 MODULE_LICENSE("GPL");

/* [<][>][^][v][top][bottom][index][help] */