Remove checks for output privates in various bits of code.
Now, the output is only set up if it fully initializes, so it will never exist if the private it requires doesn't.
This commit is contained in:
parent
ada8f62da2
commit
9bb7736ab3
|
|
@ -866,10 +866,10 @@ i830SetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode)
|
|||
for (i = 0; i < pI830->num_outputs; i++) {
|
||||
I830OutputPtr output = &pI830->output[i];
|
||||
|
||||
if (pI830->output[i].sdvo_drv != NULL)
|
||||
if (pI830->output[i].type == I830_OUTPUT_SDVO)
|
||||
pI830->output[i].dpms(pScrn, &pI830->output[i], DPMSModeOff);
|
||||
|
||||
if (output->i2c_drv != NULL)
|
||||
if (pI830->output[i].type == I830_OUTPUT_DVO)
|
||||
output->i2c_drv->vid_rec->Mode(output->i2c_drv->dev_priv,
|
||||
pMode);
|
||||
}
|
||||
|
|
@ -885,7 +885,7 @@ i830SetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode)
|
|||
goto done;
|
||||
}
|
||||
for (i = 0; i < pI830->num_outputs; i++) {
|
||||
if (pI830->output[i].sdvo_drv)
|
||||
if (pI830->output[i].type == I830_OUTPUT_SDVO)
|
||||
I830SDVOPostSetMode(pI830->output[i].sdvo_drv, pMode);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -985,14 +985,12 @@ I830DetectMonitors(ScrnInfoPtr pScrn)
|
|||
xf86PrintEDID(pI830->output[i].MonInfo);
|
||||
break;
|
||||
case I830_OUTPUT_SDVO:
|
||||
if (pI830->output[i].sdvo_drv != NULL) {
|
||||
pI830->output[i].MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex,
|
||||
pI830->output[i].pDDCBus);
|
||||
pI830->output[i].MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex,
|
||||
pI830->output[i].pDDCBus);
|
||||
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "DDC SDVO %d, %08lX\n", i,
|
||||
pI830->output[i].pDDCBus->DriverPrivate.uval);
|
||||
xf86PrintEDID(pI830->output[i].MonInfo);
|
||||
}
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "DDC SDVO %d, %08lX\n", i,
|
||||
pI830->output[i].pDDCBus->DriverPrivate.uval);
|
||||
xf86PrintEDID(pI830->output[i].MonInfo);
|
||||
break;
|
||||
case I830_OUTPUT_UNUSED:
|
||||
break;
|
||||
|
|
@ -1675,8 +1673,7 @@ I830PreInit(ScrnInfoPtr pScrn, int flags)
|
|||
* treat different SDVO outputs differently.
|
||||
*/
|
||||
for (i = 0; i < MAX_OUTPUTS; i++) {
|
||||
if (pI830->output[i].type == I830_OUTPUT_SDVO &&
|
||||
pI830->output[i].sdvo_drv != NULL) {
|
||||
if (pI830->output[i].type == I830_OUTPUT_SDVO) {
|
||||
if (!I830DetectSDVODisplays(pScrn, i))
|
||||
continue;
|
||||
|
||||
|
|
@ -4339,11 +4336,8 @@ i830MonitorDetectDebugger(ScrnInfoPtr pScrn)
|
|||
for (i = 0; i < MAX_OUTPUTS; i++) {
|
||||
Bool found_sdvo = TRUE;
|
||||
|
||||
if (pI830->output[i].type != I830_OUTPUT_SDVO ||
|
||||
pI830->output[i].sdvo_drv == NULL)
|
||||
{
|
||||
if (pI830->output[i].type != I830_OUTPUT_SDVO)
|
||||
continue;
|
||||
}
|
||||
start = GetTimeInMillis();
|
||||
found_sdvo = I830DetectSDVODisplays(pScrn, i);
|
||||
finish = GetTimeInMillis();
|
||||
|
|
|
|||
|
|
@ -57,9 +57,6 @@ struct _I830DVODriver i830_dvo_drivers[] =
|
|||
static void
|
||||
i830_dvo_dpms(ScrnInfoPtr pScrn, I830OutputPtr output, int mode)
|
||||
{
|
||||
if (output->i2c_drv == NULL)
|
||||
return;
|
||||
|
||||
if (mode == DPMSModeOn)
|
||||
output->i2c_drv->vid_rec->Power(output->i2c_drv->dev_priv, TRUE);
|
||||
else
|
||||
|
|
@ -71,9 +68,6 @@ i830_dvo_save(ScrnInfoPtr pScrn, I830OutputPtr output)
|
|||
{
|
||||
I830Ptr pI830 = I830PTR(pScrn);
|
||||
|
||||
if (output->i2c_drv == NULL)
|
||||
return;
|
||||
|
||||
/* Each output should probably just save the registers it touches, but for
|
||||
* now, use more overkill.
|
||||
*/
|
||||
|
|
@ -89,9 +83,6 @@ i830_dvo_restore(ScrnInfoPtr pScrn, I830OutputPtr output)
|
|||
{
|
||||
I830Ptr pI830 = I830PTR(pScrn);
|
||||
|
||||
if (output->i2c_drv == NULL)
|
||||
return;
|
||||
|
||||
OUTREG(DVOA, pI830->saveDVOA);
|
||||
OUTREG(DVOB, pI830->saveDVOB);
|
||||
OUTREG(DVOC, pI830->saveDVOC);
|
||||
|
|
@ -99,7 +90,7 @@ i830_dvo_restore(ScrnInfoPtr pScrn, I830OutputPtr output)
|
|||
output->i2c_drv->vid_rec->RestoreRegs(output->i2c_drv->dev_priv);
|
||||
}
|
||||
|
||||
Bool
|
||||
static Bool
|
||||
I830I2CDetectDVOControllers(ScrnInfoPtr pScrn, I2CBusPtr pI2CBus,
|
||||
struct _I830DVODriver **retdrv)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -763,14 +763,12 @@ I830ReprobePipeModeList(ScrnInfoPtr pScrn, int pipe)
|
|||
}
|
||||
break;
|
||||
case I830_OUTPUT_DVO:
|
||||
if (outputs & PIPE_DFP && pI830->output[i].i2c_drv != NULL) {
|
||||
if (outputs & PIPE_DFP) {
|
||||
output_index = i;
|
||||
}
|
||||
break;
|
||||
case I830_OUTPUT_SDVO:
|
||||
if (outputs & PIPE_DFP &&
|
||||
pI830->output[i].sdvo_drv != NULL)
|
||||
{
|
||||
if (outputs & PIPE_DFP) {
|
||||
output_index = i;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -644,9 +644,6 @@ i830_sdvo_dpms(ScrnInfoPtr pScrn, I830OutputPtr output, int mode)
|
|||
{
|
||||
I830SDVOPtr sdvo = output->sdvo_drv;
|
||||
|
||||
if (sdvo == NULL)
|
||||
return;
|
||||
|
||||
if (mode != DPMSModeOn)
|
||||
I830SDVOSetActiveOutputs(sdvo, FALSE, FALSE);
|
||||
else
|
||||
|
|
@ -659,9 +656,6 @@ i830_sdvo_save(ScrnInfoPtr pScrn, I830OutputPtr output)
|
|||
I830Ptr pI830 = I830PTR(pScrn);
|
||||
I830SDVOPtr sdvo = output->sdvo_drv;
|
||||
|
||||
if (sdvo == NULL)
|
||||
return;
|
||||
|
||||
sdvo->save_sdvo_mult = I830SDVOGetClockRateMult(sdvo);
|
||||
I830SDVOGetActiveOutputs(sdvo, &sdvo->save_sdvo_active_1,
|
||||
&sdvo->save_sdvo_active_2);
|
||||
|
|
@ -699,9 +693,6 @@ i830_sdvo_restore(ScrnInfoPtr pScrn, I830OutputPtr output)
|
|||
I830Ptr pI830 = I830PTR(pScrn);
|
||||
I830SDVOPtr sdvo = output->sdvo_drv;
|
||||
|
||||
if (sdvo == NULL)
|
||||
return;
|
||||
|
||||
if (sdvo->caps.caps & 0x1) {
|
||||
I830SDVOSetTargetInput(sdvo, FALSE, FALSE);
|
||||
I830SDVOSetTimings(sdvo, &sdvo->save_input_dtd_1,
|
||||
|
|
|
|||
Loading…
Reference in New Issue