diff options
| author | Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> | 2007-10-16 04:29:52 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-16 12:43:22 -0400 |
| commit | d7dd91ff236b90a8aca2d619554b07bcb82953c7 (patch) | |
| tree | 06dfb6c3b4110a17e313ebb4e855f3e857bfa937 /drivers/ps3 | |
| parent | 9a054fbac8f8441f48896b855a9e11c13e0c3dc8 (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')
| -rw-r--r-- | drivers/ps3/ps3av.c | 13 |
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 | ||
| 37 | static int safe_mode; | ||
| 38 | |||
| 36 | static int timeout = 5000; /* in msec ( 5 sec ) */ | 39 | static int timeout = 5000; /* in msec ( 5 sec ) */ |
| 37 | module_param(timeout, int, 0644); | 40 | module_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); |
