af9035.h (3692B)
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * Afatech AF9035 DVB USB driver 4 * 5 * Copyright (C) 2009 Antti Palosaari <crope@iki.fi> 6 * Copyright (C) 2012 Antti Palosaari <crope@iki.fi> 7 */ 8 9#ifndef AF9035_H 10#define AF9035_H 11 12#include <linux/platform_device.h> 13#include "dvb_usb.h" 14#include "af9033.h" 15#include "tua9001.h" 16#include "fc0011.h" 17#include "fc0012.h" 18#include "mxl5007t.h" 19#include "tda18218.h" 20#include "fc2580.h" 21#include "it913x.h" 22#include "si2168.h" 23#include "si2157.h" 24 25struct reg_val { 26 u32 reg; 27 u8 val; 28}; 29 30struct reg_val_mask { 31 u32 reg; 32 u8 val; 33 u8 mask; 34}; 35 36struct usb_req { 37 u8 cmd; 38 u8 mbox; 39 u8 wlen; 40 u8 *wbuf; 41 u8 rlen; 42 u8 *rbuf; 43}; 44 45struct state { 46#define BUF_LEN 64 47 u8 buf[BUF_LEN]; 48 u8 seq; /* packet sequence number */ 49 u8 prechip_version; 50 u8 chip_version; 51 u16 chip_type; 52 u8 eeprom[256]; 53 bool no_eeprom; 54 u8 ir_mode; 55 u8 ir_type; 56 u8 dual_mode:1; 57 u8 no_read:1; 58 u8 af9033_i2c_addr[2]; 59 u8 it930x_addresses; 60 struct af9033_config af9033_config[2]; 61 struct af9033_ops ops; 62 #define AF9035_I2C_CLIENT_MAX 4 63 struct i2c_client *i2c_client[AF9035_I2C_CLIENT_MAX]; 64 struct i2c_adapter *i2c_adapter_demod; 65 struct platform_device *platform_device_tuner[2]; 66}; 67 68struct address_table { 69 u8 frontend_i2c_addr; 70 u8 tuner_i2c_addr; 71 u8 tuner_if_port; 72}; 73 74static const struct address_table it930x_addresses_table[] = { 75 { 0x67, 0x63, 1 }, 76 { 0x64, 0x60, 0 }, 77}; 78 79static const u32 clock_lut_af9035[] = { 80 20480000, /* FPGA */ 81 16384000, /* 16.38 MHz */ 82 20480000, /* 20.48 MHz */ 83 36000000, /* 36.00 MHz */ 84 30000000, /* 30.00 MHz */ 85 26000000, /* 26.00 MHz */ 86 28000000, /* 28.00 MHz */ 87 32000000, /* 32.00 MHz */ 88 34000000, /* 34.00 MHz */ 89 24000000, /* 24.00 MHz */ 90 22000000, /* 22.00 MHz */ 91 12000000, /* 12.00 MHz */ 92}; 93 94static const u32 clock_lut_it9135[] = { 95 12000000, /* 12.00 MHz */ 96 20480000, /* 20.48 MHz */ 97 36000000, /* 36.00 MHz */ 98 30000000, /* 30.00 MHz */ 99 26000000, /* 26.00 MHz */ 100 28000000, /* 28.00 MHz */ 101 32000000, /* 32.00 MHz */ 102 34000000, /* 34.00 MHz */ 103 24000000, /* 24.00 MHz */ 104 22000000, /* 22.00 MHz */ 105}; 106 107#define AF9035_FIRMWARE_AF9035 "dvb-usb-af9035-02.fw" 108#define AF9035_FIRMWARE_IT9135_V1 "dvb-usb-it9135-01.fw" 109#define AF9035_FIRMWARE_IT9135_V2 "dvb-usb-it9135-02.fw" 110#define AF9035_FIRMWARE_IT9303 "dvb-usb-it9303-01.fw" 111 112/* 113 * eeprom is memory mapped as read only. Writing that memory mapped address 114 * will not corrupt eeprom. 115 * 116 * TS mode: 117 * 0 TS 118 * 1 DCA + PIP 119 * 3 PIP 120 * 5 DCA + PIP (AF9035 only) 121 * n DCA 122 * 123 * Values 0, 3 and 5 are seen to this day. 0 for single TS and 3/5 for dual TS. 124 */ 125 126#define EEPROM_BASE_AF9035 0x42f5 127#define EEPROM_BASE_IT9135 0x4994 128#define EEPROM_SHIFT 0x10 129 130#define EEPROM_IR_MODE 0x18 131#define EEPROM_TS_MODE 0x31 132#define EEPROM_2ND_DEMOD_ADDR 0x32 133#define EEPROM_IR_TYPE 0x34 134#define EEPROM_1_IF_L 0x38 135#define EEPROM_1_IF_H 0x39 136#define EEPROM_1_TUNER_ID 0x3c 137#define EEPROM_2_IF_L 0x48 138#define EEPROM_2_IF_H 0x49 139#define EEPROM_2_TUNER_ID 0x4c 140 141/* USB commands */ 142#define CMD_MEM_RD 0x00 143#define CMD_MEM_WR 0x01 144#define CMD_I2C_RD 0x02 145#define CMD_I2C_WR 0x03 146#define CMD_IR_GET 0x18 147#define CMD_FW_DL 0x21 148#define CMD_FW_QUERYINFO 0x22 149#define CMD_FW_BOOT 0x23 150#define CMD_FW_DL_BEGIN 0x24 151#define CMD_FW_DL_END 0x25 152#define CMD_FW_SCATTER_WR 0x29 153#define CMD_GENERIC_I2C_RD 0x2a 154#define CMD_GENERIC_I2C_WR 0x2b 155 156#endif