Subversion Repositories Kolibri OS

Rev

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