Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/drivers/media/dvb/dvb-usb/af9015.h
15112 views
1
/*
2
* DVB USB Linux driver for Afatech AF9015 DVB-T USB2.0 receiver
3
*
4
* Copyright (C) 2007 Antti Palosaari <[email protected]>
5
*
6
* Thanks to Afatech who kindly provided information.
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21
*
22
*/
23
24
#ifndef _DVB_USB_AF9015_H_
25
#define _DVB_USB_AF9015_H_
26
27
#define DVB_USB_LOG_PREFIX "af9015"
28
#include "dvb-usb.h"
29
30
#define deb_info(args...) dprintk(dvb_usb_af9015_debug, 0x01, args)
31
#define deb_rc(args...) dprintk(dvb_usb_af9015_debug, 0x02, args)
32
#define deb_xfer(args...) dprintk(dvb_usb_af9015_debug, 0x04, args)
33
#define deb_reg(args...) dprintk(dvb_usb_af9015_debug, 0x08, args)
34
#define deb_i2c(args...) dprintk(dvb_usb_af9015_debug, 0x10, args)
35
#define deb_fw(args...) dprintk(dvb_usb_af9015_debug, 0x20, args)
36
37
#define AF9015_I2C_EEPROM 0xa0
38
#define AF9015_I2C_DEMOD 0x38
39
#define AF9015_USB_TIMEOUT 2000
40
41
/* EEPROM locations */
42
#define AF9015_EEPROM_IR_MODE 0x18
43
#define AF9015_EEPROM_IR_REMOTE_TYPE 0x34
44
#define AF9015_EEPROM_TS_MODE 0x31
45
#define AF9015_EEPROM_DEMOD2_I2C 0x32
46
47
#define AF9015_EEPROM_SAW_BW1 0x35
48
#define AF9015_EEPROM_XTAL_TYPE1 0x36
49
#define AF9015_EEPROM_SPEC_INV1 0x37
50
#define AF9015_EEPROM_IF1L 0x38
51
#define AF9015_EEPROM_IF1H 0x39
52
#define AF9015_EEPROM_MT2060_IF1L 0x3a
53
#define AF9015_EEPROM_MT2060_IF1H 0x3b
54
#define AF9015_EEPROM_TUNER_ID1 0x3c
55
56
#define AF9015_EEPROM_SAW_BW2 0x45
57
#define AF9015_EEPROM_XTAL_TYPE2 0x46
58
#define AF9015_EEPROM_SPEC_INV2 0x47
59
#define AF9015_EEPROM_IF2L 0x48
60
#define AF9015_EEPROM_IF2H 0x49
61
#define AF9015_EEPROM_MT2060_IF2L 0x4a
62
#define AF9015_EEPROM_MT2060_IF2H 0x4b
63
#define AF9015_EEPROM_TUNER_ID2 0x4c
64
65
#define AF9015_EEPROM_OFFSET (AF9015_EEPROM_SAW_BW2 - AF9015_EEPROM_SAW_BW1)
66
67
struct req_t {
68
u8 cmd; /* [0] */
69
/* seq */ /* [1] */
70
u8 i2c_addr; /* [2] */
71
u16 addr; /* [3|4] */
72
u8 mbox; /* [5] */
73
u8 addr_len; /* [6] */
74
u8 data_len; /* [7] */
75
u8 *data;
76
};
77
78
enum af9015_cmd {
79
GET_CONFIG = 0x10,
80
DOWNLOAD_FIRMWARE = 0x11,
81
BOOT = 0x13,
82
READ_MEMORY = 0x20,
83
WRITE_MEMORY = 0x21,
84
READ_WRITE_I2C = 0x22,
85
COPY_FIRMWARE = 0x23,
86
RECONNECT_USB = 0x5a,
87
WRITE_VIRTUAL_MEMORY = 0x26,
88
GET_IR_CODE = 0x27,
89
READ_I2C,
90
WRITE_I2C,
91
};
92
93
enum af9015_ir_mode {
94
AF9015_IR_MODE_DISABLED = 0,
95
AF9015_IR_MODE_HID,
96
AF9015_IR_MODE_RLC,
97
AF9015_IR_MODE_RC6,
98
AF9015_IR_MODE_POLLING, /* just guess */
99
};
100
101
struct af9015_state {
102
struct i2c_adapter i2c_adap; /* I2C adapter for 2nd FE */
103
u8 rc_repeat;
104
u32 rc_keycode;
105
u8 rc_last[4];
106
};
107
108
struct af9015_config {
109
u8 dual_mode:1;
110
u16 mt2060_if1[2];
111
u16 firmware_size;
112
u16 firmware_checksum;
113
u32 eeprom_sum;
114
};
115
116
enum af9015_remote {
117
AF9015_REMOTE_NONE = 0,
118
/* 1 */ AF9015_REMOTE_A_LINK_DTU_M,
119
AF9015_REMOTE_MSI_DIGIVOX_MINI_II_V3,
120
AF9015_REMOTE_MYGICTV_U718,
121
AF9015_REMOTE_DIGITTRADE_DVB_T,
122
/* 5 */ AF9015_REMOTE_AVERMEDIA_KS,
123
};
124
125
#endif
126
127