X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=rpikern;a=blobdiff_plain;f=src%2Frpi.c;h=ec18e96ccbe1d72005a1dfdcbc9432f69cd6b168;hp=68f07e61fca7577d331c06c7782c21869e51349c;hb=574147e84aafb61db3cf8b595d2a12ce5ba160de;hpb=99bdc8838f189f79ba77bfbbf41d7f1b4839ce0f diff --git a/src/rpi.c b/src/rpi.c index 68f07e6..ec18e96 100644 --- a/src/rpi.c +++ b/src/rpi.c @@ -1,70 +1,12 @@ #include #include #include "rpi.h" +#include "rpi_ioreg.h" #include "sysctl.h" #include "asm.h" #include "serial.h" #include "debug.h" -#define IOREG(offs) (*(volatile uint32_t*)(rpi_iobase | offs)) - -/* System timer */ -#define STM_CTL_REG IOREG(0x3000) -#define STM_STAT_REG STM_CTL_REG -#define STM_LCNT_REG IOREG(0x3004) -#define STM_HCNT_REG IOREG(0x3008) -#define STM_CMP0_REG IOREG(0x300c) -#define STM_CMP1_REG IOREG(0x3010) -#define STM_CMP2_REG IOREG(0x3014) -#define STM_CMP3_REG IOREG(0x3018) - -#define STMCTL_M0 1 -#define STMCTL_M1 2 -#define STMCTL_M2 4 -#define STMCTL_M3 8 - -/* TIMER */ -#define TM_LOAD_REG IOREG(0xb400) -#define TM_VALUE_REG IOREG(0xb404) -#define TM_CTL_REG IOREG(0xb408) -#define TM_ICLR_REG IOREG(0xb40c) -#define TM_IRAW_REG IOREG(0xb410) -#define TM_IMSK_REG IOREG(0xb414) -#define TM_RELOAD_REG IOREG(0xb418) -#define TM_PREDIV_REG IOREG(0xb41c) -#define TM_COUNT_REG IOREG(0xb420) - -#define TMCTL_23BIT 0x000002 -#define TMCTL_DIV16 0x000004 -#define TMCTL_DIV256 0x000008 -#define TMCTL_DIV1 0x00000c -#define TMCTL_IEN 0x000020 -#define TMCTL_EN 0x000080 -#define TMCTL_DBGHALT 0x000100 -#define TMCTL_CNTEN 0x000200 - -#define TMCTL_PRESCALER(x) (((uint32_t)(x) & 0xff) << 16) - -/* watchdog */ -#define PM_RSTC_REG IOREG(0x10001c) -#define PM_WDOG_REG IOREG(0x100024) - -#define PM_PASSWD 0x5a000000 -#define PMRSTC_WRCFG_FULL_RESET 0x00000020 -#define PMRSTC_WRCFG_CLEAR 0xffffffcf - -/* MAILBOX */ -#define MBOX_READ_REG IOREG(0xb880) -#define MBOX_POLL_REG IOREG(0xb890) -#define MBOX_SENDER_REG IOREG(0xb894) -#define MBOX_STATUS_REG IOREG(0xb898) -#define MBOX_CFG_REG IOREG(0xb89c) -#define MBOX_WRITE_REG IOREG(0xb8a0) - -/* the full bit is set when there's no space to append messages */ -#define MBOX_STAT_FULL 0x80000000 -/* the empty bit is set when there are no pending messages to be read */ -#define MBOX_STAT_EMPTY 0x40000000 static int detect(void);