Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
[pandora-kernel.git] / drivers / media / dvb / ttpci / av7110_av.c
index e719af8..aef6e36 100644 (file)
@@ -32,7 +32,6 @@
 #include <linux/kernel.h>
 #include <linux/string.h>
 #include <linux/delay.h>
-#include <linux/smp_lock.h>
 #include <linux/fs.h>
 
 #include "av7110.h"
@@ -330,7 +329,7 @@ int av7110_set_volume(struct av7110 *av7110, int volleft, int volright)
        return 0;
 }
 
-int av7110_set_vidmode(struct av7110 *av7110, int mode)
+int av7110_set_vidmode(struct av7110 *av7110, enum av7110_video_mode mode)
 {
        int ret;
        dprintk(2, "av7110:%p, \n", av7110);
@@ -349,11 +348,15 @@ int av7110_set_vidmode(struct av7110 *av7110, int mode)
 }
 
 
-static int sw2mode[16] = {
-       VIDEO_MODE_PAL, VIDEO_MODE_NTSC, VIDEO_MODE_NTSC, VIDEO_MODE_PAL,
-       VIDEO_MODE_NTSC, VIDEO_MODE_NTSC, VIDEO_MODE_PAL, VIDEO_MODE_NTSC,
-       VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL,
-       VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL,
+static enum av7110_video_mode sw2mode[16] = {
+       AV7110_VIDEO_MODE_PAL, AV7110_VIDEO_MODE_NTSC,
+       AV7110_VIDEO_MODE_NTSC, AV7110_VIDEO_MODE_PAL,
+       AV7110_VIDEO_MODE_NTSC, AV7110_VIDEO_MODE_NTSC,
+       AV7110_VIDEO_MODE_PAL, AV7110_VIDEO_MODE_NTSC,
+       AV7110_VIDEO_MODE_PAL, AV7110_VIDEO_MODE_PAL,
+       AV7110_VIDEO_MODE_PAL, AV7110_VIDEO_MODE_PAL,
+       AV7110_VIDEO_MODE_PAL, AV7110_VIDEO_MODE_PAL,
+       AV7110_VIDEO_MODE_PAL, AV7110_VIDEO_MODE_PAL,
 };
 
 static int get_video_format(struct av7110 *av7110, u8 *buf, int count)
@@ -392,7 +395,7 @@ static int get_video_format(struct av7110 *av7110, u8 *buf, int count)
  ****************************************************************************/
 
 static inline long aux_ring_buffer_write(struct dvb_ringbuffer *rbuf,
-                                        const char *buf, unsigned long count)
+                                        const u8 *buf, unsigned long count)
 {
        unsigned long todo = count;
        int free;
@@ -437,7 +440,7 @@ static void play_audio_cb(u8 *buf, int count, void *priv)
 #define FREE_COND (dvb_ringbuffer_free(&av7110->avout) >= 20 * 1024 && \
                   dvb_ringbuffer_free(&av7110->aout) >= 20 * 1024)
 
-static ssize_t dvb_play(struct av7110 *av7110, const u8 __user *buf,
+static ssize_t dvb_play(struct av7110 *av7110, const char __user *buf,
                        unsigned long count, int nonblock, int type)
 {
        unsigned long todo = count, n;
@@ -500,7 +503,7 @@ static ssize_t dvb_play_kernel(struct av7110 *av7110, const u8 *buf,
        return count - todo;
 }
 
-static ssize_t dvb_aplay(struct av7110 *av7110, const u8 __user *buf,
+static ssize_t dvb_aplay(struct av7110 *av7110, const char __user *buf,
                         unsigned long count, int nonblock, int type)
 {
        unsigned long todo = count, n;
@@ -960,7 +963,7 @@ static u8 iframe_header[] = { 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x80, 0x00, 0x
 
 #define MIN_IFRAME 400000
 
-static int play_iframe(struct av7110 *av7110, u8 __user *buf, unsigned int len, int nonblock)
+static int play_iframe(struct av7110 *av7110, char __user *buf, unsigned int len, int nonblock)
 {
        int i, n;
 
@@ -1009,7 +1012,7 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
                if (av7110->videostate.stream_source == VIDEO_SOURCE_MEMORY)
                        ret = av7110_av_stop(av7110, RP_VIDEO);
                else
-                       ret = vidcom(av7110, VIDEO_CMD_STOP,
+                       ret = vidcom(av7110, AV_VIDEO_CMD_STOP,
                               av7110->videostate.video_blank ? 0 : 1);
                if (!ret)
                        av7110->trickmode = TRICK_NONE;
@@ -1019,7 +1022,7 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
                av7110->trickmode = TRICK_NONE;
                if (av7110->videostate.play_state == VIDEO_FREEZED) {
                        av7110->videostate.play_state = VIDEO_PLAYING;
-                       ret = vidcom(av7110, VIDEO_CMD_PLAY, 0);
+                       ret = vidcom(av7110, AV_VIDEO_CMD_PLAY, 0);
                        if (ret)
                                break;
                }
@@ -1034,7 +1037,7 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
                        ret = av7110_av_start_play(av7110, RP_VIDEO);
                }
                if (!ret)
-                       ret = vidcom(av7110, VIDEO_CMD_PLAY, 0);
+                       ret = vidcom(av7110, AV_VIDEO_CMD_PLAY, 0);
                if (!ret)
                        av7110->videostate.play_state = VIDEO_PLAYING;
                break;
@@ -1044,7 +1047,7 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
                if (av7110->playing & RP_VIDEO)
                        ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Pause, 0);
                else
-                       ret = vidcom(av7110, VIDEO_CMD_FREEZE, 1);
+                       ret = vidcom(av7110, AV_VIDEO_CMD_FREEZE, 1);
                if (!ret)
                        av7110->trickmode = TRICK_FREEZE;
                break;
@@ -1053,7 +1056,7 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
                if (av7110->playing & RP_VIDEO)
                        ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Continue, 0);
                if (!ret)
-                       ret = vidcom(av7110, VIDEO_CMD_PLAY, 0);
+                       ret = vidcom(av7110, AV_VIDEO_CMD_PLAY, 0);
                if (!ret) {
                        av7110->videostate.play_state = VIDEO_PLAYING;
                        av7110->trickmode = TRICK_NONE;
@@ -1083,19 +1086,18 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
        case VIDEO_SET_DISPLAY_FORMAT:
        {
                video_displayformat_t format = (video_displayformat_t) arg;
-               u16 val = 0;
 
                switch (format) {
                case VIDEO_PAN_SCAN:
-                       val = VID_PAN_SCAN_PREF;
+                       av7110->display_panscan = VID_PAN_SCAN_PREF;
                        break;
 
                case VIDEO_LETTER_BOX:
-                       val = VID_VC_AND_PS_PREF;
+                       av7110->display_panscan = VID_VC_AND_PS_PREF;
                        break;
 
                case VIDEO_CENTER_CUT_OUT:
-                       val = VID_CENTRE_CUT_PREF;
+                       av7110->display_panscan = VID_CENTRE_CUT_PREF;
                        break;
 
                default:
@@ -1105,7 +1107,7 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
                        break;
                av7110->videostate.display_format = format;
                ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetPanScanType,
-                                   1, (u16) val);
+                                   1, av7110->display_panscan);
                break;
        }
 
@@ -1136,7 +1138,7 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
                        ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY,
                                            __Scan_I, 2, AV_PES, 0);
                else
-                       ret = vidcom(av7110, VIDEO_CMD_FFWD, arg);
+                       ret = vidcom(av7110, AV_VIDEO_CMD_FFWD, arg);
                if (!ret) {
                        av7110->trickmode = TRICK_FAST;
                        av7110->videostate.play_state = VIDEO_PLAYING;
@@ -1147,13 +1149,13 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
                if (av7110->playing&RP_VIDEO) {
                        ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Slow, 2, 0, 0);
                        if (!ret)
-                               ret = vidcom(av7110, VIDEO_CMD_SLOW, arg);
+                               ret = vidcom(av7110, AV_VIDEO_CMD_SLOW, arg);
                } else {
-                       ret = vidcom(av7110, VIDEO_CMD_PLAY, 0);
+                       ret = vidcom(av7110, AV_VIDEO_CMD_PLAY, 0);
                        if (!ret)
-                               ret = vidcom(av7110, VIDEO_CMD_STOP, 0);
+                               ret = vidcom(av7110, AV_VIDEO_CMD_STOP, 0);
                        if (!ret)
-                               ret = vidcom(av7110, VIDEO_CMD_SLOW, arg);
+                               ret = vidcom(av7110, AV_VIDEO_CMD_SLOW, arg);
                }
                if (!ret) {
                        av7110->trickmode = TRICK_SLOW;
@@ -1182,10 +1184,10 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
                                ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY,
                                                    __Slow, 2, 0, 0);
                                if (!ret)
-                                       ret = vidcom(av7110, VIDEO_CMD_SLOW, arg);
+                                       ret = vidcom(av7110, AV_VIDEO_CMD_SLOW, arg);
                        }
                        if (av7110->trickmode == TRICK_FREEZE)
-                               ret = vidcom(av7110, VIDEO_CMD_STOP, 1);
+                               ret = vidcom(av7110, AV_VIDEO_CMD_STOP, 1);
                }
                break;
 
@@ -1467,8 +1469,9 @@ int av7110_av_register(struct av7110 *av7110)
        av7110->videostate.play_state = VIDEO_STOPPED;
        av7110->videostate.stream_source = VIDEO_SOURCE_DEMUX;
        av7110->videostate.video_format = VIDEO_FORMAT_4_3;
-       av7110->videostate.display_format = VIDEO_CENTER_CUT_OUT;
+       av7110->videostate.display_format = VIDEO_LETTER_BOX;
        av7110->display_ar = VIDEO_FORMAT_4_3;
+       av7110->display_panscan = VID_VC_AND_PS_PREF;
 
        init_waitqueue_head(&av7110->video_events.wait_queue);
        spin_lock_init(&av7110->video_events.lock);