Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/drivers/media/dvb/firewire/firedtv.h
15112 views
1
/*
2
* FireDTV driver (formerly known as FireSAT)
3
*
4
* Copyright (C) 2004 Andreas Monitzer <[email protected]>
5
* Copyright (C) 2008 Henrik Kurelid <[email protected]>
6
*
7
* This program is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU General Public License as
9
* published by the Free Software Foundation; either version 2 of
10
* the License, or (at your option) any later version.
11
*/
12
13
#ifndef _FIREDTV_H
14
#define _FIREDTV_H
15
16
#include <linux/dvb/dmx.h>
17
#include <linux/dvb/frontend.h>
18
#include <linux/list.h>
19
#include <linux/mod_devicetable.h>
20
#include <linux/mutex.h>
21
#include <linux/spinlock_types.h>
22
#include <linux/types.h>
23
#include <linux/wait.h>
24
#include <linux/workqueue.h>
25
26
#include <demux.h>
27
#include <dmxdev.h>
28
#include <dvb_demux.h>
29
#include <dvb_frontend.h>
30
#include <dvb_net.h>
31
#include <dvbdev.h>
32
33
struct firedtv_tuner_status {
34
unsigned active_system:8;
35
unsigned searching:1;
36
unsigned moving:1;
37
unsigned no_rf:1;
38
unsigned input:1;
39
unsigned selected_antenna:7;
40
unsigned ber:32;
41
unsigned signal_strength:8;
42
unsigned raster_frequency:2;
43
unsigned rf_frequency:22;
44
unsigned man_dep_info_length:8;
45
unsigned front_end_error:1;
46
unsigned antenna_error:1;
47
unsigned front_end_power_status:1;
48
unsigned power_supply:1;
49
unsigned carrier_noise_ratio:16;
50
unsigned power_supply_voltage:8;
51
unsigned antenna_voltage:8;
52
unsigned firewire_bus_voltage:8;
53
unsigned ca_mmi:1;
54
unsigned ca_pmt_reply:1;
55
unsigned ca_date_time_request:1;
56
unsigned ca_application_info:1;
57
unsigned ca_module_present_status:1;
58
unsigned ca_dvb_flag:1;
59
unsigned ca_error_flag:1;
60
unsigned ca_initialization_status:1;
61
};
62
63
enum model_type {
64
FIREDTV_UNKNOWN = 0,
65
FIREDTV_DVB_S = 1,
66
FIREDTV_DVB_C = 2,
67
FIREDTV_DVB_T = 3,
68
FIREDTV_DVB_S2 = 4,
69
};
70
71
struct device;
72
struct input_dev;
73
struct fdtv_ir_context;
74
75
struct firedtv {
76
struct device *device;
77
struct list_head list;
78
79
struct dvb_adapter adapter;
80
struct dmxdev dmxdev;
81
struct dvb_demux demux;
82
struct dmx_frontend frontend;
83
struct dvb_net dvbnet;
84
struct dvb_frontend fe;
85
86
struct dvb_device *cadev;
87
int ca_last_command;
88
int ca_time_interval;
89
90
struct mutex avc_mutex;
91
wait_queue_head_t avc_wait;
92
bool avc_reply_received;
93
struct work_struct remote_ctrl_work;
94
struct input_dev *remote_ctrl_dev;
95
96
enum model_type type;
97
char subunit;
98
char isochannel;
99
struct fdtv_ir_context *ir_context;
100
101
fe_sec_voltage_t voltage;
102
fe_sec_tone_mode_t tone;
103
104
struct mutex demux_mutex;
105
unsigned long channel_active;
106
u16 channel_pid[16];
107
108
int avc_data_length;
109
u8 avc_data[512];
110
};
111
112
/* firedtv-avc.c */
113
int avc_recv(struct firedtv *fdtv, void *data, size_t length);
114
int avc_tuner_status(struct firedtv *fdtv, struct firedtv_tuner_status *stat);
115
struct dvb_frontend_parameters;
116
int avc_tuner_dsd(struct firedtv *fdtv, struct dvb_frontend_parameters *params);
117
int avc_tuner_set_pids(struct firedtv *fdtv, unsigned char pidc, u16 pid[]);
118
int avc_tuner_get_ts(struct firedtv *fdtv);
119
int avc_identify_subunit(struct firedtv *fdtv);
120
struct dvb_diseqc_master_cmd;
121
int avc_lnb_control(struct firedtv *fdtv, char voltage, char burst,
122
char conttone, char nrdiseq,
123
struct dvb_diseqc_master_cmd *diseqcmd);
124
void avc_remote_ctrl_work(struct work_struct *work);
125
int avc_register_remote_control(struct firedtv *fdtv);
126
int avc_ca_app_info(struct firedtv *fdtv, char *app_info, unsigned int *len);
127
int avc_ca_info(struct firedtv *fdtv, char *app_info, unsigned int *len);
128
int avc_ca_reset(struct firedtv *fdtv);
129
int avc_ca_pmt(struct firedtv *fdtv, char *app_info, int length);
130
int avc_ca_get_time_date(struct firedtv *fdtv, int *interval);
131
int avc_ca_enter_menu(struct firedtv *fdtv);
132
int avc_ca_get_mmi(struct firedtv *fdtv, char *mmi_object, unsigned int *len);
133
int cmp_establish_pp_connection(struct firedtv *fdtv, int plug, int channel);
134
void cmp_break_pp_connection(struct firedtv *fdtv, int plug, int channel);
135
136
/* firedtv-ci.c */
137
int fdtv_ca_register(struct firedtv *fdtv);
138
void fdtv_ca_release(struct firedtv *fdtv);
139
140
/* firedtv-dvb.c */
141
int fdtv_start_feed(struct dvb_demux_feed *dvbdmxfeed);
142
int fdtv_stop_feed(struct dvb_demux_feed *dvbdmxfeed);
143
int fdtv_dvb_register(struct firedtv *fdtv, const char *name);
144
void fdtv_dvb_unregister(struct firedtv *fdtv);
145
146
/* firedtv-fe.c */
147
void fdtv_frontend_init(struct firedtv *fdtv, const char *name);
148
149
/* firedtv-fw.c */
150
int fdtv_lock(struct firedtv *fdtv, u64 addr, void *data);
151
int fdtv_read(struct firedtv *fdtv, u64 addr, void *data);
152
int fdtv_write(struct firedtv *fdtv, u64 addr, void *data, size_t len);
153
int fdtv_start_iso(struct firedtv *fdtv);
154
void fdtv_stop_iso(struct firedtv *fdtv);
155
156
/* firedtv-rc.c */
157
#ifdef CONFIG_DVB_FIREDTV_INPUT
158
int fdtv_register_rc(struct firedtv *fdtv, struct device *dev);
159
void fdtv_unregister_rc(struct firedtv *fdtv);
160
void fdtv_handle_rc(struct firedtv *fdtv, unsigned int code);
161
#else
162
static inline int fdtv_register_rc(struct firedtv *fdtv,
163
struct device *dev) { return 0; }
164
static inline void fdtv_unregister_rc(struct firedtv *fdtv) {}
165
static inline void fdtv_handle_rc(struct firedtv *fdtv, unsigned int code) {}
166
#endif
167
168
#endif /* _FIREDTV_H */
169
170