Rev 3500 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3500 | Rev 3725 | ||
---|---|---|---|
Line 308... | Line 308... | ||
308 | jmp .not_disabled |
308 | jmp .not_disabled |
309 | .disable_pipes: |
309 | .disable_pipes: |
310 | end if |
310 | end if |
311 | and byte [esi+7000Bh], not 80h ; PIPEACONF: disable pipe |
311 | and byte [esi+7000Bh], not 80h ; PIPEACONF: disable pipe |
312 | and byte [esi+7100Bh], not 80h ; PIPEBCONF: disable pipe |
312 | and byte [esi+7100Bh], not 80h ; PIPEBCONF: disable pipe |
313 | if 1 |
313 | cmp [deviceType], gen4_start |
- | 314 | jb .wait_watching_scanline |
|
- | 315 | ; g45 and later: use special flag from PIPE*CONF |
|
314 | mov edx, 10000h |
316 | mov edx, 10000h |
315 | @@: |
317 | @@: |
316 | mov ecx, 1000h |
318 | mov ecx, 1000h |
317 | loop $ |
319 | loop $ |
318 | test byte [esi+7000Bh], 40h ; PIPEACONF: wait until pipe disabled |
320 | test byte [esi+7000Bh], 40h ; PIPEACONF: wait until pipe disabled |
319 | jz @f |
321 | jz @f |
320 | dec edx |
322 | dec edx |
321 | jnz @b |
323 | jnz @b |
322 | .not_disabled: |
- | |
323 | sti |
- | |
324 | jmp .return |
324 | jmp .not_disabled |
325 | @@: |
325 | @@: |
326 | test byte [esi+7100Bh], 40h ; PIPEBCONF: wait until pipe disabled |
326 | test byte [esi+7100Bh], 40h ; PIPEBCONF: wait until pipe disabled |
327 | jz @f |
327 | jz .disabled |
328 | mov ecx, 1000h |
328 | mov ecx, 1000h |
329 | loop $ |
329 | loop $ |
330 | dec edx |
330 | dec edx |
331 | jnz @b |
331 | jnz @b |
332 | jmp .not_disabled |
332 | jmp .not_disabled |
333 | @@: |
- | |
334 | else |
- | |
335 | ; alternative way of waiting for pipe stop, works too |
333 | ; pineview and before: wait while scanline still changes |
- | 334 | .wait_watching_scanline: |
|
336 | mov edx, 1000h |
335 | mov edx, 1000h |
337 | .dis1: |
336 | .dis1: |
338 | push dword [esi+71000h] |
337 | push dword [esi+71000h] |
339 | push dword [esi+70000h] |
338 | push dword [esi+70000h] |
340 | mov ecx, 10000h |
339 | mov ecx, 10000h |
Line 352... | Line 351... | ||
352 | jnz .dis1 |
351 | jnz .dis1 |
353 | .not_disabled: |
352 | .not_disabled: |
354 | sti |
353 | sti |
355 | jmp .return |
354 | jmp .return |
356 | .disabled: |
355 | .disabled: |
357 | end if |
- | |
358 | lea eax, [esi+61183h] |
356 | lea eax, [esi+61183h] |
359 | cmp [deviceType], ironlake_start |
357 | cmp [deviceType], ironlake_start |
360 | jb @f |
358 | jb @f |
361 | add eax, 0xE0000 - 0x60000 |
359 | add eax, 0xE0000 - 0x60000 |
362 | @@: |
360 | @@: |
Line 376... | Line 374... | ||
376 | mov ecx, [width] |
374 | mov ecx, [width] |
377 | add ecx, 15 |
375 | add ecx, 15 |
378 | and ecx, not 15 |
376 | and ecx, not 15 |
379 | shl ecx, 2 |
377 | shl ecx, 2 |
380 | mov dword [edx+10188h], ecx ; DSPASTRIDE: set scanline length |
378 | mov dword [edx+10188h], ecx ; DSPASTRIDE: set scanline length |
- | 379 | mov dword [edx+10184h], 0 ; DSPALINOFF: force write to DSPA* registers |
|
381 | and byte [esi+61233h], not 80h ; PFIT_CONTROL: disable panel fitting |
380 | and byte [esi+61233h], not 80h ; PFIT_CONTROL: disable panel fitting |
382 | or byte [edx+1000Bh], 80h ; PIPEACONF: enable pipe |
381 | or byte [edx+1000Bh], 80h ; PIPEACONF: enable pipe |
383 | ; and byte [edx+1000Ah], not 0Ch ; PIPEACONF: enable Display+Cursor Planes |
382 | ; and byte [edx+1000Ah], not 0Ch ; PIPEACONF: enable Display+Cursor Planes |
384 | or byte [edx+10183h], 80h ; DSPACNTR: enable Display Plane A |
383 | or byte [edx+10183h], 80h ; DSPACNTR: enable Display Plane A |
385 | sti |
384 | sti |
Line 435... | Line 434... | ||
435 | dw 0x2992 ; i965q (i965g) |
434 | dw 0x2992 ; i965q (i965g) |
436 | dw 0x29a2 ; i965g |
435 | dw 0x29a2 ; i965g |
437 | dw 0x29b2 ; q35g |
436 | dw 0x29b2 ; q35g |
438 | dw 0x29c2 ; g33g |
437 | dw 0x29c2 ; g33g |
439 | dw 0x29d2 ; q33g |
438 | dw 0x29d2 ; q33g |
- | 439 | dw 0xa001 ; pineview |
|
- | 440 | dw 0xa011 ; pineview |
|
- | 441 | gen4_start = ($ - pciids) / 2 |
|
440 | dw 0x2a02 ; i965gm |
442 | dw 0x2a02 ; i965gm |
441 | dw 0x2a12 ; i965gm |
443 | dw 0x2a12 ; i965gm |
442 | dw 0x2a42 ; gm45 |
444 | dw 0x2a42 ; gm45 |
443 | dw 0x2e02 ; g45 |
445 | dw 0x2e02 ; g45 |
444 | dw 0x2e12 ; g45 |
446 | dw 0x2e12 ; g45 |
445 | dw 0x2e22 ; g45 |
447 | dw 0x2e22 ; g45 |
446 | dw 0x2e32 ; g45 |
448 | dw 0x2e32 ; g45 |
447 | dw 0x2e42 ; g45 |
449 | dw 0x2e42 ; g45 |
448 | dw 0x2e92 ; g45 |
450 | dw 0x2e92 ; g45 |
449 | dw 0xa001 ; pineview |
- | |
450 | dw 0xa011 ; pineview |
- | |
451 | ironlake_start = ($ - pciids) / 2 |
451 | ironlake_start = ($ - pciids) / 2 |
452 | dw 0x0042 ; ironlake_d |
452 | dw 0x0042 ; ironlake_d |
453 | dw 0x0046 ; ironlake_m |
453 | dw 0x0046 ; ironlake_m |
454 | dw 0x0102 ; sandybridge_d |
454 | dw 0x0102 ; sandybridge_d |
455 | dw 0x0112 ; sandybridge_d |
455 | dw 0x0112 ; sandybridge_d |