Just for the record - there seems to some feature to power down or up the display audio device (azalia0) to be invoked in the protection fault trap. Connecting a display panel to the external HDMI port seems to help azalia0 through the cold boot. Inspired by off-list and Windows device manager warning for that device.

OpenBSD 5.4-current (GENERIC.MP) #0: Thu Nov 21 18:14:17 CET 2013
[email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 8489422848 (8096MB)
avail mem = 8255299584 (7872MB)
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xeb270 (35 entries)
bios0: vendor American Megatrends Inc. version "4.6.5" date 08/13/2013
bios0: Notebook W740SU
acpi0 at bios0: rev 2
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP APIC FPDT SSDT SSDT SSDT MCFG HPET SSDT SSDT DMAR
acpi0: wakeup devices PXSX(S4) RP01(S4) PXSX(S4) RP02(S4) PXSX(S4) RP03(S4) PXSX(S4) RP04(S4) PXSX(S4) RP05(S4) PXSX(S4) RP06(S4) PXSX(S4) RP07(S4) PXSX(S4) RP08(S4) [...]
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM) i7-4750HQ CPU @ 2.00GHz, 1995.69 MHz
cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,ABM,PERF,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID
cpu0: 256KB 64b/line 8-way L2 cache
cpu0: smt 0, core 0, package 0
cpu0: apic clock running at 99MHz
cpu0: mwait min=64, max=64, C-substates=0.2.1.2.4, IBE
cpu1 at mainbus0: apid 2 (application processor)
cpu1: Intel(R) Core(TM) i7-4750HQ CPU @ 2.00GHz, 1995.38 MHz
cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,ABM,PERF,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID
cpu1: 256KB 64b/line 8-way L2 cache
cpu1: smt 0, core 1, package 0
cpu2 at mainbus0: apid 4 (application processor)
cpu2: Intel(R) Core(TM) i7-4750HQ CPU @ 2.00GHz, 1995.38 MHz
cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,ABM,PERF,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID
cpu2: 256KB 64b/line 8-way L2 cache
cpu2: smt 0, core 2, package 0
cpu3 at mainbus0: apid 6 (application processor)
cpu3: Intel(R) Core(TM) i7-4750HQ CPU @ 2.00GHz, 1995.38 MHz
cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,ABM,PERF,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID
cpu3: 256KB 64b/line 8-way L2 cache
cpu3: smt 0, core 3, package 0
cpu4 at mainbus0: apid 1 (application processor)
cpu4: Intel(R) Core(TM) i7-4750HQ CPU @ 2.00GHz, 1995.38 MHz
cpu4: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,ABM,PERF,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID
cpu4: 256KB 64b/line 8-way L2 cache
cpu4: smt 1, core 0, package 0
cpu5 at mainbus0: apid 3 (application processor)
cpu5: Intel(R) Core(TM) i7-4750HQ CPU @ 2.00GHz, 1995.38 MHz
cpu5: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,ABM,PERF,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID
cpu5: 256KB 64b/line 8-way L2 cache
cpu5: smt 1, core 1, package 0
cpu6 at mainbus0: apid 5 (application processor)
cpu6: Intel(R) Core(TM) i7-4750HQ CPU @ 2.00GHz, 1995.38 MHz
cpu6: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,ABM,PERF,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID
cpu6: 256KB 64b/line 8-way L2 cache
cpu6: smt 1, core 2, package 0
cpu7 at mainbus0: apid 7 (application processor)
cpu7: Intel(R) Core(TM) i7-4750HQ CPU @ 2.00GHz, 1995.38 MHz
cpu7: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,ABM,PERF,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID
cpu7: 256KB 64b/line 8-way L2 cache
cpu7: smt 1, core 3, package 0
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins
acpimcfg0 at acpi0 addr 0xf8000000, bus 0-63
acpihpet0 at acpi0: 14318179 Hz
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus 1 (RP01)
acpiprt2 at acpi0: bus 2 (RP02)
acpiprt3 at acpi0: bus 3 (RP04)
acpiec0 at acpi0
acpicpu0 at acpi0: C1, PSS
acpicpu1 at acpi0: C1, PSS
acpicpu2 at acpi0: C1, PSS
acpicpu3 at acpi0: C1, PSS
acpicpu4 at acpi0: C1, PSS
acpicpu5 at acpi0: C1, PSS
acpicpu6 at acpi0: C1, PSS
acpicpu7 at acpi0: C1, PSS
acpitz0 at acpi0: critical temperature is 120 degC
acpibtn0 at acpi0: PWRB
acpibtn1 at acpi0: SLPB
acpibtn2 at acpi0: LID0
acpiac0 at acpi0: AC unit offline
acpibat0 at acpi0: BAT0 model "BAT" serial 0001 type LION oem "Notebook"
acpivideo0 at acpi0: GFX0
acpivout0 at acpivideo0: LCD0
cpu0: Enhanced SpeedStep 1995 MHz: speeds: 2001, 2000, 1900, 1800, 1700, 1600, 1500, 1400, 1300, 1200, 1100, 1000, 900, 800 MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 vendor "Intel", unknown product 0x0d04 rev 0x08
vga1 at pci0 dev 2 function 0 "Intel Iris Pro Graphics 5200" rev 0x08
intagp0 at vga1
agp0 at intagp0: aperture at 0xe0000000, size 0x10000000
inteldrm0 at vga1
drm0 at inteldrm0
error: [drm:pid0:i915_write32] *ERROR* Unknown unclaimed register before writing to 100000 error: [drm:pid0:intel_dp_set_link_train] *ERROR* Timed out waiting for DP idle patterns error: [drm:pid0:i915_write32] *ERROR* Unknown unclaimed register before writing to 64040
inteldrm0: 1920x1080
wsdisplay0 at vga1 mux 1: console (std, vt100 emulation)
wsdisplay0: screen 1-5 added (std, vt100 emulation)
azalia0 at pci0 dev 3 function 0 "Intel Core 4G HD Audio" rev 0x08: msi
azalia0: No codecs found
"Intel 8 Series xHCI" rev 0x05 at pci0 dev 20 function 0 not configured
"Intel 8 Series MEI" rev 0x04 at pci0 dev 22 function 0 not configured
em0 at pci0 dev 25 function 0 "Intel I217-V" rev 0x05: msi, address 00:90:f5:ec:b4:bc
ehci0 at pci0 dev 26 function 0 "Intel 8 Series USB" rev 0x05: apic 2 int 16
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1
azalia1 at pci0 dev 27 function 0 "Intel 8 Series HD Audio" rev 0x05: msi
azalia1: codecs: VIA/0x8446
audio0 at azalia1
ppb0 at pci0 dev 28 function 0 "Intel 8 Series PCIE" rev 0xd5
pci1 at ppb0 bus 1
ppb1 at pci0 dev 28 function 1 "Intel 8 Series PCIE" rev 0xd5: msi
pci2 at ppb1 bus 2
rtsx0 at pci2 dev 0 function 0 "Realtek RTS5229 Card Reader" rev 0x01: msi
sdmmc0 at rtsx0
ppb2 at pci0 dev 28 function 3 "Intel 8 Series PCIE" rev 0xd5: msi
pci3 at ppb2 bus 3
iwn0 at pci3 dev 0 function 0 "Intel Centrino Advanced-N 6235" rev 0x24: msi, MIMO 2T2R, AGN, address b4:b6:76:94:75:be
ehci1 at pci0 dev 29 function 0 "Intel 8 Series USB" rev 0x05: apic 2 int 23
usb1 at ehci1: USB revision 2.0
uhub1 at usb1 "Intel EHCI root hub" rev 2.00/1.00 addr 1
pcib0 at pci0 dev 31 function 0 "Intel HM87 LPC" rev 0x05
ahci0 at pci0 dev 31 function 2 "Intel 8 Series AHCI" rev 0x05: msi, AHCI 1.3
scsibus0 at ahci0: 32 targets
sd0 at scsibus0 targ 0 lun 0: <ATA, HGST HTS541515A9, KA0O> SCSI3 0/direct fixed naa.5000cca74bc08f9c
sd0: 1430799MB, 512 bytes/sector, 2930277168 sectors
sd1 at scsibus0 targ 1 lun 0: <ATA, Crucial_CT240M50, MU02> SCSI3 0/direct fixed naa.500a0751094539ce
sd1: 228936MB, 512 bytes/sector, 468862128 sectors, thin
ichiic0 at pci0 dev 31 function 3 "Intel 8 Series SMBus" rev 0x05: apic 2 int 18
iic0 at ichiic0
spdmem0 at iic0 addr 0x50: 4GB DDR3 SDRAM PC3-12800 SO-DIMM
spdmem1 at iic0 addr 0x52: 4GB DDR3 SDRAM PC3-12800 SO-DIMM
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
pckbc0: using irq 12 for aux slot
wsmouse0 at pms0 mux 0
pms0: Synaptics clickpad, firmware 8.1
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
uhub2 at uhub0 port 1 "Intel Rate Matching Hub" rev 2.00/0.05 addr 2
uhub3 at uhub1 port 1 "Intel Rate Matching Hub" rev 2.00/0.05 addr 2
ugen0 at uhub3 port 4 "Intel product 0x07da" rev 2.00/78.69 addr 3
uvideo0 at uhub3 port 6 configuration 1 interface 0 "Generic BisonCam, NB Pro" rev 2.00/6.03 addr 4
video0 at uvideo0
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
root on sd1a (8ea3fb2bf1e89f1f.a) swap on sd1b dump on sd1b


Am 17.11.2013 07:00, schrieb Jonathan Gray:
On Sat, Nov 16, 2013 at 02:14:34PM +0100, Dorian Büttner wrote:
Cheers,

On cold boots I'm getting a ddb about azalia stuff, not a kernel
panic but a protection fault trap, which I uploaded as a screenshot
over here: http://s16.postimg.org/xjymk6egl/IMAG0053.jpg
Sorry for that format, it's just hard to capture that as log file if
everything is usb and you don't have appropriate equipment at hand.
The dmesg below however appears as it's more related to the drm. I
can disable azalia in boot -c on cold boot, that would bring up the
system, any warm reboot would just run through with the azalia
enabled.
Apart from that, when I close X the machine seemingly hangs with
black screen and accept no input from keyboard, i.e. I cannot blind
reboot from another VT. There are still some drm errors in the
dmesg, but  the laptop boots with it.
Let me know if any additional input/log is appreciated? Again, I
just can't log to any serial atm.

Thanks and br,
Dorian
This diff with some haswell eDP fixes might help with X.

commits via the ubuntu 3.8 tree included:

bcd20ba343996f631f506c71ced67a1f7947524e
drm/i915: Preserve the DDI_A_4_LANES bit from the bios

a00bee7ac4b8a078b5a1b01199a2928fcd0fd7d2
drm/i915: don't setup hdmi for port D edp in ddi_init

90033bc396620b644b15cceeece19470fd8344bc
drm/i915: rename sdvox_reg to hdmi_reg on HDMI context

7bc9870ca4220c18c854edf8d9ececdd1566efe7
drm/i915: Revert hdmi HDP pin checks

diff --git sys/dev/pci/drm/i915/intel_ddi.c sys/dev/pci/drm/i915/intel_ddi.c
index d60adf2..6e367a4 100644
--- sys/dev/pci/drm/i915/intel_ddi.c
+++ sys/dev/pci/drm/i915/intel_ddi.c
@@ -685,7 +685,7 @@ static void intel_ddi_mode_set(struct drm_encoder *encoder,
                struct intel_digital_port *intel_dig_port =
                        enc_to_dig_port(encoder);
- intel_dp->DP = intel_dig_port->port_reversal |
+               intel_dp->DP = intel_dig_port->saved_port_bits |
                               DDI_BUF_CTL_ENABLE | DDI_BUF_EMP_400MV_0DB_HSW;
                switch (intel_dp->lane_count) {
                case 1:
@@ -1309,7 +1309,8 @@ static void intel_enable_ddi(struct intel_encoder 
*intel_encoder)
                 * enabling the port.
                 */
                I915_WRITE(DDI_BUF_CTL(port),
-                          intel_dig_port->port_reversal | DDI_BUF_CTL_ENABLE);
+                          intel_dig_port->saved_port_bits |
+                          DDI_BUF_CTL_ENABLE);
        } else if (type == INTEL_OUTPUT_EDP) {
                struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
@@ -1492,16 +1493,6 @@ void intel_ddi_init(struct drm_device *dev, enum port port)
                return;
        }
- if (port != PORT_A) {
-               hdmi_connector = malloc(sizeof(struct intel_connector),
-                   M_DRM, M_WAITOK | M_ZERO);
-               if (!hdmi_connector) {
-                       free(dp_connector, M_DRM);
-                       free(intel_dig_port, M_DRM);
-                       return;
-               }
-       }
-
        intel_encoder = &intel_dig_port->base;
        encoder = &intel_encoder->base;
@@ -1516,12 +1507,9 @@ void intel_ddi_init(struct drm_device *dev, enum port port)
        intel_encoder->get_hw_state = intel_ddi_get_hw_state;
intel_dig_port->port = port;
-       intel_dig_port->port_reversal = I915_READ(DDI_BUF_CTL(port)) &
-                                       DDI_BUF_PORT_REVERSAL;
-       if (hdmi_connector)
-               intel_dig_port->hdmi.sdvox_reg = DDI_BUF_CTL(port);
-       else
-               intel_dig_port->hdmi.sdvox_reg = 0;
+       intel_dig_port->saved_port_bits = I915_READ(DDI_BUF_CTL(port)) &
+                                         (DDI_BUF_PORT_REVERSAL |
+                                          DDI_A_4_LANES);
        intel_dig_port->dp.output_reg = DDI_BUF_CTL(port);
intel_encoder->type = INTEL_OUTPUT_UNKNOWN;
@@ -1529,7 +1517,17 @@ void intel_ddi_init(struct drm_device *dev, enum port 
port)
        intel_encoder->cloneable = false;
        intel_encoder->hot_plug = intel_ddi_hot_plug;
- if (hdmi_connector)
-               intel_hdmi_init_connector(intel_dig_port, hdmi_connector);
        intel_dp_init_connector(intel_dig_port, dp_connector);
+
+       if (intel_encoder->type != INTEL_OUTPUT_EDP) {
+               hdmi_connector = malloc(sizeof(struct intel_connector),
+                   M_DRM, M_WAITOK | M_ZERO);
+
+               if (!hdmi_connector) {
+                       return;
+               }
+
+               intel_dig_port->hdmi.hdmi_reg = DDI_BUF_CTL(port);
+               intel_hdmi_init_connector(intel_dig_port, hdmi_connector);
+       }
  }
diff --git sys/dev/pci/drm/i915/intel_drv.h sys/dev/pci/drm/i915/intel_drv.h
index 95d9cba..cc133c1 100644
--- sys/dev/pci/drm/i915/intel_drv.h
+++ sys/dev/pci/drm/i915/intel_drv.h
@@ -302,7 +302,7 @@ struct dip_infoframe {
  } __attribute__((packed));
struct intel_hdmi {
-       u32 sdvox_reg;
+       u32 hdmi_reg;
        int ddc_bus;
        uint32_t color_range;
        bool has_hdmi_sink;
@@ -346,7 +346,7 @@ struct intel_dp {
  struct intel_digital_port {
        struct intel_encoder base;
        enum port port;
-       u32 port_reversal;
+       u32 saved_port_bits;
        struct intel_dp dp;
        struct intel_hdmi hdmi;
  };
@@ -397,7 +397,7 @@ extern void intel_attach_broadcast_rgb_property(struct 
drm_connector *connector)
extern void intel_crt_init(struct drm_device *dev);
  extern void intel_hdmi_init(struct drm_device *dev,
-                           int sdvox_reg, enum port port);
+                           int hdmi_reg, enum port port);
  extern void intel_hdmi_init_connector(struct intel_digital_port 
*intel_dig_port,
                                      struct intel_connector *intel_connector);
  extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder);
diff --git sys/dev/pci/drm/i915/intel_hdmi.c sys/dev/pci/drm/i915/intel_hdmi.c
index d5c4817..613c160 100644
--- sys/dev/pci/drm/i915/intel_hdmi.c
+++ sys/dev/pci/drm/i915/intel_hdmi.c
@@ -48,7 +48,7 @@ assert_hdmi_port_disabled(struct intel_hdmi *intel_hdmi)
enabled_bits = IS_HASWELL(dev) ? DDI_BUF_CTL_ENABLE : SDVO_ENABLE; - WARN(I915_READ(intel_hdmi->sdvox_reg) & enabled_bits,
+       WARN(I915_READ(intel_hdmi->hdmi_reg) & enabled_bits,
             "HDMI port enabled, expecting disabled\n");
  }
@@ -389,7 +389,7 @@ static void g4x_set_infoframes(struct drm_encoder *encoder,
                return;
        }
- switch (intel_hdmi->sdvox_reg) {
+       switch (intel_hdmi->hdmi_reg) {
        case SDVOB:
                port = VIDEO_DIP_PORT_B;
                break;
@@ -445,7 +445,7 @@ static void ibx_set_infoframes(struct drm_encoder *encoder,
                return;
        }
- switch (intel_hdmi->sdvox_reg) {
+       switch (intel_hdmi->hdmi_reg) {
        case HDMIB:
                port = VIDEO_DIP_PORT_B;
                break;
@@ -585,40 +585,40 @@ static void intel_hdmi_mode_set(struct drm_encoder 
*encoder,
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
        struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
-       u32 sdvox;
+       u32 hdmi_val;
- sdvox = SDVO_ENCODING_HDMI;
+       hdmi_val = SDVO_ENCODING_HDMI;
        if (!HAS_PCH_SPLIT(dev))
-               sdvox |= intel_hdmi->color_range;
+               hdmi_val |= intel_hdmi->color_range;
        if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC)
-               sdvox |= SDVO_VSYNC_ACTIVE_HIGH;
+               hdmi_val |= SDVO_VSYNC_ACTIVE_HIGH;
        if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
-               sdvox |= SDVO_HSYNC_ACTIVE_HIGH;
+               hdmi_val |= SDVO_HSYNC_ACTIVE_HIGH;
if (intel_crtc->bpp > 24)
-               sdvox |= COLOR_FORMAT_12bpc;
+               hdmi_val |= COLOR_FORMAT_12bpc;
        else
-               sdvox |= COLOR_FORMAT_8bpc;
+               hdmi_val |= COLOR_FORMAT_8bpc;
/* Required on CPT */
        if (intel_hdmi->has_hdmi_sink && HAS_PCH_CPT(dev))
-               sdvox |= HDMI_MODE_SELECT;
+               hdmi_val |= HDMI_MODE_SELECT;
if (intel_hdmi->has_audio) {
                DRM_DEBUG_DRIVER("Enabling HDMI audio on pipe %c\n",
                                 pipe_name(intel_crtc->pipe));
-               sdvox |= SDVO_AUDIO_ENABLE;
-               sdvox |= SDVO_NULL_PACKETS_DURING_VSYNC;
+               hdmi_val |= SDVO_AUDIO_ENABLE;
+               hdmi_val |= SDVO_NULL_PACKETS_DURING_VSYNC;
                intel_write_eld(encoder, adjusted_mode);
        }
if (HAS_PCH_CPT(dev))
-               sdvox |= PORT_TRANS_SEL_CPT(intel_crtc->pipe);
+               hdmi_val |= PORT_TRANS_SEL_CPT(intel_crtc->pipe);
        else if (intel_crtc->pipe == PIPE_B)
-               sdvox |= SDVO_PIPE_B_SELECT;
+               hdmi_val |= SDVO_PIPE_B_SELECT;
- I915_WRITE(intel_hdmi->sdvox_reg, sdvox);
-       POSTING_READ(intel_hdmi->sdvox_reg);
+       I915_WRITE(intel_hdmi->hdmi_reg, hdmi_val);
+       POSTING_READ(intel_hdmi->hdmi_reg);
intel_hdmi->set_infoframes(encoder, adjusted_mode);
  }
@@ -631,7 +631,7 @@ static bool intel_hdmi_get_hw_state(struct intel_encoder 
*encoder,
        struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
        u32 tmp;
- tmp = I915_READ(intel_hdmi->sdvox_reg);
+       tmp = I915_READ(intel_hdmi->hdmi_reg);
if (!(tmp & SDVO_ENABLE))
                return false;
@@ -655,7 +655,7 @@ static void intel_enable_hdmi(struct intel_encoder *encoder)
        if (intel_hdmi->has_audio)
                enable_bits |= SDVO_AUDIO_ENABLE;
- temp = I915_READ(intel_hdmi->sdvox_reg);
+       temp = I915_READ(intel_hdmi->hdmi_reg);
/* HW workaround for IBX, we need to move the port to transcoder A
         * before disabling it. */
@@ -672,21 +672,21 @@ static void intel_enable_hdmi(struct intel_encoder 
*encoder)
         * we do this anyway which shows more stable in testing.
         */
        if (HAS_PCH_SPLIT(dev)) {
-               I915_WRITE(intel_hdmi->sdvox_reg, temp & ~SDVO_ENABLE);
-               POSTING_READ(intel_hdmi->sdvox_reg);
+               I915_WRITE(intel_hdmi->hdmi_reg, temp & ~SDVO_ENABLE);
+               POSTING_READ(intel_hdmi->hdmi_reg);
        }
temp |= enable_bits; - I915_WRITE(intel_hdmi->sdvox_reg, temp);
-       POSTING_READ(intel_hdmi->sdvox_reg);
+       I915_WRITE(intel_hdmi->hdmi_reg, temp);
+       POSTING_READ(intel_hdmi->hdmi_reg);
/* HW workaround, need to write this twice for issue that may result
         * in first write getting masked.
         */
        if (HAS_PCH_SPLIT(dev)) {
-               I915_WRITE(intel_hdmi->sdvox_reg, temp);
-               POSTING_READ(intel_hdmi->sdvox_reg);
+               I915_WRITE(intel_hdmi->hdmi_reg, temp);
+               POSTING_READ(intel_hdmi->hdmi_reg);
        }
  }
@@ -698,7 +698,7 @@ static void intel_disable_hdmi(struct intel_encoder *encoder)
        u32 temp;
        u32 enable_bits = SDVO_ENABLE | SDVO_AUDIO_ENABLE;
- temp = I915_READ(intel_hdmi->sdvox_reg);
+       temp = I915_READ(intel_hdmi->hdmi_reg);
/* HW workaround for IBX, we need to move the port to transcoder A
         * before disabling it. */
@@ -708,12 +708,12 @@ static void intel_disable_hdmi(struct intel_encoder 
*encoder)
if (temp & SDVO_PIPE_B_SELECT) {
                        temp &= ~SDVO_PIPE_B_SELECT;
-                       I915_WRITE(intel_hdmi->sdvox_reg, temp);
-                       POSTING_READ(intel_hdmi->sdvox_reg);
+                       I915_WRITE(intel_hdmi->hdmi_reg, temp);
+                       POSTING_READ(intel_hdmi->hdmi_reg);
/* Again we need to write this twice. */
-                       I915_WRITE(intel_hdmi->sdvox_reg, temp);
-                       POSTING_READ(intel_hdmi->sdvox_reg);
+                       I915_WRITE(intel_hdmi->hdmi_reg, temp);
+                       POSTING_READ(intel_hdmi->hdmi_reg);
/* Transcoder selection bits only update
                         * effectively on vblank. */
@@ -728,21 +728,21 @@ static void intel_disable_hdmi(struct intel_encoder 
*encoder)
         * we do this anyway which shows more stable in testing.
         */
        if (HAS_PCH_SPLIT(dev)) {
-               I915_WRITE(intel_hdmi->sdvox_reg, temp & ~SDVO_ENABLE);
-               POSTING_READ(intel_hdmi->sdvox_reg);
+               I915_WRITE(intel_hdmi->hdmi_reg, temp & ~SDVO_ENABLE);
+               POSTING_READ(intel_hdmi->hdmi_reg);
        }
temp &= ~enable_bits; - I915_WRITE(intel_hdmi->sdvox_reg, temp);
-       POSTING_READ(intel_hdmi->sdvox_reg);
+       I915_WRITE(intel_hdmi->hdmi_reg, temp);
+       POSTING_READ(intel_hdmi->hdmi_reg);
/* HW workaround, need to write this twice for issue that may result
         * in first write getting masked.
         */
        if (HAS_PCH_SPLIT(dev)) {
-               I915_WRITE(intel_hdmi->sdvox_reg, temp);
-               POSTING_READ(intel_hdmi->sdvox_reg);
+               I915_WRITE(intel_hdmi->hdmi_reg, temp);
+               POSTING_READ(intel_hdmi->hdmi_reg);
        }
  }
@@ -767,27 +767,6 @@ bool intel_hdmi_mode_fixup(struct drm_encoder *encoder,
        return true;
  }
-static bool g4x_hdmi_connected(struct intel_hdmi *intel_hdmi)
-{
-       struct drm_device *dev = intel_hdmi_to_dev(intel_hdmi);
-       struct drm_i915_private *dev_priv = dev->dev_private;
-       uint32_t bit;
-
-       switch (intel_hdmi->sdvox_reg) {
-       case SDVOB:
-               bit = HDMIB_HOTPLUG_LIVE_STATUS;
-               break;
-       case SDVOC:
-               bit = HDMIC_HOTPLUG_LIVE_STATUS;
-               break;
-       default:
-               bit = 0;
-               break;
-       }
-
-       return I915_READ(PORT_HOTPLUG_STAT) & bit;
-}
-
  static enum drm_connector_status
  intel_hdmi_detect(struct drm_connector *connector, bool force)
  {
@@ -799,9 +778,6 @@ intel_hdmi_detect(struct drm_connector *connector, bool 
force)
        struct edid *edid;
        enum drm_connector_status status = connector_status_disconnected;
- if (IS_G4X(connector->dev) && !g4x_hdmi_connected(intel_hdmi))
-               return status;
-
        intel_hdmi->has_hdmi_sink = false;
        intel_hdmi->has_audio = false;
        edid = drm_get_edid(connector,
@@ -1035,7 +1011,7 @@ void intel_hdmi_init_connector(struct intel_digital_port 
*intel_dig_port,
        }
  }
-void intel_hdmi_init(struct drm_device *dev, int sdvox_reg, enum port port)
+void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port)
  {
        struct intel_digital_port *intel_dig_port;
        struct intel_encoder *intel_encoder;
@@ -1070,7 +1046,7 @@ void intel_hdmi_init(struct drm_device *dev, int 
sdvox_reg, enum port port)
        intel_encoder->cloneable = false;
intel_dig_port->port = port;
-       intel_dig_port->hdmi.sdvox_reg = sdvox_reg;
+       intel_dig_port->hdmi.hdmi_reg = hdmi_reg;
        intel_dig_port->dp.output_reg = 0;
intel_hdmi_init_connector(intel_dig_port, intel_connector);

Reply via email to