# NVidia framebuffer on linux-2.6

## alyent

Поставил новое ядро - все круто, но вот фреймбуффер пропал... Кому-нибудь удалось запустить? Если да, то как?

----------

## Rikz

rivafb вообще-то не должен работать одновременно с nvidia дровами для X-ов. У меня в консоли vesafb а в иксах драйвера от nvidia, такая связка работает. Или драйвера для иксов тебя в принципе не волнуют? :/

----------

## Zoltan

Если я не ошибаюсь, под 2.6 ядром framebuffer пока что глючит безбожно (может, конечно, не для всех видео карт, но для многих), мне matroxfb на 2.6 заставить работать не удалось, на экране начинала твориться всякая фигня, и это еще до запуска иксов.

Насчет rivafb, помоему он всегда конфликтовал с иксами, я всегда для nvidia ставил vesafb на консоль, хотя он и тормозит.

----------

## Unik

а что такое можно сделать в rivafb, чего нельзя в vesafb?   :Very Happy: 

----------

## Rikz

 *Unik wrote:*   

> а что такое можно сделать в rivafb, чего нельзя в vesafb?  

 

На сколько я понимаю, в rivafb можно поставить нормальную частоту.

----------

## ayaromenok

мнда, у меня вообще экрана не видно с vesafb на nv34  :Sad:  Глючит, похоже. по страшному...

----------

## Unik

 *Rikz wrote:*   

>  *Unik wrote:*   а что такое можно сделать в rivafb, чего нельзя в vesafb?   
> 
> На сколько я понимаю, в rivafb можно поставить нормальную частоту.

 

аааа, вот почему я разницы не ощущал - у меня ЛСД  :Smile: 

----------

## svyatogor

Поставь framebuffer VESA и выруби vga 16.

----------

## ayaromenok

>>Поставь framebuffer VESA и выруби vga 16.

я с этого начинал - не работает. может, из-за SMP системы  :Sad: .

ещё раз перепроверю

----------

## Camp

пропатч ядро mm сурсами =)

например начинаю с 2.6.7-mm3 у меня все работает

----------

## mitya-ncc

 *Rikz wrote:*   

>  *Unik wrote:*   а что такое можно сделать в rivafb, чего нельзя в vesafb?   
> 
> На сколько я понимаю, в rivafb можно поставить нормальную частоту.

 

Как нельзя? Можно, если чуть постараться.   :Razz: 

----------

## ssvb

 *mitya-ncc wrote:*   

>  *Rikz wrote:*    *Unik wrote:*   а что такое можно сделать в rivafb, чего нельзя в vesafb?   
> 
> На сколько я понимаю, в rivafb можно поставить нормальную частоту. 
> 
> Как нельзя? Можно, если чуть постараться.  

 

Это точно, например вот так (тайминги вбиты для моего 15-дюймового монитора, работаю в 800x600x100Hz):

```

--- /usr/src/linux/arch/i386/boot/video.S.orig   2003-11-09 13:03:41.000000000 +0200

+++ /usr/src/linux/arch/i386/boot/video.S   2003-11-15 15:33:02.000000000 +0200

@@ -550,6 +550,7 @@

 

    subb   $VIDEO_FIRST_VESA>>8, %bh

    orw   $0x4000, %bx         # Use linear frame buffer

+   call   fix_vbe3_refresh      # Fix refresh rate for VESA 3.0

    movw   $0x4f02, %ax         # VESA BIOS mode set call

    int   $0x10

    cmpw   $0x004f, %ax         # AL=4f if implemented

@@ -1932,3 +1933,80 @@

 adapter:   .byte   0   # Video adapter: 0=CGA/MDA/HGA,1=EGA,2=VGA

 video_segment:   .word   0xb800   # Video memory segment

 force_size:   .word   0   # Use this size instead of the one in BIOS vars

+

+/*

+ * Function that fixes refresh rate for 640x480. 800x600 and 1024x768

+ * video modes for VBE 3.0

+ */

+fix_vbe3_refresh:

+   cmpb      $0x01, %bl

+   jz      fix_vbe3_refresh_640x480

+   cmpb      $0x11, %bl

+   jz      fix_vbe3_refresh_640x480

+   cmpb      $0x12, %bl

+   jz      fix_vbe3_refresh_640x480

+   cmpb      $0x03, %bl

+   jz      fix_vbe3_refresh_800x600

+   cmpb      $0x14, %bl

+   jz      fix_vbe3_refresh_800x600

+   cmpb      $0x15, %bl

+   jz      fix_vbe3_refresh_800x600

+   cmpb      $0x05, %bl

+   jz      fix_vbe3_refresh_1024x768

+   cmpb      $0x17, %bl

+   jz      fix_vbe3_refresh_1024x768

+   cmpb      $0x18, %bl

+   jz      fix_vbe3_refresh_1024x768

+   ret

+fix_vbe3_refresh_640x480:

+   leaw      CRTCInfoBlock_640x480_120Hz, %di

+   orw      $0x800, %bx

+   ret

+fix_vbe3_refresh_800x600:

+   leaw      CRTCInfoBlock_800x600_100Hz, %di

+   orw      $0x800, %bx

+   ret

+fix_vbe3_refresh_1024x768:

+   leaw      CRTCInfoBlock_1024x768_80Hz, %di

+   orw      $0x800, %bx

+   ret

+

+/* 

+ *  Timings for setting refresh of VBE 3.0 video modes are generated

+ *  using VBEHZ program from http://home.nexgo.de/g.s/vbehz.htm

+ */

+CRTCInfoBlock_640x480_120Hz: /* 65kHz monitor required */

+.word   816

+.word   648

+.word   672

+.word   512

+.word   481

+.word   484

+.byte   0

+.long   48956866

+.word   11718

+.space   40

+

+CRTCInfoBlock_800x600_100Hz: /* 70kHz monitor required */

+.word   1072

+.word   832

+.word   936

+.word   636

+.word   601

+.word   604

+.byte   0

+.long   69679142

+.word   10220

+.space   40

+

+CRTCInfoBlock_1024x768_80Hz: /* 70kHz monitor required */

+.word   1392

+.word   1096

+.word   1208

+.word   814

+.word   769

+.word   772

+.byte   0

+.long   90477076

+.word   7985

+.space   40

```

Есть и другие патчи, в которых частоту можно настраивать. Но этот IMHO проще всего в использовании (просто запускаешь patch -p0 < vesafb_refresh.patch из корня файловой системы и пересобираешь ядро)

----------

