#ifndef _WIIU_H
#define _WIIU_H
#include <machine/wii.h>
#define WIIU_MEM1_BASE 0x00000000
#define WIIU_MEM1_SIZE 0x02000000
#define WIIU_MEM0_BASE 0x08000000
#define WIIU_MEM0_SIZE 0x00300000
#define WIIU_MEM2_BASE 0x10000000
#define WIIU_MEM2_SIZE 0x80000000
#define WIIU_GFX_TV_BASE 0x17500000
#define WIIU_GFX_DRC_BASE 0x178c0000
#define WIIU_BUS_FREQ_HZ 248625000
#define WIIU_CPU_FREQ_HZ (WIIU_BUS_FREQ_HZ * 5)
#define WIIU_TIMEBASE_FREQ_HZ (WIIU_BUS_FREQ_HZ / 4)
#define WIIU_PI_BASE 0x0c000000
#define WIIU_GX2_BASE 0x0c200000
#define WIIU_GX2_SIZE 0x80000
#define WIIU_DSP_BASE 0x0c280000
#define WIIU_PI_INTSR(n) (WIIU_PI_BASE + 0x78 + (n) * 8)
#define WIIU_PI_INTMSK(n) (WIIU_PI_BASE + 0x7c + (n) * 8)
#define WIIU_PI_IRQ_MB_CPU(n) (20 + (n))
#define WIIU_PI_IRQ_GPU7 23
#define LT_PPCnINT1STS(n) (HOLLYWOOD_PRIV_BASE + 0x440 + (n) * 0x10)
#define LT_PPCnINT2STS(n) (HOLLYWOOD_PRIV_BASE + 0x444 + (n) * 0x10)
#define LT_PPCnINT1EN(n) (HOLLYWOOD_PRIV_BASE + 0x448 + (n) * 0x10)
#define LT_PPCnINT2EN(n) (HOLLYWOOD_PRIV_BASE + 0x44c + (n) * 0x10)
#define LT_IOPINT1STS LT_PPCnINT1STS(3)
#define LT_IOPINT2STS LT_PPCnINT2STS(3)
#define LT_IOPIRQINT1EN LT_PPCnINT1EN(3)
#define LT_IOPIRQINT2EN LT_PPCnINT2EN(3)
#define LT_CHIPREVID (HOLLYWOOD_PRIV_BASE + 0x5a0)
#define LT_CHIPREVID_MAGIC __BITS(31, 16)
#define LT_CHIPREVID_MAGIC_CAFE 0xCAFE
#define LT_CHIPREVID_VERHI __BITS(7, 4)
#define LT_CHIPREVID_VERLO __BITS(3, 0)
#define LT_PIMCOMPAT (HOLLYWOOD_PRIV_BASE + 0x5b0)
#define PPC_COMPAT __BIT(5)
#define LT_GPUINDADDR (HOLLYWOOD_PRIV_BASE + 0x620)
#define LT_GPUINDADDR_REGSPACE_GPU (0x3U << 30)
#define LT_GPUINDDATA (HOLLYWOOD_PRIV_BASE + 0x624)
#define WIIU_GPIO_POWER 0
#define WIIU_BOOT_VECTOR 0x08100100
#define WIIU_LOADER_DATA_ADDR 0x89200000
#define WIIU_LOADER_MAGIC 0xcafefeca
struct wiiu_argv {
uint32_t magic;
char cmdline[256];
uint32_t initrd;
uint32_t initrd_len;
};
#define CMD_POWEROFF 0xcafe0001
#define CMD_REBOOT 0xcafe0002
extern bool wiiu_plat;
extern bool wiiu_native;
#endif