Lines Matching refs:output

35  * in a ganged mode to provide higher bandwidth to a single output.  Currently,
36 * this code doesn't deal with either ganged mode or more than one SDVO output.
62 /** Active outputs controlled by this SDVO output */
75 /* Current output type name */
84 * While we have these nice friendly flags for output types that ought to
85 * decide this for us, the S-Video output on our HDMI+S-Video card shows
95 * This is set if we detect output of sdvo device as LVDS.
100 *This is set if output is LVDS or TV.
121 /** DDC bus used by this SDVO output */
149 static void i830_sdvo_write_sdvox(xf86OutputPtr output, uint32_t val)
151 ScrnInfoPtr pScrn = output->scrn;
152 I830OutputPrivatePtr intel_output = output->driver_private;
178 static Bool i830_sdvo_read_byte(xf86OutputPtr output, int addr,
181 I830OutputPrivatePtr intel_output = output->driver_private;
194 static Bool i830_sdvo_read_byte_quiet(xf86OutputPtr output, int addr,
197 I830OutputPrivatePtr intel_output = output->driver_private;
204 static Bool i830_sdvo_write_byte(xf86OutputPtr output,
207 I830OutputPrivatePtr intel_output = output->driver_private;
221 /** Mapping of command numbers to names, for debug output */
295 #define SDVO_PRIV(output) ((struct i830_sdvo_priv *) (output)->dev_priv)
301 i830_sdvo_write_cmd(xf86OutputPtr output, uint8_t cmd, void *args,
304 I830Ptr pI830 = I830PTR(output->scrn);
305 I830OutputPrivatePtr intel_output = output->driver_private;
333 /* send the output regs */
335 i830_sdvo_write_byte(output, SDVO_I2C_ARG_0 - i, ((uint8_t *)args)[i]);
338 i830_sdvo_write_byte(output, SDVO_I2C_OPCODE, cmd);
355 i830_sdvo_read_response(xf86OutputPtr output, void *response, int response_len)
357 I830Ptr pI830 = I830PTR(output->scrn);
358 I830OutputPrivatePtr intel_output = output->driver_private;
366 i830_sdvo_read_byte(output, SDVO_I2C_RETURN_0 + i,
371 i830_sdvo_read_byte(output, SDVO_I2C_CMD_STATUS, &status);
414 i830_sdvo_set_control_bus_switch(xf86OutputPtr output, uint8_t target)
416 i830_sdvo_write_cmd(output, SDVO_CMD_SET_CONTROL_BUS_SWITCH, &target, 1);
420 i830_sdvo_set_target_input(xf86OutputPtr output, Bool target_0, Bool target_1)
431 i830_sdvo_write_cmd(output, SDVO_CMD_SET_TARGET_INPUT, &targets,
434 status = i830_sdvo_read_response(output, NULL, 0);
446 i830_sdvo_get_trained_inputs(xf86OutputPtr output, Bool *input_1, Bool *input_2)
451 i830_sdvo_write_cmd(output, SDVO_CMD_GET_TRAINED_INPUTS, NULL, 0);
453 status = i830_sdvo_read_response(output, &response, sizeof(response));
464 i830_sdvo_get_active_outputs(xf86OutputPtr output,
469 i830_sdvo_write_cmd(output, SDVO_CMD_GET_ACTIVE_OUTPUTS, NULL, 0);
470 status = i830_sdvo_read_response(output, outputs, sizeof(*outputs));
476 i830_sdvo_set_active_outputs(xf86OutputPtr output,
481 i830_sdvo_write_cmd(output, SDVO_CMD_SET_ACTIVE_OUTPUTS, &outputs,
483 status = i830_sdvo_read_response(output, NULL, 0);
489 i830_sdvo_set_encoder_power_state(xf86OutputPtr output, int mode)
509 i830_sdvo_write_cmd(output, SDVO_CMD_SET_ENCODER_POWER_STATE, &state,
511 status = i830_sdvo_read_response(output, NULL, 0);
520 i830_sdvo_get_input_pixel_clock_range(xf86OutputPtr output, int *clock_min,
526 i830_sdvo_write_cmd(output, SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE, NULL, 0);
528 status = i830_sdvo_read_response(output, &clocks, sizeof(clocks));
541 i830_sdvo_set_target_output(xf86OutputPtr output, uint16_t outputs)
545 i830_sdvo_write_cmd(output, SDVO_CMD_SET_TARGET_OUTPUT, &outputs,
548 status = i830_sdvo_read_response(output, NULL, 0);
553 /** Fetches either input or output timings to *dtd, depending on cmd. */
555 i830_sdvo_get_timing(xf86OutputPtr output, uint8_t cmd, struct i830_sdvo_dtd *dtd)
559 i830_sdvo_write_cmd(output, cmd, NULL, 0);
561 status = i830_sdvo_read_response(output, &dtd->part1, sizeof(dtd->part1));
565 i830_sdvo_write_cmd(output, cmd + 1, NULL, 0);
567 status = i830_sdvo_read_response(output, &dtd->part2, sizeof(dtd->part2));
575 i830_sdvo_get_input_timing(xf86OutputPtr output, struct i830_sdvo_dtd *dtd)
577 return i830_sdvo_get_timing(output, SDVO_CMD_GET_INPUT_TIMINGS_PART1, dtd);
581 i830_sdvo_get_output_timing(xf86OutputPtr output, struct i830_sdvo_dtd *dtd)
583 return i830_sdvo_get_timing(output, SDVO_CMD_GET_OUTPUT_TIMINGS_PART1, dtd);
586 /** Sets either input or output timings from *dtd, depending on cmd. */
588 i830_sdvo_set_timing(xf86OutputPtr output, uint8_t cmd,
593 i830_sdvo_write_cmd(output, cmd, &dtd->part1, sizeof(dtd->part1));
594 status = i830_sdvo_read_response(output, NULL, 0);
598 i830_sdvo_write_cmd(output, cmd + 1, &dtd->part2, sizeof(dtd->part2));
599 status = i830_sdvo_read_response(output, NULL, 0);
607 i830_sdvo_set_input_timing(xf86OutputPtr output, struct i830_sdvo_dtd *dtd)
609 return i830_sdvo_set_timing(output, SDVO_CMD_SET_INPUT_TIMINGS_PART1, dtd);
613 i830_sdvo_set_output_timing(xf86OutputPtr output, struct i830_sdvo_dtd *dtd)
615 return i830_sdvo_set_timing(output, SDVO_CMD_SET_OUTPUT_TIMINGS_PART1, dtd);
619 i830_sdvo_create_preferred_input_timing(xf86OutputPtr output, uint16_t clock,
622 I830OutputPrivatePtr intel_output = output->driver_private;
637 i830_sdvo_write_cmd(output, SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING,
639 status = i830_sdvo_read_response(output, NULL, 0);
647 i830_sdvo_get_preferred_input_timing(xf86OutputPtr output,
652 i830_sdvo_write_cmd(output, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1,
655 status = i830_sdvo_read_response(output, &dtd->part1, sizeof(dtd->part1));
659 i830_sdvo_write_cmd(output, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2,
662 status = i830_sdvo_read_response(output, &dtd->part2, sizeof(dtd->part2));
671 i830_sdvo_get_clock_rate_mult(xf86OutputPtr output)
673 I830OutputPrivatePtr intel_output = output->driver_private;
678 i830_sdvo_write_cmd(output, SDVO_CMD_GET_CLOCK_RATE_MULT, NULL, 0);
679 status = i830_sdvo_read_response(output, &response, 1);
696 * This has to match with the settings in the DPLL/SDVO reg when the output
700 i830_sdvo_set_clock_rate_mult(xf86OutputPtr output, uint8_t val)
704 i830_sdvo_write_cmd(output, SDVO_CMD_SET_CLOCK_RATE_MULT, &val, 1);
705 status = i830_sdvo_read_response(output, NULL, 0);
794 i830_sdvo_get_supp_encode(xf86OutputPtr output, struct i830_sdvo_encode *encode)
798 i830_sdvo_write_cmd(output, SDVO_CMD_GET_SUPP_ENCODE, NULL, 0);
799 status = i830_sdvo_read_response(output, encode, sizeof(*encode));
809 i830_sdvo_get_digital_encoding_mode(xf86OutputPtr output)
811 I830OutputPrivatePtr intel_output = output->driver_private;
815 i830_sdvo_set_target_output(output, dev_priv->controlled_output);
817 i830_sdvo_write_cmd(output, SDVO_CMD_GET_ENCODE, NULL, 0);
818 status = i830_sdvo_read_response(output, &dev_priv->is_hdmi, 1);
827 i830_sdvo_set_encode(xf86OutputPtr output, uint8_t mode)
831 i830_sdvo_write_cmd(output, SDVO_CMD_SET_ENCODE, &mode, 1);
832 status = i830_sdvo_read_response(output, NULL, 0);
838 i830_sdvo_set_colorimetry(xf86OutputPtr output, uint8_t mode)
842 i830_sdvo_write_cmd(output, SDVO_CMD_SET_COLORIMETRY, &mode, 1);
843 status = i830_sdvo_read_response(output, NULL, 0);
850 i830_sdvo_set_pixel_repli(xf86OutputPtr output, uint8_t repli)
854 i830_sdvo_write_cmd(output, SDVO_CMD_SET_PIXEL_REPLI, &repli, 1);
855 status = i830_sdvo_read_response(output, NULL, 0);
861 static void i830_sdvo_dump_hdmi_buf(xf86OutputPtr output)
870 i830_sdvo_write_cmd(output, SDVO_CMD_GET_HBUF_AV_SPLIT, NULL, 0);
871 i830_sdvo_read_response(output, &av_split, 1);
875 i830_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_INDEX,
877 i830_sdvo_write_cmd(output, SDVO_CMD_GET_HBUF_INFO, NULL, 0);
878 i830_sdvo_read_response(output, &buf_size, 1);
882 i830_sdvo_write_cmd(output, SDVO_CMD_GET_HBUF_DATA, NULL, 0);
883 i830_sdvo_read_response(output, pos, 8);
889 static void i830_sdvo_set_hdmi_buf(xf86OutputPtr output, int index,
897 i830_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_INDEX, set_buf_index, 2);
900 i830_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_DATA, data, 8);
904 i830_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_TXRATE, &tx_rate, 1);
979 static void i830_sdvo_set_avi_infoframe(xf86OutputPtr output,
990 i830_sdvo_set_hdmi_buf(output, 1, (uint8_t *)&avi_if, 4 + avi_if.len,
995 i830_sdvo_set_tv_format(xf86OutputPtr output)
997 ScrnInfoPtr pScrn = output->scrn;
998 I830OutputPrivatePtr intel_output = output->driver_private;
1010 i830_sdvo_write_cmd(output, SDVO_CMD_SET_TV_FORMAT, format,
1012 status = i830_sdvo_read_response(output, NULL, 0);
1020 i830_sdvo_mode_fixup(xf86OutputPtr output, DisplayModePtr mode,
1023 I830OutputPrivatePtr intel_output = output->driver_private;
1030 /* We need to construct preferred input timings based on our output
1031 * timings. To do that, we have to set the output timings, even
1036 ErrorF("output modeline:\n");
1039 /* Set output timings */
1041 i830_sdvo_set_target_output(output, dev_priv->controlled_output);
1042 i830_sdvo_set_output_timing(output, &output_dtd);
1045 i830_sdvo_set_target_input(output, TRUE, FALSE);
1047 success = i830_sdvo_create_preferred_input_timing(output,
1054 i830_sdvo_get_preferred_input_timing(output, &input_dtd);
1077 /* Set output timings */
1080 i830_sdvo_set_target_output(output, dev_priv->controlled_output);
1081 i830_sdvo_set_output_timing(output, &output_dtd);
1084 i830_sdvo_set_target_input(output, TRUE, FALSE);
1087 success = i830_sdvo_create_preferred_input_timing(output,
1094 i830_sdvo_get_preferred_input_timing(output, &input_dtd);
1119 i830_sdvo_mode_set(xf86OutputPtr output, DisplayModePtr mode,
1122 ScrnInfoPtr pScrn = output->scrn;
1124 I830OutputPrivatePtr intel_output = output->driver_private;
1126 xf86CrtcPtr crtc = output->crtc;
1138 * output. This is only correct if we're a single-input device, in
1139 * which case the first input is the output from the appropriate SDVO
1146 i830_sdvo_write_cmd(output, SDVO_CMD_SET_IN_OUT_MAP,
1148 status = i830_sdvo_read_response(output, NULL, 0);
1151 i830_sdvo_set_avi_infoframe(output, mode);
1163 /* If it's a TV, we already set the output timing in mode_fixup.
1164 * Otherwise, the output timing is equal to the input timing.
1166 i830_sdvo_set_target_output(output, dev_priv->controlled_output);
1168 i830_sdvo_set_target_input(output, TRUE, FALSE);
1171 i830_sdvo_set_tv_format(output);
1174 /* Set the output timing to the screen */
1175 i830_sdvo_set_output_timing(output, &input_dtd);
1180 * feature. However, presumably we would need to adjust the CRTC to output
1184 success = i830_sdvo_create_preferred_input_timing(output, clock,
1189 i830_sdvo_get_preferred_input_timing(output, &input_dtd);
1190 i830_sdvo_set_input_timing(output, &input_dtd);
1193 i830_sdvo_set_input_timing(output, &input_dtd);
1198 i830_sdvo_set_clock_rate_mult(output, SDVO_CLOCK_RATE_MULT_1X);
1201 i830_sdvo_set_clock_rate_mult(output, SDVO_CLOCK_RATE_MULT_2X);
1204 i830_sdvo_set_clock_rate_mult(output, SDVO_CLOCK_RATE_MULT_4X);
1239 i830_sdvo_write_sdvox(output, sdvox);
1246 i830_sdvo_dpms(xf86OutputPtr output, int mode)
1248 ScrnInfoPtr pScrn = output->scrn;
1249 I830OutputPrivatePtr intel_output = output->driver_private;
1255 i830_sdvo_set_active_outputs(output, 0);
1257 i830_sdvo_set_encoder_power_state(output, mode);
1262 i830_sdvo_write_sdvox(output, temp & ~SDVO_ENABLE);
1272 i830_sdvo_write_sdvox(output, temp | SDVO_ENABLE);
1276 status = i830_sdvo_get_trained_inputs(output, &input1, &input2);
1281 "First %s output reported failure to sync\n",
1286 i830_sdvo_set_encoder_power_state(output, mode);
1287 i830_sdvo_set_active_outputs(output, dev_priv->controlled_output);
1292 i830_sdvo_save(xf86OutputPtr output)
1294 ScrnInfoPtr pScrn = output->scrn;
1295 I830OutputPrivatePtr intel_output = output->driver_private;
1302 dev_priv->save_sdvo_mult = i830_sdvo_get_clock_rate_mult(output);
1303 i830_sdvo_get_active_outputs(output, &dev_priv->save_active_outputs);
1305 i830_sdvo_set_target_input(output, TRUE, FALSE);
1306 i830_sdvo_get_input_timing(output, &dev_priv->save_input_dtd_1);
1309 i830_sdvo_set_target_input(output, FALSE, TRUE);
1310 i830_sdvo_get_input_timing(output, &dev_priv->save_input_dtd_2);
1318 i830_sdvo_set_target_output(output, this_output);
1319 i830_sdvo_get_output_timing(output, &dev_priv->save_output_dtd[o]);
1330 i830_sdvo_restore(xf86OutputPtr output)
1332 ScrnInfoPtr pScrn = output->scrn;
1333 I830OutputPrivatePtr intel_output = output->driver_private;
1340 i830_sdvo_set_active_outputs(output, 0);
1347 i830_sdvo_set_target_output(output, this_output);
1348 i830_sdvo_set_output_timing(output, &dev_priv->save_output_dtd[o]);
1352 i830_sdvo_set_target_input(output, TRUE, FALSE);
1353 i830_sdvo_set_input_timing(output, &dev_priv->save_input_dtd_1);
1356 i830_sdvo_set_target_input(output, FALSE, TRUE);
1357 i830_sdvo_set_input_timing(output, &dev_priv->save_input_dtd_2);
1360 i830_sdvo_set_clock_rate_mult(output, dev_priv->save_sdvo_mult);
1366 i830_sdvo_write_sdvox(output, dev_priv->save_SDVOX);
1372 status = i830_sdvo_get_trained_inputs(output, &input1, &input2);
1375 "First %s output reported failure to sync\n",
1379 i830_sdvo_set_active_outputs(output, dev_priv->save_active_outputs);
1383 i830_sdvo_mode_valid(xf86OutputPtr output, DisplayModePtr pMode)
1385 I830OutputPrivatePtr intel_output = output->driver_private;
1411 i830_sdvo_get_capabilities(xf86OutputPtr output, struct i830_sdvo_caps *caps)
1415 i830_sdvo_write_cmd(output, SDVO_CMD_GET_DEVICE_CAPS, NULL, 0);
1416 status = i830_sdvo_read_response(output, caps, sizeof(*caps));
1427 xf86OutputPtr output = d->pI2CBus->DriverPrivate.ptr;
1428 I830OutputPrivatePtr intel_output = output->driver_private;
1444 xf86OutputPtr output = d->pI2CBus->DriverPrivate.ptr;
1445 I830OutputPrivatePtr intel_output = output->driver_private;
1467 xf86OutputPtr output = b->DriverPrivate.ptr;
1468 I830OutputPrivatePtr intel_output = output->driver_private;
1473 i830_sdvo_set_control_bus_switch(output, dev_priv->ddc_bus);
1483 xf86OutputPtr output = d->pI2CBus->DriverPrivate.ptr;
1484 I830OutputPrivatePtr intel_output = output->driver_private;
1522 i830_sdvo_dump_cmd(xf86OutputPtr output, int opcode)
1526 i830_sdvo_write_cmd(output, opcode, NULL, 0);
1527 i830_sdvo_read_response(output, response, 8);
1531 i830_sdvo_dump_device(xf86OutputPtr output)
1533 I830OutputPrivatePtr intel_output = output->driver_private;
1537 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_DEVICE_CAPS);
1538 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_FIRMWARE_REV);
1539 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_TRAINED_INPUTS);
1540 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_ACTIVE_OUTPUTS);
1541 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_IN_OUT_MAP);
1542 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_ATTACHED_DISPLAYS);
1543 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_HOT_PLUG_SUPPORT);
1544 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_ACTIVE_HOT_PLUG);
1545 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_INTERRUPT_EVENT_SOURCE);
1546 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_INPUT_TIMINGS_PART1);
1547 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_INPUT_TIMINGS_PART2);
1548 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_OUTPUT_TIMINGS_PART1);
1549 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_OUTPUT_TIMINGS_PART2);
1550 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1);
1551 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2);
1552 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE);
1553 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_OUTPUT_PIXEL_CLOCK_RANGE);
1554 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SUPPORTED_CLOCK_RATE_MULTS);
1555 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_CLOCK_RATE_MULT);
1556 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SUPPORTED_TV_FORMATS);
1557 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_TV_FORMAT);
1558 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT);
1559 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT);
1560 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS);
1562 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SUPP_ENCODE);
1563 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_ENCODE);
1564 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_PIXEL_REPLI);
1565 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_COLORIMETRY_CAP);
1566 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_COLORIMETRY);
1567 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_AUDIO_ENCRYPT_PREFER);
1568 i830_sdvo_dump_cmd(output, SDVO_CMD_GET_AUDIO_STAT);
1569 i830_sdvo_dump_hdmi_buf(output);
1580 xf86OutputPtr output = xf86_config->output[i];
1581 I830OutputPrivatePtr intel_output = output->driver_private;
1584 i830_sdvo_dump_device(output);
1589 i830_sdvo_set_hdmi_encode (xf86OutputPtr output)
1592 i830_sdvo_set_encode(output, SDVO_ENCODE_HDMI);
1593 i830_sdvo_set_colorimetry(output, SDVO_COLORIMETRY_RGB256);
1601 i830_sdvo_check_hdmi_encode (xf86OutputPtr output)
1603 I830OutputPrivatePtr intel_output = output->driver_private;
1606 if (i830_sdvo_get_supp_encode(output, &dev_priv->encode) &&
1607 i830_sdvo_get_digital_encoding_mode(output) &&
1610 i830_sdvo_set_hdmi_encode(output);
1616 /* This function will try to fetch native modes for sdvo lvds output*/
1617 static DisplayModePtr i830_sdvo_lvds_fetch_modes(xf86OutputPtr output)
1619 I830OutputPrivatePtr intel_output =output->driver_private;
1621 I830Ptr pI830 = I830PTR(output->scrn);
1629 modes = i830_ddc_get_modes(output);
1634 modes = xf86DuplicateModes(output->scrn, pI830->sdvo_lvds_fixed_mode);
1649 i830_sdvo_output_setup (xf86OutputPtr output, uint16_t flag)
1651 I830OutputPrivatePtr intel_output = output->driver_private;
1672 output->subpixel_order = SubPixelHorizontalRGB;
1675 if (i830_sdvo_check_hdmi_encode (output))
1681 output->subpixel_order = SubPixelHorizontalRGB; /* XXX */
1689 output->subpixel_order = SubPixelHorizontalRGB; /* XXX */
1697 output->subpixel_order = SubPixelHorizontalRGB;
1703 output->subpixel_order = SubPixelHorizontalRGB;
1710 output->subpixel_order = SubPixelHorizontalRGB;
1719 "%s: Unknown SDVO output type (0x%02x%02x)\n",
1730 if (!xf86OutputRename (output, dev_priv->name))
1733 "%s: Failed to rename output to %s\n",
1735 xf86OutputDestroy (output);
1740 if (output->randr_output) {
1742 RROutputPtr randr_output = output->randr_output;
1754 "%s: Failed to update RandR output name to %s\n",
1764 i830_sdvo_multifunc_encoder(xf86OutputPtr output)
1766 I830OutputPrivatePtr intel_output = output->driver_private;
1798 i830_sdvo_detect(xf86OutputPtr output)
1800 I830OutputPrivatePtr intel_output = output->driver_private;
1805 i830_sdvo_write_cmd(output, SDVO_CMD_GET_ATTACHED_DISPLAYS, NULL, 0);
1806 status = i830_sdvo_read_response(output, &response, 2);
1814 if (i830_sdvo_multifunc_encoder(output)) {
1816 if (!i830_sdvo_output_setup(output, response))
1826 edid_mon = xf86OutputGetEDID (output, intel_output->pDDCBus);
1837 i830_sdvo_get_ddc_modes(xf86OutputPtr output)
1839 ScrnInfoPtr pScrn = output->scrn;
1843 I830OutputPrivatePtr intel_output =output->driver_private;
1848 modes = i830_sdvo_lvds_fetch_modes(output);
1850 modes = i830_ddc_get_modes(output);
1860 crt = xf86_config->output[0];
1869 xf86OutputSetEDID(output, edid_mon);
1870 modes = xf86OutputGetEDIDModes(output);
1877 if (!i830_sdvo_check_hdmi_encode(output)) {
1879 if (output->MonInfo && xf86LoaderCheckSymbol("xf86MonitorIsHDMI")
1880 && xf86MonitorIsHDMI(output->MonInfo)) {
1882 i830_sdvo_set_hdmi_encode (output);
1933 i830_sdvo_check_tv_format(xf86OutputPtr output)
1935 I830OutputPrivatePtr intel_output = output->driver_private;
1940 i830_sdvo_write_cmd(output, SDVO_CMD_GET_TV_FORMAT, NULL, 0);
1941 status = i830_sdvo_read_response(output, &format, sizeof(format));
1949 i830_sdvo_get_tv_modes(xf86OutputPtr output)
1951 I830OutputPrivatePtr intel_output = output->driver_private;
1959 i830_sdvo_check_tv_format(output);
1965 i830_sdvo_write_cmd(output, SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT,
1967 status = i830_sdvo_read_response(output, res, sizeof(*res));
1994 i830_sdvo_get_modes(xf86OutputPtr output)
1996 I830OutputPrivatePtr intel_output = output->driver_private;
2000 return i830_sdvo_get_tv_modes(output);
2002 return i830_sdvo_get_ddc_modes(output);
2006 i830_sdvo_destroy (xf86OutputPtr output)
2008 I830OutputPrivatePtr intel_output = output->driver_private;
2019 if (output->randr_output) {
2020 RROutputPtr randr_output = output->randr_output;
2036 i830_sdvo_get_crtc(xf86OutputPtr output)
2038 ScrnInfoPtr pScrn = output->scrn;
2040 I830OutputPrivatePtr intel_output = output->driver_private;
2049 i830_sdvo_create_resources(xf86OutputPtr output)
2051 ScrnInfoPtr pScrn = output->scrn;
2053 I830OutputPrivatePtr intel_output = output->driver_private;
2063 !(strstr(output->name, "TMDS") || strstr(output->name, "HDMI")))
2071 err = RRConfigureOutputProperty(output->randr_output,
2081 err = RRChangeOutputProperty(output->randr_output,
2094 i830_sdvo_set_property(xf86OutputPtr output, Atom property,
2097 ScrnInfoPtr pScrn = output->scrn;
2099 I830OutputPrivatePtr intel_output = output->driver_private;
2127 i830_sdvo_write_sdvox(output, temp);
2165 * SDVO output based on the controlled output.
2273 xf86OutputPtr output;
2284 output = xf86OutputCreate (pScrn, &i830_sdvo_output_funcs,NULL);
2285 if (!output)
2291 xf86OutputDestroy (output);
2294 output->driver_private = intel_output;
2298 output->interlaceAllowed = FALSE;
2299 output->doubleScanAllowed = FALSE;
2315 xf86OutputDestroy (output);
2325 dev_priv->d.DriverPrivate.ptr = output;
2333 xf86OutputDestroy (output);
2341 if (!i830_sdvo_read_byte_quiet(output, i, &ch[i])) {
2345 xf86OutputDestroy (output);
2358 xf86OutputDestroy (output);
2371 ddcbus->DriverPrivate.ptr = output;
2376 xf86OutputDestroy (output);
2384 if (!i830_sdvo_get_capabilities(output, &dev_priv->caps))
2389 xf86OutputDestroy (output);
2393 if (!i830_sdvo_output_setup (output, dev_priv->caps.output_flags))
2397 i830_sdvo_set_target_input(output, TRUE, FALSE);
2399 i830_sdvo_get_input_pixel_clock_range(output, &dev_priv->pixel_clock_min,
2418 xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%s: %s output reported\n", \