diff options
Diffstat (limited to 'drivers/media/video/cx18/cx18-driver.h')
-rw-r--r-- | drivers/media/video/cx18/cx18-driver.h | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/drivers/media/video/cx18/cx18-driver.h b/drivers/media/video/cx18/cx18-driver.h index e3f7911a7385..23ad6d548dc5 100644 --- a/drivers/media/video/cx18/cx18-driver.h +++ b/drivers/media/video/cx18/cx18-driver.h | |||
@@ -126,10 +126,22 @@ | |||
126 | #define CX18_625_LINE_ENC_YUV_BUFSIZE (CX18_UNIT_ENC_YUV_BUFSIZE * 576/32) | 126 | #define CX18_625_LINE_ENC_YUV_BUFSIZE (CX18_UNIT_ENC_YUV_BUFSIZE * 576/32) |
127 | #define CX18_525_LINE_ENC_YUV_BUFSIZE (CX18_UNIT_ENC_YUV_BUFSIZE * 480/32) | 127 | #define CX18_525_LINE_ENC_YUV_BUFSIZE (CX18_UNIT_ENC_YUV_BUFSIZE * 480/32) |
128 | 128 | ||
129 | /* IDX buffer size should be a multiple of the index entry size from the chip */ | ||
130 | struct cx18_enc_idx_entry { | ||
131 | __le32 length; | ||
132 | __le32 offset_low; | ||
133 | __le32 offset_high; | ||
134 | __le32 flags; | ||
135 | __le32 pts_low; | ||
136 | __le32 pts_high; | ||
137 | } __attribute__ ((packed)); | ||
138 | #define CX18_UNIT_ENC_IDX_BUFSIZE \ | ||
139 | (sizeof(struct cx18_enc_idx_entry) * V4L2_ENC_IDX_ENTRIES) | ||
140 | |||
129 | /* DMA buffer, default size in kB allocated */ | 141 | /* DMA buffer, default size in kB allocated */ |
130 | #define CX18_DEFAULT_ENC_TS_BUFSIZE 32 | 142 | #define CX18_DEFAULT_ENC_TS_BUFSIZE 32 |
131 | #define CX18_DEFAULT_ENC_MPG_BUFSIZE 32 | 143 | #define CX18_DEFAULT_ENC_MPG_BUFSIZE 32 |
132 | #define CX18_DEFAULT_ENC_IDX_BUFSIZE 32 | 144 | #define CX18_DEFAULT_ENC_IDX_BUFSIZE (CX18_UNIT_ENC_IDX_BUFSIZE * 1 / 1024 + 1) |
133 | #define CX18_DEFAULT_ENC_YUV_BUFSIZE (CX18_UNIT_ENC_YUV_BUFSIZE * 3 / 1024 + 1) | 145 | #define CX18_DEFAULT_ENC_YUV_BUFSIZE (CX18_UNIT_ENC_YUV_BUFSIZE * 3 / 1024 + 1) |
134 | #define CX18_DEFAULT_ENC_PCM_BUFSIZE 4 | 146 | #define CX18_DEFAULT_ENC_PCM_BUFSIZE 4 |
135 | 147 | ||
@@ -234,16 +246,8 @@ | |||
234 | #define CX18_WARN_DEV(dev, fmt, args...) v4l2_warn(dev, fmt , ## args) | 246 | #define CX18_WARN_DEV(dev, fmt, args...) v4l2_warn(dev, fmt , ## args) |
235 | #define CX18_INFO_DEV(dev, fmt, args...) v4l2_info(dev, fmt , ## args) | 247 | #define CX18_INFO_DEV(dev, fmt, args...) v4l2_info(dev, fmt , ## args) |
236 | 248 | ||
237 | /* Values for CX18_API_DEC_PLAYBACK_SPEED mpeg_frame_type_mask parameter: */ | ||
238 | #define MPEG_FRAME_TYPE_IFRAME 1 | ||
239 | #define MPEG_FRAME_TYPE_IFRAME_PFRAME 3 | ||
240 | #define MPEG_FRAME_TYPE_ALL 7 | ||
241 | |||
242 | #define CX18_MAX_PGM_INDEX (400) | ||
243 | |||
244 | extern int cx18_debug; | 249 | extern int cx18_debug; |
245 | 250 | ||
246 | |||
247 | struct cx18_options { | 251 | struct cx18_options { |
248 | int megabytes[CX18_MAX_STREAMS]; /* Size in megabytes of each stream */ | 252 | int megabytes[CX18_MAX_STREAMS]; /* Size in megabytes of each stream */ |
249 | int cardtype; /* force card type on load */ | 253 | int cardtype; /* force card type on load */ |
@@ -276,6 +280,18 @@ struct cx18_options { | |||
276 | #define CX18_SLICED_TYPE_WSS_625 (5) | 280 | #define CX18_SLICED_TYPE_WSS_625 (5) |
277 | #define CX18_SLICED_TYPE_VPS (7) | 281 | #define CX18_SLICED_TYPE_VPS (7) |
278 | 282 | ||
283 | /** | ||
284 | * list_entry_is_past_end - check if a previous loop cursor is off list end | ||
285 | * @pos: the type * previously used as a loop cursor. | ||
286 | * @head: the head for your list. | ||
287 | * @member: the name of the list_struct within the struct. | ||
288 | * | ||
289 | * Check if the entry's list_head is the head of the list, thus it's not a | ||
290 | * real entry but was the loop cursor that walked past the end | ||
291 | */ | ||
292 | #define list_entry_is_past_end(pos, head, member) \ | ||
293 | (&pos->member == (head)) | ||
294 | |||
279 | struct cx18_buffer { | 295 | struct cx18_buffer { |
280 | struct list_head list; | 296 | struct list_head list; |
281 | dma_addr_t dma_handle; | 297 | dma_addr_t dma_handle; |
@@ -558,6 +574,10 @@ struct cx18 { | |||
558 | int stream_buffers[CX18_MAX_STREAMS]; /* # of buffers for each stream */ | 574 | int stream_buffers[CX18_MAX_STREAMS]; /* # of buffers for each stream */ |
559 | int stream_buf_size[CX18_MAX_STREAMS]; /* Stream buffer size */ | 575 | int stream_buf_size[CX18_MAX_STREAMS]; /* Stream buffer size */ |
560 | struct cx18_stream streams[CX18_MAX_STREAMS]; /* Stream data */ | 576 | struct cx18_stream streams[CX18_MAX_STREAMS]; /* Stream data */ |
577 | struct snd_cx18_card *alsa; /* ALSA interface for PCM capture stream */ | ||
578 | void (*pcm_announce_callback)(struct snd_cx18_card *card, u8 *pcm_data, | ||
579 | size_t num_bytes); | ||
580 | |||
561 | unsigned long i_flags; /* global cx18 flags */ | 581 | unsigned long i_flags; /* global cx18 flags */ |
562 | atomic_t ana_capturing; /* count number of active analog capture streams */ | 582 | atomic_t ana_capturing; /* count number of active analog capture streams */ |
563 | atomic_t tot_capturing; /* total count number of active capture streams */ | 583 | atomic_t tot_capturing; /* total count number of active capture streams */ |
@@ -575,12 +595,6 @@ struct cx18 { | |||
575 | 595 | ||
576 | struct vbi_info vbi; | 596 | struct vbi_info vbi; |
577 | 597 | ||
578 | u32 pgm_info_offset; | ||
579 | u32 pgm_info_num; | ||
580 | u32 pgm_info_write_idx; | ||
581 | u32 pgm_info_read_idx; | ||
582 | struct v4l2_enc_idx_entry pgm_info[CX18_MAX_PGM_INDEX]; | ||
583 | |||
584 | u64 mpg_data_received; | 598 | u64 mpg_data_received; |
585 | u64 vbi_data_inserted; | 599 | u64 vbi_data_inserted; |
586 | 600 | ||
@@ -623,6 +637,9 @@ struct cx18 { | |||
623 | u32 active_input; | 637 | u32 active_input; |
624 | v4l2_std_id std; | 638 | v4l2_std_id std; |
625 | v4l2_std_id tuner_std; /* The norm of the tuner (fixed) */ | 639 | v4l2_std_id tuner_std; /* The norm of the tuner (fixed) */ |
640 | |||
641 | /* Used for cx18-alsa module loading */ | ||
642 | struct work_struct request_module_wk; | ||
626 | }; | 643 | }; |
627 | 644 | ||
628 | static inline struct cx18 *to_cx18(struct v4l2_device *v4l2_dev) | 645 | static inline struct cx18 *to_cx18(struct v4l2_device *v4l2_dev) |
@@ -630,6 +647,9 @@ static inline struct cx18 *to_cx18(struct v4l2_device *v4l2_dev) | |||
630 | return container_of(v4l2_dev, struct cx18, v4l2_dev); | 647 | return container_of(v4l2_dev, struct cx18, v4l2_dev); |
631 | } | 648 | } |
632 | 649 | ||
650 | /* cx18 extensions to be loaded */ | ||
651 | extern int (*cx18_ext_init)(struct cx18 *); | ||
652 | |||
633 | /* Globals */ | 653 | /* Globals */ |
634 | extern int cx18_first_minor; | 654 | extern int cx18_first_minor; |
635 | 655 | ||