Debian

在組件和 svideo 之間切換 Radeon 3450 電視輸出模式

  • September 20, 2018

更新:請參閱下面的評論,在組件和 svideo 之間切換 Radeon 3450 電視輸出模式

我有這張在 Windows 中工作的卡,在 Grub 中它有顏色並且看起來很好,但在 xorg 中我只是從組件 (RGB) 電纜中獲得黑白。我試過用 xrandr 改變電視格式,但沒有改變。我可以改變 res。

我懷疑它可能處於復合模式而不是組件模式。該卡有一個 DVI 和一個 DIN 插頭,可適應 svideo 或分量 (rgb)

這些是一些命令的輸出:

lspci:

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV620 LE [Radeon HD 3450] (prog-if 00 [VGA controller])
   Subsystem: Dell OptiPlex 980
   Flags: bus master, fast devsel, latency 0, IRQ 31
   Memory at e0000000 (64-bit, prefetchable) [size=256M]
   Memory at f7d20000 (64-bit, non-prefetchable) [size=64K]
   I/O ports at e000 [size=256]
   Expansion ROM at 000c0000 [disabled] [size=128K]
   Capabilities: [50] Power Management version 3
   Capabilities: [58] Express Legacy Endpoint, MSI 00
   Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
   Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
   Kernel driver in use: radeon
   Kernel modules: radeon

xrandr --verbose:

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
DIN connected primary 1024x768+0+0 (0x55) normal (normal left inverted right x axis y axis) 0mm x 0mm
   Identifier: 0x51
   Timestamp:  29475
   Subpixel:   no subpixels
   Gamma:      1.0:1.0:1.0
   Brightness: 1.0
   Clones:    
   CRTC:       0
   CRTCs:      0 1
   Transform:  1.000000 0.000000 0.000000
               0.000000 1.000000 0.000000
               0.000000 0.000000 1.000000
              filter: 
   _MUTTER_PRESENTATION_OUTPUT: 0 
   tv standard: ntsc 
       supported: ntsc, pal, pal-m, pal-60, ntsc-j, scart-pal, pal-cn, secam
   load detection: 1 
       range: (0, 1)
 1024x768 (0x55) 63.500MHz -HSync +VSync *current
       h: width  1024 start 1072 end 1176 total 1328 skew    0 clock  47.82KHz
       v: height  768 start  771 end  775 total  798           clock  59.92Hz
 800x600 (0x56) 38.250MHz -HSync +VSync
       h: width   800 start  832 end  912 total 1024 skew    0 clock  37.35KHz
       v: height  600 start  603 end  607 total  624           clock  59.86Hz
 848x480 (0x57) 31.500MHz -HSync +VSync
       h: width   848 start  872 end  952 total 1056 skew    0 clock  29.83KHz
       v: height  480 start  483 end  493 total  500           clock  59.66Hz
 720x480 (0x58) 26.750MHz -HSync +VSync
       h: width   720 start  744 end  808 total  896 skew    0 clock  29.85KHz
       v: height  480 start  483 end  493 total  500           clock  59.71Hz
 640x480 (0x59) 23.750MHz -HSync +VSync
       h: width   640 start  664 end  720 total  800 skew    0 clock  29.69KHz
       v: height  480 start  483 end  487 total  500           clock  59.38Hz

部分答案:

Radeon 可以具有內部(GPU 的一部分)或外部(額外晶片)解碼器。它們通常具有寄存器,您可以在其中設置哪些信號在哪個 DAC(數字/模擬轉換器)上輸出。由於編碼器是為模擬電視設計的,通常在一個通道上設置“複合”(亮度和色度),在另外兩個通道上設置“亮度”(Y)和“色度”(C)。這樣,您可以連接 SVideo (Y/C) 和復合電纜。大多數外部編碼器還可以選擇輸出 RGB(在歐洲,您需要一個 SCART 連接器)。

查看原始碼,內部(“傳統”)編碼器設置為紅色上的 Y、綠色上的 C 和藍色上的複合:

WREG32(RADEON_TV_PRE_DAC_MUX_CNTL, (RADEON_Y_RED_EN |
                   RADEON_C_GRN_EN |
                   RADEON_CMP_BLU_EN |
                   RADEON_DAC_DITHER_EN));

還有某種自動檢測可能會以不同的方式分配信號。

這就是你從 DIN 插頭中得到的東西。但是,您的特定卡的順序可能是錯誤的。外部編碼晶片可能會有所不同。

假設您已通過 SVideo(而不是通過 SCART/RGB)連接它,如果它在 grub 中“有顏色”,則意味著 BIOS 已將 C 和 Y 正確分配給正確的 DAC。由於各種原因,驅動程序可能會以不同的方式分配它們,因此一旦驅動程序處於活動狀態,您最終可能根本沒有色度(因此沒有顏色)。

我找不到任何方法來覆蓋程式碼中的這個賦值。如果load detection是一個位域而不僅僅是一個布爾值,這可能意味著您的 SVideo 電纜色度終端電阻未被正確檢測到(但這是一個猜測)。

因此,選擇是(1)更改驅動程式碼以允許手動覆蓋 DAC 分配/啟用,或(2)修補電纜,這樣如果色度信號位於錯誤的 DAC 上,您就可以得到它,或者使檢測工作正常。

這兩者都不容易。

引用自:https://unix.stackexchange.com/questions/469995