Blame view

kernel/linux-rt-4.4.41/drivers/media/usb/dvb-usb/friio.h 3.28 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
  /* DVB USB compliant Linux driver for the Friio USB2.0 ISDB-T receiver.
   *
   * Copyright (C) 2009 Akihiro Tsukada <tskd2@yahoo.co.jp>
   *
   * This module is based off the the gl861 and vp702x modules.
   *
   * This program is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License as published by the Free
   * Software Foundation, version 2.
   *
   * see Documentation/dvb/README.dvb-usb for more information
   */
  #ifndef _DVB_USB_FRIIO_H_
  #define _DVB_USB_FRIIO_H_
  
  /**
   *      Friio Components
   *       USB hub:                                AU4254
   *         USB controller(+ TS dmx & streaming): GL861
   *         Frontend:                             comtech JDVBT-90502
   *             (tuner PLL:                       tua6034, I2C addr:(0xC0 >> 1))
   *             (OFDM demodulator:                TC90502, I2C addr:(0x30 >> 1))
   *         LED x3 (+LNB) control:                PIC 16F676
   *         EEPROM:                               24C08
   *
   *        (USB smart card reader:                AU9522)
   *
   */
  
  #define DVB_USB_LOG_PREFIX "friio"
  #include "dvb-usb.h"
  
  extern int dvb_usb_friio_debug;
  #define deb_info(args...) dprintk(dvb_usb_friio_debug, 0x01, args)
  #define deb_xfer(args...) dprintk(dvb_usb_friio_debug, 0x02, args)
  #define deb_rc(args...)   dprintk(dvb_usb_friio_debug, 0x04, args)
  #define deb_fe(args...)   dprintk(dvb_usb_friio_debug, 0x08, args)
  
  /* Vendor requests */
  #define GL861_WRITE		0x40
  #define GL861_READ		0xc0
  
  /* command bytes */
  #define GL861_REQ_I2C_WRITE	0x01
  #define GL861_REQ_I2C_READ	0x02
  /* For control msg with data argument */
  /* Used for accessing the PLL on the secondary I2C bus of FE via GL861 */
  #define GL861_REQ_I2C_DATA_CTRL_WRITE	0x03
  
  #define GL861_ALTSETTING_COUNT	2
  #define FRIIO_BULK_ALTSETTING	0
  #define FRIIO_ISOC_ALTSETTING	1
  
  /* LED & LNB control via PIC. */
  /* basically, it's serial control with clock and strobe. */
  /* write the below 4bit control data to the reg 0x00 at the I2C addr 0x00 */
  /* when controlling the LEDs, 32bit(saturation, R, G, B) is sent on the bit3*/
  #define FRIIO_CTL_LNB (1 << 0)
  #define FRIIO_CTL_STROBE (1 << 1)
  #define FRIIO_CTL_CLK (1 << 2)
  #define FRIIO_CTL_LED (1 << 3)
  
  /* Front End related */
  
  #define FRIIO_DEMOD_ADDR  (0x30 >> 1)
  #define FRIIO_PLL_ADDR  (0xC0 >> 1)
  
  #define JDVBT90502_PLL_CLK	4000000
  #define JDVBT90502_PLL_DIVIDER	28
  
  #define JDVBT90502_2ND_I2C_REG 0xFE
  
  /* byte index for pll i2c command data structure*/
  /* see datasheet for tua6034 */
  #define DEMOD_REDIRECT_REG 0
  #define ADDRESS_BYTE       1
  #define DIVIDER_BYTE1      2
  #define DIVIDER_BYTE2      3
  #define CONTROL_BYTE       4
  #define BANDSWITCH_BYTE    5
  #define AGC_CTRL_BYTE      5
  #define PLL_CMD_LEN        6
  
  /* bit masks for PLL STATUS response */
  #define PLL_STATUS_POR_MODE   0x80 /* 1: Power on Reset (test) Mode */
  #define PLL_STATUS_LOCKED     0x40 /* 1: locked */
  #define PLL_STATUS_AGC_ACTIVE 0x08 /* 1:active */
  #define PLL_STATUS_TESTMODE   0x07 /* digital output level (5 level) */
    /* 0.15Vcc step   0x00: < 0.15Vcc, ..., 0x04: >= 0.6Vcc (<= 1Vcc) */
  
  
  struct jdvbt90502_config {
  	u8 demod_address; /* i2c addr for demodulator IC */
  	u8 pll_address;   /* PLL addr on the secondary i2c*/
  };
  extern struct jdvbt90502_config friio_fe_config;
  
  extern struct dvb_frontend *jdvbt90502_attach(struct dvb_usb_device *d);
  #endif