Commit 808048f5 authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds

[PATCH] update dvb headers

parent fd84584a
...@@ -47,10 +47,17 @@ typedef enum { ...@@ -47,10 +47,17 @@ typedef enum {
typedef enum { typedef enum {
AUDIO_STEREO, AUDIO_STEREO,
AUDIO_MONO_LEFT, AUDIO_MONO_LEFT,
AUDIO_MONO_RIGHT, AUDIO_MONO_RIGHT
} audio_channel_select_t; } audio_channel_select_t;
typedef struct audio_mixer {
unsigned int volume_left;
unsigned int volume_right;
// what else do we need? bass, pass-through, ...
} audio_mixer_t;
typedef struct audio_status { typedef struct audio_status {
int AV_sync_state; /* sync audio and video? */ int AV_sync_state; /* sync audio and video? */
int mute_state; /* audio is muted */ int mute_state; /* audio is muted */
...@@ -58,16 +65,10 @@ typedef struct audio_status { ...@@ -58,16 +65,10 @@ typedef struct audio_status {
audio_stream_source_t stream_source; /* current stream source */ audio_stream_source_t stream_source; /* current stream source */
audio_channel_select_t channel_select; /* currently selected channel */ audio_channel_select_t channel_select; /* currently selected channel */
int bypass_mode; /* pass on audio data to */ int bypass_mode; /* pass on audio data to */
audio_mixer_t mixer_state; /* current mixer state */
} audio_status_t; /* separate decoder hardware */ } audio_status_t; /* separate decoder hardware */
typedef struct audio_mixer {
unsigned int volume_left;
unsigned int volume_right;
// what else do we need? bass, pass-through, ...
} audio_mixer_t;
typedef typedef
struct audio_karaoke{ /* if Vocal1 or Vocal2 are non-zero, they get mixed */ struct audio_karaoke{ /* if Vocal1 or Vocal2 are non-zero, they get mixed */
int vocal1; /* into left and right t at 70% each */ int vocal1; /* into left and right t at 70% each */
......
...@@ -21,8 +21,8 @@ ...@@ -21,8 +21,8 @@
* *
*/ */
#ifndef _CA_H_ #ifndef _DVBCA_H_
#define _CA_H_ #define _DVBCA_H_
/* slot interface types and info */ /* slot interface types and info */
...@@ -33,6 +33,7 @@ typedef struct ca_slot_info { ...@@ -33,6 +33,7 @@ typedef struct ca_slot_info {
#define CA_CI 1 /* CI high level interface */ #define CA_CI 1 /* CI high level interface */
#define CA_CI_LINK 2 /* CI link layer level interface */ #define CA_CI_LINK 2 /* CI link layer level interface */
#define CA_CI_PHYS 4 /* CI physical layer level interface */ #define CA_CI_PHYS 4 /* CI physical layer level interface */
#define CA_DESCR 8 /* built-in descrambler */
#define CA_SC 128 /* simple smart card interface */ #define CA_SC 128 /* simple smart card interface */
unsigned int flags; unsigned int flags;
...@@ -44,7 +45,7 @@ typedef struct ca_slot_info { ...@@ -44,7 +45,7 @@ typedef struct ca_slot_info {
/* descrambler types and info */ /* descrambler types and info */
typedef struct ca_descr_info { typedef struct ca_descr_info {
unsigned int num; /* number of available descramblers (keys) */ unsigned int num; /* number of available descramblers (keys) */
unsigned int type; /* type of supported scrambling system */ unsigned int type; /* type of supported scrambling system */
#define CA_ECD 1 #define CA_ECD 1
#define CA_NDS 2 #define CA_NDS 2
...@@ -59,19 +60,24 @@ typedef struct ca_caps { ...@@ -59,19 +60,24 @@ typedef struct ca_caps {
} ca_caps_t; } ca_caps_t;
/* a message to/from a CI-CAM */ /* a message to/from a CI-CAM */
typedef struct ca_msg { typedef struct ca_msg {
unsigned int index; unsigned int index;
unsigned int type; unsigned int type;
unsigned int length; unsigned int length;
unsigned char msg[256]; unsigned char msg[256];
} ca_msg_t; } ca_msg_t;
typedef struct ca_descr { typedef struct ca_descr {
unsigned int index; unsigned int index;
unsigned int parity; unsigned int parity; /* 0 == even, 1 == odd */
unsigned char cw[8]; unsigned char cw[8];
} ca_descr_t; } ca_descr_t;
typedef struct ca_pid {
unsigned int pid;
int index; /* -1 == disable*/
} ca_pid_t;
#define CA_RESET _IO('o', 128) #define CA_RESET _IO('o', 128)
#define CA_GET_CAP _IOR('o', 129, ca_caps_t) #define CA_GET_CAP _IOR('o', 129, ca_caps_t)
#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t) #define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
...@@ -79,6 +85,7 @@ typedef struct ca_descr { ...@@ -79,6 +85,7 @@ typedef struct ca_descr {
#define CA_GET_MSG _IOR('o', 132, ca_msg_t) #define CA_GET_MSG _IOR('o', 132, ca_msg_t)
#define CA_SEND_MSG _IOW('o', 133, ca_msg_t) #define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
#define CA_SET_DESCR _IOW('o', 134, ca_descr_t) #define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
#define CA_SET_PID _IOW('o', 135, ca_pid_t)
#endif #endif
...@@ -21,13 +21,14 @@ ...@@ -21,13 +21,14 @@
* *
*/ */
#ifndef _DMX_H_ #ifndef _DVBDMX_H_
#define _DMX_H_ #define _DVBDMX_H_
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <linux/types.h> #include <linux/types.h>
#else #else
#include <stdint.h> #include <stdint.h>
#include <time.h>
#endif #endif
#define DMX_FILTER_SIZE 16 #define DMX_FILTER_SIZE 16
...@@ -154,9 +155,15 @@ typedef enum { ...@@ -154,9 +155,15 @@ typedef enum {
DMX_SOURCE_DVR0 = 16, DMX_SOURCE_DVR0 = 16,
DMX_SOURCE_DVR1, DMX_SOURCE_DVR1,
DMX_SOURCE_DVR2, DMX_SOURCE_DVR2,
DMX_SOURCE_DVR3, DMX_SOURCE_DVR3
} dmx_source_t; } dmx_source_t;
struct dmx_stc {
unsigned int num; /* input : which STC? 0..N */
unsigned int base; /* output: divisor for stc to get 90 kHz clock */
uint64_t stc; /* output: stc in 'base'*90 kHz units */
};
#define DMX_START _IO('o',41) #define DMX_START _IO('o',41)
#define DMX_STOP _IO('o',42) #define DMX_STOP _IO('o',42)
...@@ -164,9 +171,10 @@ typedef enum { ...@@ -164,9 +171,10 @@ typedef enum {
#define DMX_SET_PES_FILTER _IOW('o',44,struct dmx_pes_filter_params) #define DMX_SET_PES_FILTER _IOW('o',44,struct dmx_pes_filter_params)
#define DMX_SET_BUFFER_SIZE _IO('o',45) #define DMX_SET_BUFFER_SIZE _IO('o',45)
#define DMX_GET_EVENT _IOR('o',46,struct dmx_event) #define DMX_GET_EVENT _IOR('o',46,struct dmx_event)
#define DMX_GET_PES_PIDS _IOR('o',47,uint16_t) #define DMX_GET_PES_PIDS _IOR('o',47,uint16_t[5])
#define DMX_GET_CAPS _IOR('o',48,dmx_caps_t) #define DMX_GET_CAPS _IOR('o',48,dmx_caps_t)
#define DMX_SET_SOURCE _IOW('o',49,dmx_source_t) #define DMX_SET_SOURCE _IOW('o',49,dmx_source_t)
#define DMX_GET_STC _IOWR('o',50,struct dmx_stc)
#endif /*_DMX_H_*/ #endif /*_DVBDMX_H_*/
...@@ -23,8 +23,8 @@ ...@@ -23,8 +23,8 @@
* *
*/ */
#ifndef _FRONTEND_H_ #ifndef _DVBFRONTEND_H_
#define _FRONTEND_H_ #define _DVBFRONTEND_H_
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <linux/types.h> #include <linux/types.h>
...@@ -33,14 +33,14 @@ ...@@ -33,14 +33,14 @@
#endif #endif
typedef enum { typedef enum fe_type {
FE_QPSK, FE_QPSK,
FE_QAM, FE_QAM,
FE_OFDM FE_OFDM
} fe_type_t; } fe_type_t;
typedef enum { typedef enum fe_caps {
FE_IS_STUPID = 0, FE_IS_STUPID = 0,
FE_CAN_INVERSION_AUTO = 0x1, FE_CAN_INVERSION_AUTO = 0x1,
FE_CAN_FEC_1_2 = 0x2, FE_CAN_FEC_1_2 = 0x2,
...@@ -63,6 +63,8 @@ typedef enum { ...@@ -63,6 +63,8 @@ typedef enum {
FE_CAN_BANDWIDTH_AUTO = 0x40000, FE_CAN_BANDWIDTH_AUTO = 0x40000,
FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
FE_CAN_HIERARCHY_AUTO = 0x100000, FE_CAN_HIERARCHY_AUTO = 0x100000,
FE_CAN_RECOVER = 0x20000000,
FE_CAN_CLEAN_SETUP = 0x40000000,
FE_CAN_MUTE_TS = 0x80000000 FE_CAN_MUTE_TS = 0x80000000
} fe_caps_t; } fe_caps_t;
...@@ -99,25 +101,25 @@ struct dvb_diseqc_slave_reply { ...@@ -99,25 +101,25 @@ struct dvb_diseqc_slave_reply {
}; /* errorcode when no message was received */ }; /* errorcode when no message was received */
typedef enum { typedef enum fe_sec_voltage {
SEC_VOLTAGE_13, SEC_VOLTAGE_13,
SEC_VOLTAGE_18 SEC_VOLTAGE_18
} fe_sec_voltage_t; } fe_sec_voltage_t;
typedef enum { typedef enum fe_sec_tone_mode {
SEC_TONE_ON, SEC_TONE_ON,
SEC_TONE_OFF SEC_TONE_OFF
} fe_sec_tone_mode_t; } fe_sec_tone_mode_t;
typedef enum { typedef enum fe_sec_mini_cmd {
SEC_MINI_A, SEC_MINI_A,
SEC_MINI_B SEC_MINI_B
} fe_sec_mini_cmd_t; } fe_sec_mini_cmd_t;
typedef enum { typedef enum fe_status {
FE_HAS_SIGNAL = 0x01, /* found something above the noise level */ FE_HAS_SIGNAL = 0x01, /* found something above the noise level */
FE_HAS_CARRIER = 0x02, /* found a DVB signal */ FE_HAS_CARRIER = 0x02, /* found a DVB signal */
FE_HAS_VITERBI = 0x04, /* FEC is stable */ FE_HAS_VITERBI = 0x04, /* FEC is stable */
...@@ -125,17 +127,17 @@ typedef enum { ...@@ -125,17 +127,17 @@ typedef enum {
FE_HAS_LOCK = 0x10, /* everything's working... */ FE_HAS_LOCK = 0x10, /* everything's working... */
FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */ FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */
FE_REINIT = 0x40 /* frontend was reinitialized, */ FE_REINIT = 0x40 /* frontend was reinitialized, */
} fe_status_t; /* application is recommned to reset */ } fe_status_t; /* application is recommended to reset */
/* DiSEqC, tone and parameters */ /* DiSEqC, tone and parameters */
typedef enum { typedef enum fe_spectral_inversion {
INVERSION_OFF, INVERSION_OFF,
INVERSION_ON, INVERSION_ON,
INVERSION_AUTO INVERSION_AUTO
} fe_spectral_inversion_t; } fe_spectral_inversion_t;
typedef enum { typedef enum fe_code_rate {
FEC_NONE = 0, FEC_NONE = 0,
FEC_1_2, FEC_1_2,
FEC_2_3, FEC_2_3,
...@@ -149,7 +151,7 @@ typedef enum { ...@@ -149,7 +151,7 @@ typedef enum {
} fe_code_rate_t; } fe_code_rate_t;
typedef enum { typedef enum fe_modulation {
QPSK, QPSK,
QAM_16, QAM_16,
QAM_32, QAM_32,
...@@ -160,13 +162,13 @@ typedef enum { ...@@ -160,13 +162,13 @@ typedef enum {
} fe_modulation_t; } fe_modulation_t;
typedef enum { typedef enum fe_transmit_mode {
TRANSMISSION_MODE_2K, TRANSMISSION_MODE_2K,
TRANSMISSION_MODE_8K, TRANSMISSION_MODE_8K,
TRANSMISSION_MODE_AUTO TRANSMISSION_MODE_AUTO
} fe_transmit_mode_t; } fe_transmit_mode_t;
typedef enum { typedef enum fe_bandwidth {
BANDWIDTH_8_MHZ, BANDWIDTH_8_MHZ,
BANDWIDTH_7_MHZ, BANDWIDTH_7_MHZ,
BANDWIDTH_6_MHZ, BANDWIDTH_6_MHZ,
...@@ -174,7 +176,7 @@ typedef enum { ...@@ -174,7 +176,7 @@ typedef enum {
} fe_bandwidth_t; } fe_bandwidth_t;
typedef enum { typedef enum fe_guard_interval {
GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_32,
GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_16,
GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_8,
...@@ -183,7 +185,7 @@ typedef enum { ...@@ -183,7 +185,7 @@ typedef enum {
} fe_guard_interval_t; } fe_guard_interval_t;
typedef enum { typedef enum fe_hierarchy {
HIERARCHY_NONE, HIERARCHY_NONE,
HIERARCHY_1, HIERARCHY_1,
HIERARCHY_2, HIERARCHY_2,
...@@ -257,5 +259,5 @@ struct dvb_frontend_event { ...@@ -257,5 +259,5 @@ struct dvb_frontend_event {
#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event) #define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
#endif /*_FRONTEND_H_*/ #endif /*_DVBFRONTEND_H_*/
...@@ -39,6 +39,7 @@ struct dvb_net_if { ...@@ -39,6 +39,7 @@ struct dvb_net_if {
#define NET_ADD_IF _IOWR('o', 52, struct dvb_net_if) #define NET_ADD_IF _IOWR('o', 52, struct dvb_net_if)
#define NET_REMOVE_IF _IO('o', 53) #define NET_REMOVE_IF _IO('o', 53)
#define NET_GET_IF _IOWR('o', 54, struct dvb_net_if)
#endif /*_DVBNET_H_*/ #endif /*_DVBNET_H_*/
...@@ -25,83 +25,83 @@ ...@@ -25,83 +25,83 @@
#define _DVBOSD_H_ #define _DVBOSD_H_
typedef enum { typedef enum {
// All functions return -2 on "not open" // All functions return -2 on "not open"
OSD_Close=1, // () OSD_Close=1, // ()
// Disables OSD and releases the buffers // Disables OSD and releases the buffers
// returns 0 on success // returns 0 on success
OSD_Open, // (x0,y0,x1,y1,BitPerPixel[2/4/8](color&0x0F),mix[0..15](color&0xF0)) OSD_Open, // (x0,y0,x1,y1,BitPerPixel[2/4/8](color&0x0F),mix[0..15](color&0xF0))
// Opens OSD with this size and bit depth // Opens OSD with this size and bit depth
// returns 0 on success, -1 on DRAM allocation error, -2 on "already open" // returns 0 on success, -1 on DRAM allocation error, -2 on "already open"
OSD_Show, // () OSD_Show, // ()
// enables OSD mode // enables OSD mode
// returns 0 on success // returns 0 on success
OSD_Hide, // () OSD_Hide, // ()
// disables OSD mode // disables OSD mode
// returns 0 on success // returns 0 on success
OSD_Clear, // () OSD_Clear, // ()
// Sets all pixel to color 0 // Sets all pixel to color 0
// returns 0 on success // returns 0 on success
OSD_Fill, // (color) OSD_Fill, // (color)
// Sets all pixel to color <col> // Sets all pixel to color <col>
// returns 0 on success // returns 0 on success
OSD_SetColor, // (color,R{x0},G{y0},B{x1},opacity{y1}) OSD_SetColor, // (color,R{x0},G{y0},B{x1},opacity{y1})
// set palette entry <num> to <r,g,b>, <mix> and <trans> apply // set palette entry <num> to <r,g,b>, <mix> and <trans> apply
// R,G,B: 0..255 // R,G,B: 0..255
// R=Red, G=Green, B=Blue // R=Red, G=Green, B=Blue
// opacity=0: pixel opacity 0% (only video pixel shows) // opacity=0: pixel opacity 0% (only video pixel shows)
// opacity=1..254: pixel opacity as specified in header // opacity=1..254: pixel opacity as specified in header
// opacity=255: pixel opacity 100% (only OSD pixel shows) // opacity=255: pixel opacity 100% (only OSD pixel shows)
// returns 0 on success, -1 on error // returns 0 on success, -1 on error
OSD_SetPalette, // (firstcolor{color},lastcolor{x0},data) OSD_SetPalette, // (firstcolor{color},lastcolor{x0},data)
// Set a number of entries in the palette // Set a number of entries in the palette
// sets the entries "firstcolor" through "lastcolor" from the array "data" // sets the entries "firstcolor" through "lastcolor" from the array "data"
// data has 4 byte for each color: // data has 4 byte for each color:
// R,G,B, and a opacity value: 0->transparent, 1..254->mix, 255->pixel // R,G,B, and a opacity value: 0->transparent, 1..254->mix, 255->pixel
OSD_SetTrans, // (transparency{color}) OSD_SetTrans, // (transparency{color})
// Sets transparency of mixed pixel (0..15) // Sets transparency of mixed pixel (0..15)
// returns 0 on success // returns 0 on success
OSD_SetPixel, // (x0,y0,color) OSD_SetPixel, // (x0,y0,color)
// sets pixel <x>,<y> to color number <col> // sets pixel <x>,<y> to color number <col>
// returns 0 on success, -1 on error // returns 0 on success, -1 on error
OSD_GetPixel, // (x0,y0) OSD_GetPixel, // (x0,y0)
// returns color number of pixel <x>,<y>, or -1 // returns color number of pixel <x>,<y>, or -1
OSD_SetRow, // (x0,y0,x1,data) OSD_SetRow, // (x0,y0,x1,data)
// fills pixels x0,y through x1,y with the content of data[] // fills pixels x0,y through x1,y with the content of data[]
// returns 0 on success, -1 on clipping all pixel (no pixel drawn) // returns 0 on success, -1 on clipping all pixel (no pixel drawn)
OSD_SetBlock, // (x0,y0,x1,y1,increment{color},data) OSD_SetBlock, // (x0,y0,x1,y1,increment{color},data)
// fills pixels x0,y0 through x1,y1 with the content of data[] // fills pixels x0,y0 through x1,y1 with the content of data[]
// inc contains the width of one line in the data block, // inc contains the width of one line in the data block,
// inc<=0 uses blockwidth as linewidth // inc<=0 uses blockwidth as linewidth
// returns 0 on success, -1 on clipping all pixel // returns 0 on success, -1 on clipping all pixel
OSD_FillRow, // (x0,y0,x1,color) OSD_FillRow, // (x0,y0,x1,color)
// fills pixels x0,y through x1,y with the color <col> // fills pixels x0,y through x1,y with the color <col>
// returns 0 on success, -1 on clipping all pixel // returns 0 on success, -1 on clipping all pixel
OSD_FillBlock, // (x0,y0,x1,y1,color) OSD_FillBlock, // (x0,y0,x1,y1,color)
// fills pixels x0,y0 through x1,y1 with the color <col> // fills pixels x0,y0 through x1,y1 with the color <col>
// returns 0 on success, -1 on clipping all pixel // returns 0 on success, -1 on clipping all pixel
OSD_Line, // (x0,y0,x1,y1,color) OSD_Line, // (x0,y0,x1,y1,color)
// draw a line from x0,y0 to x1,y1 with the color <col> // draw a line from x0,y0 to x1,y1 with the color <col>
// returns 0 on success // returns 0 on success
OSD_Query, // (x0,y0,x1,y1,xasp{color}}), yasp=11 OSD_Query, // (x0,y0,x1,y1,xasp{color}}), yasp=11
// fills parameters with the picture dimensions and the pixel aspect ratio // fills parameters with the picture dimensions and the pixel aspect ratio
// returns 0 on success // returns 0 on success
OSD_Test, // () OSD_Test, // ()
// draws a test picture. for debugging purposes only // draws a test picture. for debugging purposes only
// returns 0 on success // returns 0 on success
// TODO: remove "test" in final version // TODO: remove "test" in final version
OSD_Text, // (x0,y0,size,color,text) OSD_Text, // (x0,y0,size,color,text)
OSD_SetWindow, // (x0) set window with number 0<x0<8 as current OSD_SetWindow, // (x0) set window with number 0<x0<8 as current
OSD_MoveWindow, // move current window to (x0, y0) OSD_MoveWindow, // move current window to (x0, y0)
} OSD_Command; } OSD_Command;
typedef struct osd_cmd_s { typedef struct osd_cmd_s {
OSD_Command cmd; OSD_Command cmd;
int x0; int x0;
int y0; int y0;
int x1; int x1;
int y1; int y1;
int color; int color;
void *data; void *data;
} osd_cmd_t; } osd_cmd_t;
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <linux/types.h> #include <linux/types.h>
#else #else
#include <stdint.h> #include <stdint.h>
#include <time.h>
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment