summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2016-09-16 18:15:29 +1000
committerDamien Zammit <damien@zamaudio.com>2016-09-16 18:15:29 +1000
commit59e4001aa06c1db46ffe44da5bc1b254e9b636c0 (patch)
treea1f2fa922cd1c2e110a95e9bad33fa1bbba29366
parent0a3f2c764355da3d8007a03ba8a3758d513ec4d7 (diff)
Fix static regs at absolute offset in firmwareHEADmaster
Boots to memtest sitting on 45C (after cleaning fan) Signed-off-by: Damien Zammit <damien@zamaudio.com>
-rw-r--r--firmware/servicereq.c53
-rw-r--r--firmware/smu.ld46
2 files changed, 52 insertions, 47 deletions
diff --git a/firmware/servicereq.c b/firmware/servicereq.c
index acbc453..1b69968 100644
--- a/firmware/servicereq.c
+++ b/firmware/servicereq.c
@@ -46,48 +46,7 @@ typedef struct {
phy_t p;
} ddiphy_t;
-
-/* Align to 0x1d9a4 */
-static u32 thermal_params[38] = {
- 0x3178, // VPC
- 0x0000,
- 0x3171, // BAPM
- 0x0000,
- 0x3172, // BAPM
- 0x0000,
- 0x7103, // BAPM
- 0x0000, // BAPM
- 0x7116, // BAPM
- 0x0000, // BAPM
- 0x317d, // VPC
- 0x0000,
- 0x7103, // VPC
- 0x0000, // VPC
- 0x712e,
- 0x0000,
- 0x710f, // TDC/HTC
- 0x0000, // TDC/HTC
- 0x7110, // LPMx
- 0x0000, // LPMx
- 0x7111, // LPMx
- 0x0000, // LPMx
- 0x7112, // LPMx
- 0x0000, // LPMx
- 0x7113, // LPMx
- 0x0000, // LPMx
- 0x715c, // VPC/BAPM
- 0x0000, // VPC/BAPM
- 0x715d, // VPC
- 0x0000,
- 0x7162, // LOADLINE
- 0x0000, // LOADLINE
- 0x7117, // BAPM
- 0x0000, // BAPM
- 0x7157,
- 0x0000,
- 0x7106, // BAPM
- 0x0000, // BAPM
-};
+extern u32 thermal_params[];
static void set_interrupts(int onoff)
{
@@ -3783,7 +3742,7 @@ x11d74:
return r1;
}
-static void config_lclkdpm(void)
+static void config_lclkdpm(u32 *dpm)
{
u32 r1, r2, r3, r4, r5, r6, r7;
u32 r11, r12, r13, r14;
@@ -3813,7 +3772,7 @@ static void config_lclkdpm(void)
goto x11e64;
x11e1c:
r3 = read8(r5+1);
- //write32(sp+24, r3);
+ *dpm = r3;
r3 = read32(r5);
r3 = r3 & r7;
r3 >>= 24;
@@ -5518,6 +5477,7 @@ void smu_service_request(unsigned int e3)
static ddiphy_t ddiphy = {{0}};
static u32 bapm = 0;
+ static u32 dpm = 0;
u32 requestid;
requestid = e3;
@@ -5558,7 +5518,7 @@ void smu_service_request(unsigned int e3)
break;
case SMC_MSG_CONFIG_LCLK_DPM:
// TODO: b0rked
- //config_lclkdpm();
+ //config_lclkdpm(&dpm);
break;
case SMC_MSG_FLUSH_DATA_CACHE:
flush_datacache();
@@ -5570,7 +5530,8 @@ void smu_service_request(unsigned int e3)
config_vpc();
break;
case SMC_MSG_CONFIG_BAPM:
- config_bapm(&bapm);
+ // TODO: b0rked
+ //config_bapm(&bapm);
break;
case SMC_MSG_CONFIG_TDC_LIMIT:
config_tdc();
diff --git a/firmware/smu.ld b/firmware/smu.ld
index 67bdc73..0c3c5e9 100644
--- a/firmware/smu.ld
+++ b/firmware/smu.ld
@@ -82,7 +82,7 @@ SECTIONS
} > ram
/* read/write data */
- .data :
+ .data :
{
. = ALIGN(4);
_fdata = .;
@@ -95,6 +95,50 @@ SECTIONS
_edata = .;
} > ram
+ .sreg :
+ {
+ . = ABSOLUTE(0x9a4);
+ thermal_params = .;
+ LONG(0x3178); /* VPC */
+ LONG(0x0000);
+ LONG(0x3171); /* BAPM */
+ LONG(0x0000);
+ LONG(0x3172); /* BAPM */
+ LONG(0x0000);
+ LONG(0x7103); /* BAPM */
+ LONG(0x0000); /* BAPM */
+ LONG(0x7116); /* BAPM */
+ LONG(0x0000); /* BAPM */
+ LONG(0x317d); /* VPC */
+ LONG(0x0000);
+ LONG(0x7103); /* VPC */
+ LONG(0x0000); /* VPC */
+ LONG(0x712e);
+ LONG(0x0000);
+ LONG(0x710f); /* TDC/HTC */
+ LONG(0x0000); /* TDC/HTC */
+ LONG(0x7110); /* LPMx */
+ LONG(0x0000); /* LPMx */
+ LONG(0x7111); /* LPMx */
+ LONG(0x0000); /* LPMx */
+ LONG(0x7112); /* LPMx */
+ LONG(0x0000); /* LPMx */
+ LONG(0x7113); /* LPMx */
+ LONG(0x0000); /* LPMx */
+ LONG(0x715c); /* VPC/BAPM */
+ LONG(0x0000); /* VPC/BAPM */
+ LONG(0x715d); /* VPC */
+ LONG(0x0000);
+ LONG(0x7162); /* LOADLINE */
+ LONG(0x0000); /* LOADLINE */
+ LONG(0x7117); /* BAPM */
+ LONG(0x0000); /* BAPM */
+ LONG(0x7157);
+ LONG(0x0000);
+ LONG(0x7106); /* BAPM */
+ LONG(0x0000); /* BAPM */
+ } > regs =0
+
/* bss */
.bss :
{