|
@@ -23,6 +23,7 @@
|
|
|
#include <linux/delay.h>
|
|
|
#include <linux/notifier.h>
|
|
|
#include <linux/ioctl.h>
|
|
|
+#include <linux/fb.h>
|
|
|
|
|
|
#include <asm/firmware.h>
|
|
|
#include <asm/ps3av.h>
|
|
@@ -33,6 +34,8 @@
|
|
|
#define BUFSIZE 4096 /* vuart buf size */
|
|
|
#define PS3AV_BUF_SIZE 512 /* max packet size */
|
|
|
|
|
|
+static int safe_mode;
|
|
|
+
|
|
|
static int timeout = 5000; /* in msec ( 5 sec ) */
|
|
|
module_param(timeout, int, 0644);
|
|
|
|
|
@@ -639,6 +642,9 @@ static int ps3av_hdmi_get_id(struct ps3av_info_monitor *info)
|
|
|
{
|
|
|
int id;
|
|
|
|
|
|
+ if (safe_mode)
|
|
|
+ return PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;
|
|
|
+
|
|
|
/* check native resolution */
|
|
|
id = ps3av_resbit2id(info->res_50.native, info->res_60.native,
|
|
|
info->res_vesa.native);
|
|
@@ -1021,7 +1027,14 @@ static int ps3av_probe(struct ps3_system_bus_device *dev)
|
|
|
res);
|
|
|
|
|
|
ps3av_get_hw_conf(ps3av);
|
|
|
+
|
|
|
+#ifdef CONFIG_FB
|
|
|
+ if (fb_mode_option && !strcmp(fb_mode_option, "safe"))
|
|
|
+ safe_mode = 1;
|
|
|
+#endif /* CONFIG_FB */
|
|
|
id = ps3av_auto_videomode(&ps3av->av_hw_conf);
|
|
|
+ safe_mode = 0;
|
|
|
+
|
|
|
mutex_lock(&ps3av->mutex);
|
|
|
ps3av->ps3av_mode = id;
|
|
|
mutex_unlock(&ps3av->mutex);
|