You need to run it from the HBC, which gives you the access rights to disable the HW_AHBPROT register.
You can't just use HW_MEMMIRR/HW_AHBPROT combo?
#define HW_MEMMIRR 0x0d800060
#define HW_AHBPROT 0x0d800064 // defaults to 0xFFFFFFFF on boot
void syscall_54(int factory_mode) {
if (factory_mode) {
set32(HW_MEMMIRR, 8); // this probably enables access to Hollywood regs from PPC
set32(HW_AHBPROT, 0x80000DFE); // re-enable PPC access to
(previously) disabled hardware devices
write16(0x0d8b4202, 0); // dunno what this does
} else {
clear32(HW_MEMMIRR, 8); // this probably disables to Hollywood regs from PPC
clear32(HW_AHBPROT, 0x80000DFE); // disable access to some hardware devices from PPC
write16(0x0d8b4200, 0x18); // dunno what this does
}
}
Source:
http://hackmii.com/2009/08/of-tmds-and-hardware/
HW_MEMMIRR= 0x0d800060= HOLLYWOOD[0x60] on
http://wiibrew.org/wiki/Hardware/Main_Memory
text in red color are my additions
I'm guessing HW_MEMMIRR is short for Memory Mirror (handling bank switching etc.)