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