| 
									
										
										
										
											2009-08-25 02:39:51 -03:00
										 |  |  | /* 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)) | 
					
						
							| 
									
										
										
										
											2011-03-30 22:57:33 -03:00
										 |  |  |  *         LED x3 (+LNB) control:                PIC 16F676 | 
					
						
							| 
									
										
										
										
											2009-08-25 02:39:51 -03:00
										 |  |  |  *         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
 |