Commit 5eca4823 authored by Akihiro Tsukada's avatar Akihiro Tsukada Committed by Mauro Carvalho Chehab

V4L/DVB (13000): add driver for 774 Friio White USB ISDB-T receiver

This patch adds driver for 774 Friio White, ISDB-T USB receiver

Friio White is an USB 2.0 ISDB-T receiver. (http://www.friio.com/)
The device has a GL861 chip and a Comtech JDVBT90502 canned tuner module.
This driver ignores all the frontend_parameters except frequency,
as ISDB-T shares the same parameter configuration across the country
and thus the device can work like an intelligent one.

As this device does not include a CAM nor hardware descrambling feature,
the driver passes through scrambled TS streams.

There is Friio Black, a variant for ISDB-S, which shares the same USB
Vendor/Product ID with White, but it is not supported in this driver.
They should be identified in the initialization sequence,
but this feature is not tested.
Signed-off-by: default avatarAkihiro Tsukada <tskd2@yahoo.co.jp>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 3d17fb1b
......@@ -316,3 +316,9 @@ config DVB_USB_CE6230
select MEDIA_TUNER_MXL5005S if !MEDIA_TUNER_CUSTOMISE
help
Say Y here to support the Intel CE6230 DVB-T USB2.0 receiver
config DVB_USB_FRIIO
tristate "Friio ISDB-T USB2.0 Receiver support"
depends on DVB_USB
help
Say Y here to support the Japanese DTV receiver Friio.
......@@ -79,6 +79,9 @@ obj-$(CONFIG_DVB_USB_CINERGY_T2) += dvb-usb-cinergyT2.o
dvb-usb-ce6230-objs = ce6230.o
obj-$(CONFIG_DVB_USB_CE6230) += dvb-usb-ce6230.o
dvb-usb-friio-objs = friio.o friio-fe.o
obj-$(CONFIG_DVB_USB_FRIIO) += dvb-usb-friio.o
EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/
# due to tuner-xc3028
EXTRA_CFLAGS += -Idrivers/media/common/tuners
......
......@@ -60,6 +60,7 @@
#define USB_VID_YUAN 0x1164
#define USB_VID_XTENSIONS 0x1ae7
#define USB_VID_HUMAX_COEX 0x10b9
#define USB_VID_774 0x7a69
/* Product IDs */
#define USB_PID_ADSTECH_USB2_COLD 0xa333
......@@ -274,5 +275,6 @@
#define USB_PID_ELGATO_EYETV_DTT_Dlx 0x0020
#define USB_PID_DVB_T_USB_STICK_HIGH_SPEED_COLD 0x5000
#define USB_PID_DVB_T_USB_STICK_HIGH_SPEED_WARM 0x5001
#define USB_PID_FRIIO_WHITE 0x0001
#endif
This diff is collapsed.
This diff is collapsed.
/* 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) controll: 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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment