aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ps3/ps3av.c
diff options
context:
space:
mode:
authorGeert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>2007-10-16 04:29:52 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-16 12:43:22 -0400
commitd7dd91ff236b90a8aca2d619554b07bcb82953c7 (patch)
tree06dfb6c3b4110a17e313ebb4e855f3e857bfa937 /drivers/ps3/ps3av.c
parent9a054fbac8f8441f48896b855a9e11c13e0c3dc8 (diff)
ps3fb: default to 480p on DVI-D/HDMI if video=safe
Default to the 480p video mode on DVI-D and HDMI displays if `video=safe' is passed on the kernel command line. This is intended to be used by `kboot'-style boot loaders (i.e. first-stage kernels) for the PS3, to provide a failsafe video mode. Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> Cc: "Antonino A. Daplas" <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/ps3/ps3av.c')
-rw-r--r--drivers/ps3/ps3av.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/ps3/ps3av.c b/drivers/ps3/ps3av.c
index 08296412da96..397f4ce849dc 100644
--- a/drivers/ps3/ps3av.c
+++ b/drivers/ps3/ps3av.c
@@ -23,6 +23,7 @@
23#include <linux/delay.h> 23#include <linux/delay.h>
24#include <linux/notifier.h> 24#include <linux/notifier.h>
25#include <linux/ioctl.h> 25#include <linux/ioctl.h>
26#include <linux/fb.h>
26 27
27#include <asm/firmware.h> 28#include <asm/firmware.h>
28#include <asm/ps3av.h> 29#include <asm/ps3av.h>
@@ -33,6 +34,8 @@
33#define BUFSIZE 4096 /* vuart buf size */ 34#define BUFSIZE 4096 /* vuart buf size */
34#define PS3AV_BUF_SIZE 512 /* max packet size */ 35#define PS3AV_BUF_SIZE 512 /* max packet size */
35 36
37static int safe_mode;
38
36static int timeout = 5000; /* in msec ( 5 sec ) */ 39static int timeout = 5000; /* in msec ( 5 sec ) */
37module_param(timeout, int, 0644); 40module_param(timeout, int, 0644);
38 41
@@ -639,6 +642,9 @@ static int ps3av_hdmi_get_id(struct ps3av_info_monitor *info)
639{ 642{
640 int id; 643 int id;
641 644
645 if (safe_mode)
646 return PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;
647
642 /* check native resolution */ 648 /* check native resolution */
643 id = ps3av_resbit2id(info->res_50.native, info->res_60.native, 649 id = ps3av_resbit2id(info->res_50.native, info->res_60.native,
644 info->res_vesa.native); 650 info->res_vesa.native);
@@ -1021,7 +1027,14 @@ static int ps3av_probe(struct ps3_system_bus_device *dev)
1021 res); 1027 res);
1022 1028
1023 ps3av_get_hw_conf(ps3av); 1029 ps3av_get_hw_conf(ps3av);
1030
1031#ifdef CONFIG_FB
1032 if (fb_mode_option && !strcmp(fb_mode_option, "safe"))
1033 safe_mode = 1;
1034#endif /* CONFIG_FB */
1024 id = ps3av_auto_videomode(&ps3av->av_hw_conf); 1035 id = ps3av_auto_videomode(&ps3av->av_hw_conf);
1036 safe_mode = 0;
1037
1025 mutex_lock(&ps3av->mutex); 1038 mutex_lock(&ps3av->mutex);
1026 ps3av->ps3av_mode = id; 1039 ps3av->ps3av_mode = id;
1027 mutex_unlock(&ps3av->mutex); 1040 mutex_unlock(&ps3av->mutex);