mirror of
https://github.com/genesi/linux-legacy.git
synced 2026-07-09 02:06:28 +00:00
siihdmi: don't wait for receiver sense to setup display
* do not power down the chip just because the monitor is still in standby and waking up * EDID will be requested but if the monitor has not properly powered yet then it will give a default mode * also fix the symlink error (try remove device vs. make new phys-link, both are phys-link now, so it will remove the phys-link attribute before recreating it)
This commit is contained in:
@@ -1015,7 +1015,7 @@ static const struct fb_videomode *siihdmi_select_video_mode(const struct siihdmi
|
||||
return mode;
|
||||
|
||||
/* if no matching mode was found, push 640x480@60 */
|
||||
INFO("unable to select a suitable video mode, using CEA Mode 1\n");
|
||||
INFO("unable to select a suitable video mode, using CEA Mode 1 (640x480@60)\n");
|
||||
return &cea_modes[1];
|
||||
}
|
||||
|
||||
@@ -1040,11 +1040,11 @@ static int siihdmi_setup_display(struct siihdmi_tx *tx)
|
||||
(isr & SIIHDMI_ISR_DISPLAY_ATTACHED) ? "attached" : "detached",
|
||||
(isr & SIIHDMI_ISR_RECEIVER_SENSE) ? "on" : "off");
|
||||
|
||||
if (~isr & (SIIHDMI_ISR_DISPLAY_ATTACHED))
|
||||
if (~isr & SIIHDMI_ISR_DISPLAY_ATTACHED)
|
||||
return siihdmi_power_down(tx);
|
||||
|
||||
if (tx->info)
|
||||
sysfs_remove_link(&tx->info->dev->kobj, "device");
|
||||
sysfs_remove_link(&tx->info->dev->kobj, "phys-link");
|
||||
|
||||
for (i = 0, tx->info = NULL; i < num_registered_fb; i++) {
|
||||
struct fb_info * const info = registered_fb[i];
|
||||
@@ -1065,6 +1065,7 @@ static int siihdmi_setup_display(struct siihdmi_tx *tx)
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* use EDID to detect sink characteristics */
|
||||
if ((ret = siihdmi_read_edid(tx, (u8 *) &block0, sizeof(block0))) < 0)
|
||||
return ret;
|
||||
@@ -1087,8 +1088,8 @@ static int siihdmi_setup_display(struct siihdmi_tx *tx)
|
||||
/* create monspecs from EDID for the basic stuff */
|
||||
fb_edid_to_monspecs(tx->edid.data, &tx->info->monspecs);
|
||||
fb_videomode_to_modelist(tx->info->monspecs.modedb,
|
||||
tx->info->monspecs.modedb_len,
|
||||
&tx->info->modelist);
|
||||
tx->info->monspecs.modedb_len,
|
||||
&tx->info->modelist);
|
||||
|
||||
if (block0.extensions)
|
||||
siihdmi_process_extensions(tx);
|
||||
@@ -1181,7 +1182,6 @@ static irqreturn_t siihdmi_hotplug_handler(int irq, void *dev_id)
|
||||
struct siihdmi_tx *tx = ((struct siihdmi_tx *) dev_id);
|
||||
|
||||
schedule_work(&tx->hotplug.handler);
|
||||
//msecs_to_jiffies(SIIHDMI_HOTPLUG_HANDLER_TIMEOUT));
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
@@ -1223,7 +1223,7 @@ static void siihdmi_hotplug_event(struct work_struct *work)
|
||||
power_off);
|
||||
}
|
||||
|
||||
if (isr & (SIIHDMI_ISR_DISPLAY_ATTACHED | SIIHDMI_ISR_RECEIVER_SENSE)) {
|
||||
if (isr & (SIIHDMI_ISR_DISPLAY_ATTACHED)) {
|
||||
siihdmi_initialise(tx);
|
||||
siihdmi_setup_display(tx);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user