Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
friio.h
Go to the documentation of this file.
1 /* DVB USB compliant Linux driver for the Friio USB2.0 ISDB-T receiver.
2  *
3  * Copyright (C) 2009 Akihiro Tsukada <[email protected]>
4  *
5  * This module is based off the the gl861 and vp702x modules.
6  *
7  * This program is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by the Free
9  * Software Foundation, version 2.
10  *
11  * see Documentation/dvb/README.dvb-usb for more information
12  */
13 #ifndef _DVB_USB_FRIIO_H_
14 #define _DVB_USB_FRIIO_H_
15 
30 #define DVB_USB_LOG_PREFIX "friio"
31 #include "dvb-usb.h"
32 
33 extern int dvb_usb_friio_debug;
34 #define deb_info(args...) dprintk(dvb_usb_friio_debug, 0x01, args)
35 #define deb_xfer(args...) dprintk(dvb_usb_friio_debug, 0x02, args)
36 #define deb_rc(args...) dprintk(dvb_usb_friio_debug, 0x04, args)
37 #define deb_fe(args...) dprintk(dvb_usb_friio_debug, 0x08, args)
38 
39 /* Vendor requests */
40 #define GL861_WRITE 0x40
41 #define GL861_READ 0xc0
42 
43 /* command bytes */
44 #define GL861_REQ_I2C_WRITE 0x01
45 #define GL861_REQ_I2C_READ 0x02
46 /* For control msg with data argument */
47 /* Used for accessing the PLL on the secondary I2C bus of FE via GL861 */
48 #define GL861_REQ_I2C_DATA_CTRL_WRITE 0x03
49 
50 #define GL861_ALTSETTING_COUNT 2
51 #define FRIIO_BULK_ALTSETTING 0
52 #define FRIIO_ISOC_ALTSETTING 1
53 
54 /* LED & LNB control via PIC. */
55 /* basically, it's serial control with clock and strobe. */
56 /* write the below 4bit control data to the reg 0x00 at the I2C addr 0x00 */
57 /* when controlling the LEDs, 32bit(saturation, R, G, B) is sent on the bit3*/
58 #define FRIIO_CTL_LNB (1 << 0)
59 #define FRIIO_CTL_STROBE (1 << 1)
60 #define FRIIO_CTL_CLK (1 << 2)
61 #define FRIIO_CTL_LED (1 << 3)
62 
63 /* Front End related */
64 
65 #define FRIIO_DEMOD_ADDR (0x30 >> 1)
66 #define FRIIO_PLL_ADDR (0xC0 >> 1)
67 
68 #define JDVBT90502_PLL_CLK 4000000
69 #define JDVBT90502_PLL_DIVIDER 28
70 
71 #define JDVBT90502_2ND_I2C_REG 0xFE
72 
73 /* byte index for pll i2c command data structure*/
74 /* see datasheet for tua6034 */
75 #define DEMOD_REDIRECT_REG 0
76 #define ADDRESS_BYTE 1
77 #define DIVIDER_BYTE1 2
78 #define DIVIDER_BYTE2 3
79 #define CONTROL_BYTE 4
80 #define BANDSWITCH_BYTE 5
81 #define AGC_CTRL_BYTE 5
82 #define PLL_CMD_LEN 6
83 
84 /* bit masks for PLL STATUS response */
85 #define PLL_STATUS_POR_MODE 0x80 /* 1: Power on Reset (test) Mode */
86 #define PLL_STATUS_LOCKED 0x40 /* 1: locked */
87 #define PLL_STATUS_AGC_ACTIVE 0x08 /* 1:active */
88 #define PLL_STATUS_TESTMODE 0x07 /* digital output level (5 level) */
89  /* 0.15Vcc step 0x00: < 0.15Vcc, ..., 0x04: >= 0.6Vcc (<= 1Vcc) */
90 
91 
93  u8 demod_address; /* i2c addr for demodulator IC */
94  u8 pll_address; /* PLL addr on the secondary i2c*/
95 };
97 
98 extern struct dvb_frontend *jdvbt90502_attach(struct dvb_usb_device *d);
99 #endif