Browse Source

ps3: Make `ps3videomode -v 0 (auto mode) work again

ps3: Make `ps3videomode -v 0' (auto mode) work again

Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Masashi Kimoto 18 years ago
parent
commit
640729014e
3 changed files with 13 additions and 0 deletions
  1. 7 0
      drivers/ps3/ps3av.c
  2. 5 0
      drivers/video/ps3fb.c
  3. 1 0
      include/asm-powerpc/ps3av.h

+ 7 - 0
drivers/ps3/ps3av.c

@@ -744,6 +744,13 @@ int ps3av_set_video_mode(u32 id, int boot)
 
 
 EXPORT_SYMBOL_GPL(ps3av_set_video_mode);
 EXPORT_SYMBOL_GPL(ps3av_set_video_mode);
 
 
+int ps3av_get_auto_mode(int boot)
+{
+	return ps3av_auto_videomode(&ps3av.av_hw_conf, boot);
+}
+
+EXPORT_SYMBOL_GPL(ps3av_get_auto_mode);
+
 int ps3av_set_mode(u32 id, int boot)
 int ps3av_set_mode(u32 id, int boot)
 {
 {
 	int res;
 	int res;

+ 5 - 0
drivers/video/ps3fb.c

@@ -732,6 +732,11 @@ static int ps3fb_ioctl(struct fb_info *info, unsigned int cmd,
 			if (copy_from_user(&val, argp, sizeof(val)))
 			if (copy_from_user(&val, argp, sizeof(val)))
 				break;
 				break;
 
 
+			if (!(val & PS3AV_MODE_MASK)) {
+				u32 id = ps3av_get_auto_mode(0);
+				if (id > 0)
+					val = (val & ~PS3AV_MODE_MASK) | id;
+			}
 			DPRINTK("PS3FB_IOCTL_SETMODE:%x\n", val);
 			DPRINTK("PS3FB_IOCTL_SETMODE:%x\n", val);
 			retval = -EINVAL;
 			retval = -EINVAL;
 			old_mode = ps3fb_mode;
 			old_mode = ps3fb_mode;

+ 1 - 0
include/asm-powerpc/ps3av.h

@@ -706,6 +706,7 @@ extern int ps3av_vuart_read(struct ps3_vuart_port_device *dev, void *buf,
 
 
 extern int ps3av_set_video_mode(u32, int);
 extern int ps3av_set_video_mode(u32, int);
 extern int ps3av_set_audio_mode(u32, u32, u32, u32, u32);
 extern int ps3av_set_audio_mode(u32, u32, u32, u32, u32);
+extern int ps3av_get_auto_mode(int);
 extern int ps3av_set_mode(u32, int);
 extern int ps3av_set_mode(u32, int);
 extern int ps3av_get_mode(void);
 extern int ps3av_get_mode(void);
 extern int ps3av_get_scanmode(int);
 extern int ps3av_get_scanmode(int);