Alternando o modo de saída de TV do Radeon 3450 entre componente e svideo

2

Atualização: veja o comentário abaixo, Alternando o modo de saída de TV do Radeon 3450 entre o componente e o svideo

Eu tenho este cartão que funciona no Windows, e no Grub ele tem cor e parece bom, mas no xorg eu fico com o preto e branco dos cabos de componente (RGB). Eu tentei mudar o formato de TV com xrandr, mas nenhuma mudança. Eu posso mudar a res embora.

Eu suspeito que talvez seja no modo composto em vez de no modo de componente. O cartão tem um DVI e um plugue DIN, que se adapta ao svideo ou componente (rgb)

Estas são as saídas de alguns comandos:

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
    
por Hayden Thring 19.09.2018 / 13:32

1 resposta

3

Resposta parcial:

A Radeon pode ter um decodificador interno (parte da GPU) ou externo (chip extra). Eles geralmente têm registros onde você pode definir quais sinais obtêm a saída em qual DAC (conversor digital / analógico). Como os codificadores foram feitos para TVs analógicas, um ajuste usual "composto" (luminância e crominância) em um canal, e "luminância" (Y) e "crominância" (C) em dois outros canais. Dessa forma, você pode conectar cabos SVideo (Y / C) e Composite. A maioria dos codificadores externos também possui uma opção para saída RGB (para a qual você precisaria de um conector SCART na Europa).

Analisando o código-fonte , o o codificador interno ("legado") está configurado para Y no Vermelho, C no Verde e Composto no Azul:

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

Há também algum tipo de autodetecção que pode atribuir sinais de forma diferente.

Então é isso que você vai conseguir com o plugue DIN. O pedido pode estar errado para o seu cartão em particular. E pode ser diferente para chips de codificação externos.

Supondo que você tenha conectado via SVideo (e não via SCART / RGB), se "tiver cor" no grub, significa que o BIOS atribuiu corretamente C e Y aos DACs corretos. O motorista pode atribuir isso de forma diferente por uma variedade de razões, então você pode acabar sem nenhuma crominância (e, portanto, sem cor) assim que o driver estiver ativo.

Não consegui encontrar uma maneira de substituir essa atribuição no código. Se o load detection for um campo de bits e não apenas um booleano, isso pode significar que o resistor de terminação de crominância de cabo SVideo não foi detectado corretamente (mas isso é um palpite).

Portanto, a escolha é (1) alterar o código do driver para permitir a substituição manual da atribuição / habilitação do DAC ou (2) mexer com o cabo, para que você possa obter o sinal de crominância se estiver no DAC errado. ou assim faz a detecção funcionar corretamente.

Nenhum dos dois é fácil.

    
por 19.09.2018 / 14:36