summaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/firesat/firesat.h
blob: d1e2ce37063e1f1487a3284134a11b92b7097cc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#ifndef __FIRESAT_H
#define __FIRESAT_H

#include "dvb_frontend.h"
#include "dmxdev.h"
#include "dvb_demux.h"
#include "dvb_net.h"

#include <linux/semaphore.h>
#include <linux/dvb/frontend.h>
#include <linux/dvb/dmx.h>

enum model_type {
    FireSAT_DVB_S = 1,
    FireSAT_DVB_C = 2,
    FireSAT_DVB_T = 3,
    FireSAT_DVB_S2 = 4
};

struct firesat {
	struct dvb_demux dvb_demux;
	char *model_name;

	/* DVB bits */
	struct dvb_adapter		*adapter;
	struct dmxdev			dmxdev;
	struct dvb_demux		demux;
	struct dmx_frontend		frontend;
	struct dvb_net			dvbnet;
	struct dvb_frontend_info	*frontend_info;
	struct dvb_frontend		*fe;

	struct dvb_device		*cadev;
	int				has_ci;

	struct semaphore		avc_sem;
	atomic_t				avc_reply_received;

	atomic_t				reschedule_remotecontrol;

	struct firesat_channel {
		struct firesat *firesat;
		struct dvb_demux_feed *dvbdmxfeed;

		int active;
		int id;
		int pid;
		int type;	/* 1 - TS, 2 - Filter */
	} channel[16];
	struct semaphore		demux_sem;

	/* needed by avc_api */
	void *respfrm;
	int resp_length;

//    nodeid_t nodeid;
    struct hpsb_host *host;
	u64 guid;			/* GUID of this node */
	u32 guid_vendor_id;		/* Top 24bits of guid */
	struct node_entry *nodeentry;

    enum model_type type;
    char subunit;
	fe_sec_voltage_t voltage;
	fe_sec_tone_mode_t tone;

	int isochannel;

    struct list_head list;
};

extern struct list_head firesat_list;
extern spinlock_t firesat_list_lock;

/* firesat_dvb.c */
extern int firesat_start_feed(struct dvb_demux_feed *dvbdmxfeed);
extern int firesat_stop_feed(struct dvb_demux_feed *dvbdmxfeed);
extern int firesat_dvbdev_init(struct firesat *firesat,
				struct device *dev,
				struct dvb_frontend *fe);

/* firesat_fe.c */
extern int firesat_frontend_attach(struct firesat *firesat, struct dvb_frontend *fe);


#endif