Contribute
Register

<< Solved >> AMD WX4170 dGPU on ZBook G5 17 Laptop

Status
Not open for further replies.
I compared command table MemoryControllerInit (Vaughn and Crane)
And noticed, registers are same, while whole offset structure is different, so i think the reason of replaced modules wont work is difference in registers addresses.
firefox_6GQcd94or0.png


Dell (right), Vaguhn (Left)
Only difference is "OR" with
insert 40000800 to register 09d5


EnableGraphSurfaces
EnableGraphSurfaces.png


FirmwareInfo
firmware.png

And this one is only difference in all VramInfo related modules.
I compared this modules:
(MemoryControllerInit) [diff=insert [B]40000800 to register 09d5]
(VRAM_BlockDetectionByStrap)
(DynamicMemorySettings)
(VRAM_GetCurrentInfoBlock)
(TMDSAEncoderControl)
(LVDSEncoderControl)
[/B]
The question: why replacing of VramInfo will fail gpu to enable acceleration? So, one of the modules have some extra hidden offset for check or data module itself using some instructions to commands. I dont know how to read data module
 
Last edited:
The question: why replacing of VramInfo will fail gpu to enable acceleration? So, one of the modules have some extra hidden offset for check or data module itself using some instructions to commands.
I believe in one of the asic modules there's a data table that has different data for all roms. I don't remember the name and I'm not in front of my computer but will get you the name tonight.
The command module I speak of is only a data table, no commands and doesn't decompile. So it could be here.
 
I believe in one of the asic modules there's a data table that has different data for all roms. I don't remember the name and I'm not in front of my computer but will get you the name tonight.
The command module I speak of is only a data table, no commands and doesn't decompile. So it could be here.
I found app, possibly it can export modules with few clicks (commands only)

Require Java 8 Developer Launcher


Today will try export 555, 560X vbioses
 

Attachments

  • jYABE0.01.5-byVento.zip
    163 KB · Views: 42
Closed as new edit arrived:
Will leave here for a future research

THIS MODULES ARE UNIQUE AND DIFFERENT (VAUGHN + PEGATRON + DELL CRANE 4150(V+P is similar, while dell is different and are unique) . So they keep the answer.


LATER WILL ADD APPLE ONE-TWO


EnableGraphSurfaces_cmd
UpdateCRTC_DoubleBufferRegisters_cmd
LUT_AutoFill_cmd
FirmwareInfo_dat
PowerPlayInfo_dat
Object_Info / bject_Header_dat
TV_VideoMode_DispOutInfo_dat
MemoryCleanUp_cmd
MemoryTraining_cmd
VRAM_Info_dat
MemoryTrainingInfo_ASIC_MVDDQ_Info_dat
MemoryControllerInit_cmd
MC_InitParameter_AdjustARB_SEQ_dat





Trying to analyze how driver reads TV_VideoMode/DispOutInfo module_but no luck
ATOM_COMMON_TABLE_HEADER sHeader
5700
0203
PEGATRON CRANE
///backup 14000000422D00007005020 140000004A2D00007005020





1400 ptrTransmitterInfo
0000 ptrEncoderInfo
422D ptrMainCallParserFar; // direct address of main parser call in VBIOS binary.
00 usReserved
00 ucDCERevision
70 ucMaxDispEngineNum
05 ucMaxActiveDispEngineNum
02 ucMaxPPLLNum
05 ucCoreRefClkSource; // value of CORE_REF_CLK_SOURCE
00 ucReserved[3];

00
0000


////////////////////////////// structure used for VBIOS only

1E usTransmitterObjId
21 usSupportDevice
48 ucTransmitterCmdTblId
00 ucConfig
4C ucEncoderID //available 1st encoder ( default )
00 ucOptionEncoderID; //available 2nd encoder ( optional )
03 uc2ndEncoderID;
FFFF ucReserved
00


1E224B004C0009FFFF00
20214E004C000AFFFF00
202251004C000BFFFF00
212154004C000CFFFF00






FFFF
1404FF
1504FF
1604FF
1704FF
1804FF


typedef enum CORE_REF_CLK_SOURCE{
CLOCK_SRC_XTALIN=0,
CLOCK_SRC_XO_IN=1,
CLOCK_SRC_XO_IN2=2,
}CORE_REF_CLK_SOURCE;

Char, Short, Int and Long Types​

char​


The char type takes 1 byte of memory (8 bits) and allows expressing in the binary notation 2^8=256 values. The char type can contain both positive and negative values. The range of values is from -128 to 127.


uchar​


The uchar integer type also occupies 1 byte of memory, as well as the char type, but unlike it uchar is intended only for positive values. The minimum value is zero, the maximum value is 255. The first letter u in the name of the uchar type is the abbreviation for unsigned.


short​


The size of the short type is 2 bytes (16 bits) and, accordingly, it allows expressing the range of values equal to 2 to the power 16: 2^16 = 65 536.Since the short type is a signed one, and contains both positive and negative values, the range of values is between -32 768 and 32 767.


ushort​


The unsigned short type is the type ushort, which also has a size of 2 bytes. The minimum value is 0, the maximum value is 65 535.


int​


The size of the int type is 4 bytes (32 bits). The minimal value is -2 147 483 648, the maximal one is 2 147 483 647.


uint​


The unsigned integer type is uint. It takes 4 bytes of memory and allows expressing integers from 0 to 4 294 967 295.


long​


The size of the long type is 8 bytes (64 bits). The minimum value is -9 223 372 036 854 775 808, the maximum value is 9 223 372 036 854 775 807.


ulong​


The ulong type also occupies 8 bytes and can store values from 0 to 18 446 744 073 709 551 615.

DIFFs in FirmwareInfo and PowerPlayInfo


Screen Shot 2021-06-16 at 22.50.25.png


GREEN IS UNIQUE



Closed. Vaughn are same here as Apple 560x
Screen Shot 2021-06-17 at 00.10.32.png

usAdjustARB_SEQDataOffset; possibly is missing





Added apple 560x to comparison, and it help to eliminate differences from 13 modules to 6!!!
 
Last edited:
I finished Diff comparison. Maybe it will help to get GPU working. But i have a feeling, like HP laptop vbios is like DEMO or cut version

P.S. 40000800 ( aka **801,**802) is auto number modification by Google Sheets. The plain mode sometimes wont work.
COMPARING UNIQUE MODULES.png


As i cant find any other differences with method: Vaughn is main, if any Crane, Pegatron, module are same with Vaughn, then I will delete it from comparison as they can be related to SubVendor code style, and are not related to get functionality on Catalina Os and higher. So backing to differences: the only mistery module for me is VRAM_Info, MemoryTrainingInfo, as they are extremely big, I missed extended analysis of them. But other modules confirm that vbios modules itself have no Offsets!!! The modules uses Registers, Parsers, CALL TO DATA, SET COMMAND, SET REG BLOCK or SET_ATI_PORT(INDIRECT_IO_MM), and other type of buffer communication. So the reason why replacing modules causing problems, are simply buffer missmatching. If replace all buffer relations after module replacing - then it should work.
 

Attachments

  • COMPARING UNIQUE MODULES.zip
    228 KB · Views: 45
Last edited:
Memory controller initialize is only one that is software communicated through ASIC. And could be a reason, but also could be a TvOutInfo, but if patching this, the parser should be replaced to meet vram config, as somehow this one is related. Or if the problem is in all commands, they should be replaced.

Later I will try to patch tvoutinfo to meet my hybrid build with Vaughn.

tomorrow I will try to look closer on Vaughn structure of vram_info module. I want to understand how this table is reading by memory controller, and look to offsets or some extra. I want to find proof that there is nothing to resist of modules modding
 
Last edited:
I compared Vram_Info of Vaughn, Crane, Aomorhid.
And good thing: i can`t find any Offsets. And any reason why it wont work on Catalina.
So there is no offsets in modules, except parser from TV_VideoMod, and offsets from MC_InitParameter data (But they unconfirmed as driver have almost now explanation as is designed for additional data for Command module)

So possibly the reason not in data modules
 

Attachments

  • VramInfo.zip
    48.6 KB · Views: 43
This is only VGA_FIRMWARE part of WX4150 and APPLE 5xx, which can contain other elements.
Will upload this for future research, as replacement of Crane modules to WX4170 not get it working under Catalina, so not only modules are related to success. Somehow this method work for my 4150, but failed to 4170

Fun fact: Apple 550,555,560 VGA FIRMWARE ARE FULLY SAME. BUT!!!! BUT THEY ARE DESIGNED FOR DIFFERENT GPUS, BUT SAME GEN!!! SO IF APPLE CAN USE SAME VGA FIRMWARE, BUT WITH DIFFERENT SPECS, THEN WE CAN USE ANY FIRMWARE AS WE WANT AND WHICH IS RELATED TO SAME GENERATION OF GPUS!!!!

THIS TELL AS THAT MODULES ARE CONTAIN ALL GPU SPECS!!!


VGA_FIRMWARE-APPLE_550
VGA_FIRMWARE-APPLE_555
VGA_FIRMWARE-APPLE_560
VGA_FIRMWARE-APPLE_560X
VGA_FIRMWARE-CRANE
VGA_FIRMWARE-PEGATRON
VGA_FIRMWARE-VAUGHN-ZbookG4
VGA_FIRMWARE-VORTEX-ZbookG5



THIS BRINGS TO IDEA TO FIND OUT WHICH GEN GPU IS WX4170 AND WX4150?
Are they Polaris 11? Are they Baffin_M?


Also tried to dissasembly VgaFirmware using Atomdis registers (but this one is partial, as registers are designed for modules disassembly for driver. This brings to understanding, that only modules are used by drivers. Question: why 4170 wont workon Catalina with hybrid vbios)



GOOD NEWS! I compare G5 AOMORHID (4170) and VORTEX (4150) VGAFirmware (aka bootloader), and they are fully the Same!!!
G5 4150 vs 4170.png

But have small differences in G4 Zbook. So this two GPU are same chip, same gen and different only in few modules!!! That is why this modules making 4170 as 4170:
Cmd_ASIC_Init.rom
Cmd_ClockSource.rom
Cmd_SetVoltage.rom
Cmd_SpeedFanControl.rom
Cmd_Unknown.rom
Data_ASIC_ProfilingInfo l ASIC_VDDCI_Info.rom
Data_FirmwareInfo.rom
Data_Object_Info.rom
Data_PowerPlayInfo.rom
Data_VoltageObjectInfo.rom
Data_VRAM_Info.rom


WX4170_Modules.zip
 

Attachments

  • VGA_FIRMWARES(ONLY FOR REVERSE ENGINERING RESEARCH_DO NOT FLASH)_V2.zip
    144.8 KB · Views: 48
  • Diss_VGAFIRM_Crane.txt
    240.9 KB · Views: 47
  • Diss_VGAFIRM_Pegatron.txt
    240.9 KB · Views: 40
  • Diss_VGAFIRM_Vaughn.txt
    150.6 KB · Views: 39
  • WX4170_Modules.zip
    9.8 KB · Views: 39
Last edited:
THIS BRINGS TO IDEA TO FIND OUT WHICH GEN GPU IS WX4170 AND WX4150?
Are they Polaris 11? Are they Baffin_M?
I believe they are Baffin_M and Baffin_XT Most likely Polaris 11
Also tried to dissasembly VgaFirmware using Atomdis registers (but this one is partial, as registers are designed for modules disassembly for driver. This brings to understanding, that only modules are used by drivers. Question: why 4170 wont workon Catalina with hybrid vbios)
Some Logic...

Vaughn / Affleck and Aomorhid roms initialize the 4170 properly for Bios and Discrete mode.
All of them work in all OS's but also all of them stall Catalina boot.

Crane / Pegatron / Falcon roms don't initialize properly in Bios and Discrete mode bricks the laptop.
All of them work in Catalina / Mojave but have problems in Windows / Linux.

Hybrid Roms don't make a difference in this logic.

So I suspect the problem is not in the Rom's contents but in the Bios initialization. If the card is properly recognized/initialized by the Bios, then Catalina Boot Stalls.
So Catalina drivers can't re-initialize the card, but if the card is not initialized by the bios (Crane/Pegatron/Falcon) then Catalina drivers initialize the card and everything works.

This may be due to a combo of whitelist in my G5 Bios and some module.

In your case the Horrible G5 Bios is not an issue and the hybrid rom works?

-Edit

So in theory if we change the device-id of the hybrid rom that has Aomorhid Firmware but Crane modules to something that the bios won't initialize (not in whitelist), then if Catalina boots, we would know if this combo theory is right.
 
Last edited:
Status
Not open for further replies.
Back
Top