Editing Syscon Thermal Config/structs

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
#REDIRECT [[Syscon Thermal Configs/structs]]
This page is '''only''' intended to show some code samples, feel free to improve them, please provide a proof if an important change is made, and use the related {{talk}} page/s for the dicussions and speculations
 
{{Boxcode|title=ps3_syscon_eeprom_thermal_config_region.c|code=<syntaxhighlight lang="c">
//      SYSCON    | BOARDS |
//---------------------------
// CXR713F120A    | MPU-501, TMU-520, COOKIE-XX prototypes
// CXR713120-201GB | COK-001
// CXR713120-202GB | COK-002
// CXR713120-203GB | SEM-001
// CXR714120-301GB | DIA-001
// CXR714120-302GB | DIA-002, DEB-001
// CXR714120-303GB | COK-002 (refurb 65nm RSX)
// CXR714120-304GB | COK-001 (refurb 40nm RSX), DIA-001 (refurb 40nm RSX)
// SW-301          | VER-001
// SW-302          | VER-001
// SW2-301        | DYN-001
// SW2-302        | SUR-001
// SW2-303        | JTP-001, JSD-001
// SW3-301        | KTE-001
// SW3-302        | MSX-001, MPX-001, NPX-001
// SW3-303        | ?
// SW3-304        | PQX-001, PPX-001, RTX-001, REX-001
 
struct fan_table_common {
u8 duty_min;
u8 duty_max;
u8 fanconpolicy;  // 0=Full, 1=Auto, 2=Manual
u8 fantbl_select; // FF=RAM, ELSE=ROM
u8 active;        // FF=Active, 0=Inactive
};
 
struct fan_table_sw {
u8  fantbl_duty;
u16 fantbl_tempu;
u16 fantbl_tempd;
};
 
struct fan_table_40 {
u8  fantbl_duty[0xA];
u16 fantbl_tempu[0xA];
u16 fantbl_tempd[0xA];
fan_table_common;
u8  reserved[0x9];
}; // 0x40
 
struct fan_table_80 {
u8  fantbl_duty[0x14];
u16 fantbl_tempu[0x14];
u16 fantbl_tempd[0x14];
fan_table_common;
u8  reserved[0x17];
}; // 0x80
 
struct fan_table_70 {
fan_table_sw[0x14];
fan_table_common;
u8  reserved[0x7];
}; // 0x70
 
 
struct special_section_temps  {
u16 trp;      // Thermal Protection ? (usually 1ºC lower than tshutdown)
u16 tshutdown; // Thermal Shutdown (usually the same temperature than the highest value of TempU)
u16 hyst;      // Hysteresis (usually 2ºC)
};
 
struct special_section_unk_1  {
u8 unk_1_cell; // always 0xFF
u8 unk_1_rsx;  // always 0xFF
u8 unk_1_bevr; // always 0xFF
u8 unk_1_sb;  // always 0xFF
u8 unk_1_eegs; // always 0xFF
};
 
struct special_section_unk_2  {
u8 unk_2_cell; // directly or indirectly related with cell revision
u8 unk_2_rsx;  // directly or indirectly related with rsx revision
u8 unk_2_bevr; // directly or indirectly related with bevr revision
u8 unk_2_sb;  // directly or indirectly related with sb revision
u8 unk_2_eegs; // directly or indirectly related with eegs revision
};
 
struct special_section_unk_3  {
u8 unk_3_cell; // identical to unk_2_cell
u8 unk_3_rsx;  // identical to unk_2_rsx
u8 unk_3_bevr; // always 0xFF, bevr fan table is not active
u8 unk_3_sb;  // identical to unk_2_sb
u8 unk_3_eegs; // always 0xFF, eegs fan table is not active
}; //
 
 
struct special_section_cxrf {
u8  use_eeprom_values; // (00 = yes)
u8  reserved;
special_section_temps cell;
special_section_temps rsx;
special_section_temps xdr;
special_section_temps intake;
special_section_temps gbe;
special_section_temps sb;
u8  reserved[0xA];
u16 tshutdown_time; // TShutdown Time:%d[s](0x%04x)
u8  unknown_0; // related to thermal errors
u8  fan_shutdown_time;
u8  reserved [0xC];
u8  rsx_thermal_limit_unk0;
u8  rsx_thermal_limit_unk1;
u8  rsx_thermal_limit_unk2;
u8  rsx_thermal_limit_unk3;
u8  rsx_thermal_limit_unk4;
u8  rsx_thermal_limit_unk5;
u8  reserved [0xA];
u8  unknown_1; // fan config
u8  unknown_2; // fan config
u8  unknown_3; // fan config
u8  reserved [0xD];
u8  unknown_4; // fan config (set to 0xE0)
u16 unknown_5; // fan config
u16 unknown_6; // fan config
u16 unknown_7; // fan config
u16 unknown_8; // fan config
u16 unknown_9; // fan config
u8  reserved [0x95];
}; // 0x100
 
struct special_section_cxr {
u16 tshutdown_time;        // TShutdown Time:%d[s](0x%04x)
u8  unk_00;                // Fan shutdown time ?
u8  fan_initial_duty;      // Fan initial duty: %d%%(0x%02x)
u8  fan_initial_time;      // Fan initial time: %d(ms)
special_section_unk_1;
special_section_unk_2;
u8  unk_FF;
special_section_temps cell;
special_section_temps rsx;
special_section_temps bevr;
special_section_temps sb;
special_section_temps eegs;
special_section_unk_3;
u8  reserved[0x4B];
u16 checksum;
}; // 0x80
 
struct special_section_sw {
u16 tshutdown_time;        // TShutdown Time:%d[s](0x%04x)
u16 unk_0000;              // Fan shutdown time ?, length increased to 2 bytes for sherwoods ?
u8  fan_initial_duty;      // Fan initial duty: %d%%(0x%02x)
u8  fan_initial_time;      // Fan initial time: %d(ms)
special_section_unk_1;
special_section_unk_2;
special_section_temps cell;
special_section_temps rsx;
special_section_temps sb;
u8  reserved[0x8E];
}; // 0xB0
 
 
struct thermal_config {
#ifdef cytology
fan_table_40 cell;    // table=0, fancon zone=0x00 "1st BE Primary"
fan_table_40 rsx;    // table=1, fancon zone=0x01 "RSX Primary"
fan_table_40 unk_z20; // table=2, fancon zone=0x20 unknown
fan_table_40 unk_z21; // table=3, fancon zone=0x21 unknown
fan_table_40 xdr;    // table=4, fancon zone=0x02 "XDR Primary"
fan_table_40 intake;  // table=7, fancon zone=0x0A "Air Intake"
fan_table_40 gbe;    // table=6, fancon zone=0x0F "GbE"
fan_table_40 sb;      // table=5, fancon zone=0x14 "SB"
special_section_cxrf;
#endif
#ifdef cookie_old
fan_table_40 cell;    // table=0, fancon zone=0x00 "1st BE Primary"
fan_table_40 rsx;    // table=1, fancon zone=0x01 "RSX Primary"
fan_table_40 bevr;    // table=?, fancon zone=0x03 "BE VR"
fan_table_40 sb;      // table=3, fancon zone=0x14 "SB"
fan_table_40 eegs;    // table=?, fancon zone=0x15 "EE+GS"
fan_table_40 reserved
special_section_cxr;
#endif
#ifdef cookie_new
fan_table_80 cell;    // table=0, fancon zone=0x00 "1st BE Primary"
fan_table_80 rsx;    // table=1, fancon zone=0x01 "RSX Primary"
fan_table_80 sb;      // table=?, fancon zone=0x14 "SB"
special_section_cxr;
#endif
#ifdef sherwood
fan_table_70 cell;    // table=0, fancon zone=0x00 "1st BE Primary"
fan_table_70 rsx;    // table=1, fancon zone=0x01 "RSX Primary"
fan_table_70 sb;      // table=?, fancon zone=0x14 "SB"
special_section_sw;
#endif
};
</syntaxhighlight>}}
 
{{Reverse engineering}}<noinclude>[[Category:Main]]</noinclude>
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)