Jump to content

ATI His Radeon HD 6850 en Mountain Lion


3 posts in this topic

Recommended Posts

Hola:


 


Existen muy buenos post (en inglés) donde se puede aprender como lograr que las Ati 6850 (y/o similares) funcionen perfectamente.


El problema surge si nuestro dominio del idioma inglés es muy limitado y el "Traductor Google" ya no da mas de si.  


Incluso existe un excelente post en español donde se comenzó a tratar el tema pero por desgracia quedó abandonado.


 


No tengo estudios ni preparación adecuada de informática por eso adelanto que este post solo será un "breve relato" de como lo conseguí.


Con esto quiero decir que no estoy en condiciones para solventar dudas sin embargo quiero que mi experiencia sirva como punto de partida a otros.


Ademas siempre existirá la posibilidad de que alguien mas instruido pueda ayudar en caso de dudas.


 


Para acometer esta tarea me he basado en los siguientes aportes:


 http://www.insanelymac.com/forum/topic/273937-guide-getting-xfx-hd6850-connectors-to-work/ 


 http://www.insanelymac.com/forum/topic/278122-guia-instalacion-de-ati-radeon-6850-en-lion/


 http://www.insanelymac.com/forum/topic/287995-how-to-launch-ati-card-by-dsdt/


 


y en particular debo agradecer a Juanerson que en este post http://www.insanelymac.com/forum/topic/289066-dsdt-msi-z68ma-ed55-b3/  y en muchísimos otros, no ha dejado de compartir sus conocimientos en favor de "des-asnarme" y ayudarme a resolver mis dudas.


 


MATERIALES:


 


Radeon_bios_decode, Redsock_bios_decoder, Ati-personality.pl-0.11, HexEdit, la bios de la gráfica (se obtiene con GPUz desde windows) y ademas es necesario tener instalado Xcode.


He descomprimido todo en el escritorio para facilitar la tarea.


 


 


DECODIFICANDO:


 


Abrir el terminal, arrastrar y soltar radeon_bios_decode escribir símbolo >  y arrastrar y soltar Barts.rom (la bios de la gráfica).


Pido disculpas si mis indicaciones resultan tediosas o demasiado obvias pero esto está pensado para gente como yo que necesita todo indicado al mas mínimo detalle.


 


Lo mismo con redsock_bios_decoder.


 


Los resultados:


guzmans-imac:~ uzmi$ /Users/uzmi/Desktop/radeon_bios_decode < /Users/uzmi/Desktop/Barts.rom 


ATOM BIOS Rom: 


SubsystemVendorID: 0x1787 SubsystemID: 0x200f


IOBaseAddress: 0x0000


Filename: HIS_barts_pr


BIOS Bootup Message: 


BARTS PRO PCIE 1GB/256B GDDR5 DVI-I/DVI-D/HDMI/DP 775E/1000M               


PCI ID: 1002:6739


Connector at index 0


Type [@offset 44254]: DisplayPort (10)


Encoder [@offset 44258]: INTERNAL_UNIPHY2 (0x21)


i2cid [@offset 44364]: 0x90, OSX senseid: 0x1


Connector at index 1


Type [@offset 44264]: HDMI-A (11)


Encoder [@offset 44268]: INTERNAL_UNIPHY2 (0x21)


i2cid [@offset 44391]: 0x93, OSX senseid: 0x4


Connector at index 2


Type [@offset 44274]: DVI-I (2)


Encoder [@offset 44278]: INTERNAL_UNIPHY (0x1e)  


i2cid [@offset 44428]: 0x94, OSX senseid: 0x5


Connector at index 3


Type [@offset 44284]: DVI-I (2)


Encoder [@offset 44288]: INTERNAL_KLDSCP_DAC1 (0x15)   Aporta señal analógica. Como DVI-I aporta la salida VGA (con adaptador)  y tenemos 4 conectores y no 5, lo desechamos (el SenseID es igual al de DVI-I)


i2cid [@offset 44428]: 0x94, OSX senseid: 0x5


Connector at index 4


Type [@offset 44294]: DVI-D (3)


Encoder [@offset 44298]: INTERNAL_UNIPHY1 (0x20)


i2cid [@offset 44455]: 0x95, OSX senseid: 0x6


 


 


guzmans-imac:~ uzmi$ /Users/uzmi/Desktop/redsock_bios_decoder < /Users/uzmi/Desktop/Barts.rom  


HIS_barts_pr:


 


BARTS PRO PCIE 1GB/256B GDDR5 DVI-I/DVI-D/HDMI/DP 775E/1000M               


Subsystem Vendor ID: 1787


       Subsystem ID: 200f


Object Header Structure Size: 355


Connector Object Table Offset: 48


Router Object Table Offset: 0


Encoder Object Table Offset: fd


Display Path Table Offset: 12


Connector Object Id [19] which is [DISPLAY_PORT]


encoder obj id [0x21] which is [iNTERNAL_UNIPHY2 (osx txmit 0x12 [duallink 0x2] enc 0x4)] linkb: false


Connector Object Id [12] which is [HDMI_TYPE_A]


encoder obj id [0x21] which is [iNTERNAL_UNIPHY2 (osx txmit 0x22 [duallink 0x2] enc 0x5)] linkb: true


Connector Object Id [2] which is [DVI_I]


encoder obj id [0x1e] which is [iNTERNAL_UNIPHY (osx txmit 0x10 [duallink 0x0] enc 0x0)] linkb: false


Connector Object Id [2] which is [DVI_I]


encoder obj id [0x15] which is [iNTERNAL_KLDSCP_DAC1 (osx txmit 0x00 enc 0x10?)] linkb: false   


Connector Object Id [3] which is [DVI_D]


encoder obj id [0x20] which is [iNTERNAL_UNIPHY1 (osx txmit 0x11 [duallink 0x1] enc 0x2)] linkb: false  

 


 


Los mismos datos pero mejor ordenados:


 


radeon_bios_decode


             


PCI ID: 1002:6739


 


Connector at index 0      DisplayPort (10)         Encoder : INTERNAL_UNIPHY2 (0x21)                 OSX senseid: 0x1


Connector at index 1      HDMI-A (11)              Encoder : INTERNAL_UNIPHY2 (0x21)                 OSX senseid: 0x4


Connector at index 2      DVI-I (2)                    Encoder : INTERNAL_UNIPHY (0x1e)                   OSX senseid: 0x5


Connector at index 4      DVI-D (3)                   Encoder : INTERNAL_UNIPHY1 (0x20)                 OSX senseid: 0x6


 


redsock_bios_decoder


 


Connector Object Id [19]   [DISPLAY_PORT]       encoder obj id [0x21]   INTERNAL_UNIPHY2     osx txmit 0x12 [duallink 0x2]  enc 0x4     


Connector Object Id [12]   [HDMI_TYPE_A]        encoder obj id [0x21]   INTERNAL_UNIPHY2     osx txmit 0x22 [duallink 0x2]  enc 0x5 


Connector Object Id [2]     [DVI_I]                     encoder obj id [0x1e]   INTERNAL_UNIPHY       osx txmit 0x10 [duallink 0x0]  enc 0x0 


Connector Object Id [3]     [DVI_D]                    encoder obj id [0x20]   INTERNAL_UNIPHY1     osx txmit 0x11  [duallink 0x1]  enc 0x2 

 


 


 


USANDO EL SCRIPT:   Valores del kext


 


Usar script ati-personality-pl. no funciona si no está instalado Xcode. (Arrastrar el script directamente en el terminal y dar enter)


 


f6wn.jpg


 


Se obtienen todas las personalidades de los diferentes kexts. En este caso solo interesan las correspondientes a Ati6000Controller.kext y en especial la de Duckweed.


 


Personality: Duckweed


ConnectorInfo count in decimal: 4


Disk offset in decimal 605008


0000000    00  04  00  00  04  03  00  00  00  01  00  00  12  04  04  01                  Puerto 0  


0000010    00  04  00  00  04  03  00  00  00  01  00  00  22  05  05  02                  Puerto 1


0000020    00  08  00  00  04  02  00  00  00  01  00  00  11  02  03  04                  Puerto 2


0000030    00  02  00  00  14  02  00  00  00  01  00  00  00  00  06  05                  Puerto 3


0000040                                                                                                                                     Cada linea corresponde a un conector. Dividir las parejas de números en 4 -4 -2 -2 -1-1-1-1 


 


 


00  04  00  00  04  03  00  00  00  01  00  00  12  04  04  01     Puerto 0


 


Puerto 0                                                                                                     Puerto 1                         Puerto 2                     Puerto 3


 


00 04 00 00          corresponde a  Connector Type                                    00 04 00 00                   00 08 00 00               00 02 00 00


04 03 00 00          corresponde a  Aty Control Flag                                   04 03 00 00                   04 02 00 00               14 02 00 00  (5)


00 01                    corresponde a  Features                                              00 01                             00 01                         00 01


00 00                    corresponde a  Desconocido (dejar tal cual)                  00 00                             00 00                         00 00


12                         corresponde a  Transmitter                                          22                                 11                               00


04                         corresponde a   Encoder                                              05                                  02                              00


04                         corresponde a   HotPlugID                                           05                                  03                              06


01                         corresponde a   SenseID                                              02                                  04                              05 

 


 


Esto es lo que el kext Ati6000Controller tiene, ahora toca comparar con los datos obtenidos arriba y si corresponde modificar.


 


 


USANDO LA CABEZA: Buscar valores de la gráfica, comparar y modificar 


 


El forero mucha hizo una tabla que también nos ayudará y nos permitirá orientarnos mejor.


 


-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*


1- CONNECTOR TYPE:


 


CONNECTORT YPE_LVDS      0x00000002 //Pantalla portatil


CONNECTORT YPE_DVIDL    0x00000004 //Dual Link


CONNECTOR TYPE_VGA        0x00000010


CONNECTOR TYPE_S-V         0x00000080


CONNECTOR TYPE_DP          0x00000400


CONNECTOR TYPE_HDMI     0x00000800


CONNECTOR TYPE_DVISL    0x00000004 //Single Link


 


2- ATY, CONTROL FLAG:                                                                           


 


              0x0002 : LVDS         > ControlFlag : 0x0040 / 0x0100


              0x0004 : DVI-SL?     > ControlFlag : 0x0016 - 0x0014 / 0x214


              0x0010 : VGA           > ControlFlag : 0x0010


              0x0080 : S-Video      > ControlFlag : 0x0002


              0x0200 : DVI-?         > ControlFlag : 0x0014 / 0x0214 - 0x0204


              0x0400 : DisplayPort > ControlFlag : 0x0100 - 0x0104 - 0x0304 / 0x0604 - 0x0400


              0x0800 : HDMI         > ControlFlag : 0x0200


              0x1000 : DVI-?         > ControlFlag : 0x0016


 


3-FEATURES:


 


FEATURE_USE_INTERNAL              0x01


FEATURE_USE_RGB_ON_YUV        0x04


FEATURE_USE_BACKLIGHT           0x08


FEATURE_BACKLIGHT_INVERTED  0x10


FEATURE_USE_CLAMSHELL          0x20       Por ejemplo para pantalla LVDS será 0x09 = 0x01 + 0x08 (Internal + Backlight)


 


0x0002 : LVDS          >  Features  :  0x09


0x0004 : DVI-?          >  Features  :  0x00


0x0010 : VGA            >  Features  :  0x00


0x0080 : S-Video       >  Features  :  0x04


0x0200 : DVI-?          >  Features  :  0x00


0x0400 : DisplayPort  >  Features  :  0x00


0x0800 : HDMI          >  Features  :  0x00


0x1000 : DVI-?          >  Features  :  0x00


 


4- DESCONOCIDO:  Dejar tal cual


 


5- TRANSMITTER:


 


Del 0 al 3


UNIPHY     0x00


UNIPHY1   0x01


UNIPHY2   0x02


 


Del 4 al 7 (LinkID) 


DUAL-LINK   0x00 // LINKA + LINKB


LINKA            0x10


LINKB            0x20


 


  UNIPHYA     0x10 // = UNIPHY:LINKA


  UNIPHYB     0x20 // = UNIPHY:LINKB


  UNIPHYAB   0x00 // = UNIPHY:DUALLINK


  UNIPHYC     0x11 // = UNIPHY1:LINKA


  UNIPHYD     0x21 // = UNIPHY1:LINKB


  UNIPHYCD   0x01 // = UNIPHY1:DUALLINK


  UNIPHYE     0x12 // = UNIPHY2:LINKA


  UNIPHYF     0x22 // = UNIPHY2:LINKB


  UNIPHYEF   0x02 // = UNIPHY2:DUAL LINK


  DACA          0x00


  DACB          0x10


 


 


6- ENCODER:


                            Lo sacamos del resulatado obtenido con redsock_bios_decoder de mas arriba.


  Del 0 al 3 (DIG_ID : Digital) 


  DIG1   0x00 // = DIGA


  DIG2   0x01 // = DIGB


  DIG3   0x02 // = DIGC   Solo para Radeon HD series 5xxx o superiores


  DIG4   0x03 // = DIGD   Solo para Radeon HD series 5xxx o superiores


  DIG5   0x04 // = DIGE   Solo para Radeon HD series 5xxx o superiores


  DIG6   0x05 // = DIGF   Solo para Radeon HD series 5xxx o superiores


 


  Del 4 al 7 (DAC_ID : Analog) 


  DAC   0x10


 


7- HOTPLUG ID:


                      Es un identificador único para cada puerto, probé con 0 para PUERT0, 1 para el puerto 1 y 2 para puerto2 y funcionó (Nota del autor)


 


8- SENSE ID:


                     Se obtiene también con redsock_bios_decoder 


 


*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

 


 


   Port      Connector                        ConnectorType                Aty Control Flag   Features  Unknown  Transmitter   Encoder  HotPlugID   SenseID



      


0000000    DP                                      00 04 00 00                   04 03 00 00     00 01          00 00             12                04            04                 01          Según Ati6000Controller


0000000    DP               0x00000400= 00 04 00 00      0x304=04 03 00 00     00 01 (1)     00 00             12 (2)          04 (3)       04                 01(4)     No hay que modificar (sin probar)  


 


0000010    DVI-I  DL                           00 04 00 00                  04 03 00 00      00 01          00 00             22               05             05                 02          Segun Aty Controller


0000010    DVI-I  DL    0x00000004=04 00 00 00     0x0014=14 00 00 00      00 01          00 00             10               00             05                 05          Resultado final 


 


0000020    HDMI                                 00 08 00 00                   04 02 00 00      00 01          00 00             11               02             03                 04          Según Ati6000Controller 


0000020    HDMI           0x00000800=00 08 00 00    0x0200= 00 02 00 00      00 01          00 00             22               05             03                 04          Primer intento  (5) 


0000020    HDMI           0x00000800=00 08 00 00    0x0204= 04 02 00 00      00 01          00 00             22               05             03                 04          Resultado final  


   


0000030    DVI_D DL                          00 02 00 00                   14 02 00 00      00 01          00 00             00               00             06                 05          Según Ati6000Controller


0000030    DVI_D DL    0x00000004=04 00 00 00     0x0214=14 02 00 00      00 01          00 00             11               02             06                 06          Primer intento (6)


0000030    DVI_D DL    0x00000004=04 00 00 00     0x0014=14 00 00 00      00 01          00 00             11               02             06                 06          Resultado final   


 


Tener presente que por ejemplo 0x00000400=00 04 00 00 (se invierten de a dos). Los colores son solo para explicar excepto los rojos que son modificaciones.


 


El resultado es este:


 


0000000      00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01


0000010      04 00 00 00 14 00 00 00 00 01 00 00 10 00 05 05       


0000020      00 08 00 00 04 02 00 00 00 01 00 00 22 05 03 04   


0000030      04 00 00 00 14 00 00 00 00 01 00 00 11 02 06 06    


 


 


 


 (1) Info mucha FEATURES: FEATURE_USE_INTERNAL   0x01 (01)  0x0400 : DisplayPort  >  Features  :  0x00 (00)


 


 (2) Info redsock_bios_decoder  :  [DISPLAY_PORT]    [iNTERNAL_UNIPHY2      (osx txmit 0x12 [duallink 0x2]  enc 0x4)] 


 


(3) Info redsock_bios_decoder :  [DISPLAY_PORT]   [iNTERNAL_UNIPHY2      (osx txmit 0x12 [duallink 0x2]  enc 0x4 (04))]


 


 (4) Info radeon_bios_decode    :  DisplayPort (10)        INTERNAL_UNIPHY2 (0x21)     OSX senseid: 0x1 (01)


 


(5) Según los datos de mucha el  Aty ControlFlag del HDMI debería ser 0x200 (00 02 00 00) pero no quiso funcionar me decanté por dejar el original 0x0204 (04 02 00 00) y probar


 


(6) Igual que el caso anterior, debería ser ControlFlag : 0x0016 o 0x0014 o 0x214, probé con 0x 214 pero no lo aceptó y opté por elegir 0x0014 que es el mismo que usé para el DVI-I (ambos DVI-I y-D son dual link)


 


Mantengo los mismos HotPlugID


 


 


MODIFICAR ATI6000CONTROLLER.KEXT



 


Copiar Ati6000Controller.kext al escritorio


Abrir HexEdit, ir a Ati6000Controller.kext--> Contents-->MacOS-->AMD6000Controller


 


i5dv.jpg


 


HexEdit-->Find--> Find & Replace


 


 


Find --> Cifra de Conector X obtenida de  Ati6000Controller.kext


Replace with --> Cifra de Conector X  modificada por nosotros.


 


qbrz.jpg


 


0000000    00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01                    


0000010    00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02                  


0000020    00 08 00 00 04 02 00 00 00 01 00 00 11 02 03 04                  


0000030    00 02 00 00 14 02 00 00 00 01 00 00 00 00 06 05 


 


0000000    00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01


0000010    04 00 00 00 14 00 00 00 00 01 00 00 10 00 05 05       


0000020    00 08 00 00 04 02 00 00 00 01 00 00 22 05 03 04   


0000030    04 00 00 00 14 00 00 00 00 01 00 00 11 02 06 06


 


 


Salvar, instalar el kext modificado, reparar permisos, reconstruir cache y probar.


 


d92l.jpg


 


 


 


Iniciar Mountain Lion con Chameleon y o.c.b.p. con GraphicsEnabler --> No 


 


 


DSDT:


 


Por último queda retocar el DSDT.


Tomé el código que Hard233 hizo para Miliuco para basarme en él y hacer las modificaciones pertinentes. (gracias Juanerson)


Dejo mi dsdt en la carpeta Materiales para que puedan comparar.


 


Y como dicen los dibujos animados:


Eso es todo amigos


 


 


Materiales.zip

  • Like 5
Link to comment
Share on other sites

  • 5 months later...

Excelente texto, Uzmi, perdón por no leerte antes, voy a probar con tu IC (información de conectores) ya que es diferente a las 2 cadenas que he utilizado yo del usuario shiecldk, la tuya la pongo aquí junto a las otras 2 y se ven claramente las diferencias (en rojo negrita las parejas de shiecldk que son diferentes a las tuyas):

 

Uzmi

 

00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01
04 00 00 00 14 00 00 00 00 01 00 00 10 00 05 05       
00 08 00 00 04 02 00 00 00 01 00 00 22 05 03 04   
04 00 00 00 14 00 00 00 00 01 00 00 11 02 06 06
 
shiecldk (2 IC diferentes)
 
00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01
00 08 00 00 04 02 00 00 00 01 00 00 22 05 03 04
04 00 00 00 14 02 00 00 00 01 00 00 10 00 06 05
00 02 00 00 14 02 00 00 00 01 00 00 11 02 05 06
 
00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01
00 08 00 00 04 02 00 00 00 01 00 00 22 05 05 04
04 00 00 00 14 02 00 00 00 01 00 00 00 00 03 05
00 02 00 00 04 02 00 00 00 01 00 00 11 02 06 06
 

Repito: formidable trabajo, pruebo tus cadenas y comento los resultados, mi gráfica es ASUS EAH6850 1gb.

  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...