summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/em28xx/em28xx.h
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2008-01-05 10:57:31 -0200
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-01-05 10:57:31 -0200
commit05c059b96e21efe3087c55a1cc9d7ee598eaa92d (patch)
treeb74460385e4ff6fa7bde7dc2ab111b6b4bb631b1 /linux/drivers/media/video/em28xx/em28xx.h
parentd49826d9af46403c5029abfd34047b8d8b45a450 (diff)
downloadmediapointer-dvb-s2-05c059b96e21efe3087c55a1cc9d7ee598eaa92d.tar.gz
mediapointer-dvb-s2-05c059b96e21efe3087c55a1cc9d7ee598eaa92d.tar.bz2
Integrates em28xx-audio.c into em28xx kernel module
From: Mauro Carvalho Chehab <mchehab@infradead.org> Also fixes the remaining CodingStyle issues that Lindent didn't fix. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux/drivers/media/video/em28xx/em28xx.h')
-rw-r--r--linux/drivers/media/video/em28xx/em28xx.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/linux/drivers/media/video/em28xx/em28xx.h b/linux/drivers/media/video/em28xx/em28xx.h
index 4d318b3d5..ffe109077 100644
--- a/linux/drivers/media/video/em28xx/em28xx.h
+++ b/linux/drivers/media/video/em28xx/em28xx.h
@@ -215,6 +215,36 @@ enum em28xx_dev_state {
DEV_MISCONFIGURED = 0x04,
};
+#define EM28XX_AUDIO_BUFS 5
+#define EM28XX_NUM_AUDIO_PACKETS 64
+#define EM28XX_AUDIO_MAX_PACKET_SIZE 196 /* static value */
+#define EM28XX_CAPTURE_STREAM_EN 1
+#define EM28XX_AUDIO 0x10
+
+struct em28xx_audio {
+ char name[50];
+ char *transfer_buffer[EM28XX_AUDIO_BUFS];
+ struct urb *urb[EM28XX_AUDIO_BUFS];
+ struct usb_device *udev;
+ unsigned int capture_transfer_done;
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 16)
+ snd_pcm_substream_t *capture_pcm_substream;
+#else
+ struct snd_pcm_substream *capture_pcm_substream;
+#endif
+
+ unsigned int hwptr_done_capture;
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 16)
+ snd_card_t *sndcard;
+#else
+ struct snd_card *sndcard;
+#endif
+
+ int users, shutdown;
+ enum em28xx_stream_state capture_stream;
+ spinlock_t slock;
+};
+
/* main device struct */
struct em28xx {
/* generic device properties */
@@ -269,6 +299,8 @@ struct em28xx {
unsigned long hash; /* eeprom hash - for boards with generic ID */
unsigned long i2c_hash; /* i2c devicelist hash - for boards with generic ID */
+ struct em28xx_audio *adev;
+
/* states */
enum em28xx_dev_state state;
enum em28xx_stream_state stream;
@@ -309,6 +341,15 @@ struct em28xx {
struct em28xx_fh {
struct em28xx *dev;
unsigned int stream_on:1; /* Locks streams */
+ int radio;
+};
+
+struct em28xx_ops {
+ struct list_head next;
+ char *name;
+ int id;
+ int (*init)(struct em28xx *);
+ int (*fini)(struct em28xx *);
};
/* Provided by em28xx-i2c.c */
@@ -348,6 +389,10 @@ int em28xx_init_isoc(struct em28xx *dev);
void em28xx_uninit_isoc(struct em28xx *dev);
int em28xx_set_alternate(struct em28xx *dev);
+/* Provided by em28xx-video.c */
+int em28xx_register_extension(struct em28xx_ops *dev);
+void em28xx_unregister_extension(struct em28xx_ops *dev);
+
/* Provided by em28xx-cards.c */
extern int em2800_variant_detect(struct usb_device* udev,int model);
extern void em28xx_pre_card_setup(struct em28xx *dev);