diff options
Diffstat (limited to 'c/src/lib/libbsp/arm/nds/libnds/include/nds/system.h')
-rw-r--r-- | c/src/lib/libbsp/arm/nds/libnds/include/nds/system.h | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/c/src/lib/libbsp/arm/nds/libnds/include/nds/system.h b/c/src/lib/libbsp/arm/nds/libnds/include/nds/system.h deleted file mode 100644 index 8e4e5b5920..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/include/nds/system.h +++ /dev/null @@ -1,248 +0,0 @@ -/*--------------------------------------------------------------------------------- - Power control, keys, and HV clock registers - - Copyright (C) 2005 - Jason Rogers (dovoto) - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source - distribution. - ----------------------------------------------------------------------------------*/ - -//! NDS hardware definitions. -/*! \file system.h - - These definitions are usually only touched during - the initialization of the program. -*/ - -#ifndef NDS_SYSTEM_INCLUDE -#define NDS_SYSTEM_INCLUDE - -//! LCD status register. -#define REG_DISPSTAT (*(vu16*)0x04000004) - -//! The display currently in a vertical blank. -#define DISP_IN_VBLANK BIT(0) - -//! The display currently in a horizontal blank. -#define DISP_IN_HBLANK BIT(1) - -//! Current scanline and %DISP_Y match. -#define DISP_YTRIGGERED BIT(2) - -//! Interrupt on vertical blank. -#define DISP_VBLANK_IRQ BIT(3) - -//! Interrupt on horizontal blank. -#define DISP_HBLANK_IRQ BIT(4) - -//! Interrupt when current scanline and %DISP_Y match. -#define DISP_YTRIGGER_IRQ BIT(5) - -static inline -void SetYtrigger(int Yvalue) { - REG_DISPSTAT = (REG_DISPSTAT & 0x007F ) | (Yvalue << 8) | (( Yvalue & 0x100 ) >> 2) ; -} - -//! Current display scanline. -#define REG_VCOUNT (*(vu16*)0x4000006) - - -//! Halt control register. -/*! Writing 0x40 to HALT_CR activates GBA mode. - %HALT_CR can only be accessed via the BIOS. -*/ -#define HALT_CR (*(vuint16*)0x04000300) - -//! Power control register. -/*! This register controls what hardware should - be turned on or off. -*/ -#define REG_POWERCNT *(vu16*)0x4000304 - -//! Turns on specified hardware. -/*! This function should only be called after %powerSET. - - \param on What to power on. -*/ -static inline -void powerON(int on) { REG_POWERCNT |= on;} - -//! Turns on only the specified hardware. -/*! Use this function to power on basic hardware types you - wish to use throughout your program. - - \param on What to power on. -*/ -static inline void powerSET(int on) { REG_POWERCNT = on;} - -//! Turns off the specified hardware. -/*! \param off What to power off. -*/ -static inline void powerOFF(int off) { REG_POWERCNT &= ~off;} - -#ifdef ARM9 -#ifdef DOXYGEN -//! Power-controlled hardware devices accessable to the ARM9. -/*! Used with %powerON, %powerSET, and %powerOFF functions. - Note that these should only be used when programming for - the ARM9. Trying to boot up these hardware devices via - the ARM7 would lead to unexpected results. -*/ -enum ARM9_power -{ - POWER_LCD, //!< Controls the power for both LCD screens. - POWER_2D_A, //!< Controls the power for the main 2D core. - POWER_MATRIX, //!< Controls the power for the 3D matrix. - POWER_3D_CORE, //!< Controls the power for the main 3D core. - POWER_2D_B, //!< Controls the power for the sub 2D core. - POWER_SWAP_LCDS, //!< Controls which screen should use the main core. -}; -#else -#define POWER_LCD BIT(0) -#define POWER_2D_A BIT(1) -#define POWER_MATRIX BIT(2) -#define POWER_3D_CORE BIT(3) -#define POWER_2D_B BIT(9) -#define POWER_SWAP_LCDS BIT(15) -#endif /* DOXYGEN */ - -//! Enables power to all hardware required for 2D video. -#define POWER_ALL_2D (POWER_LCD |POWER_2D_A |POWER_2D_B) - -//! Enables power to all hardware required for 3D video. -#define POWER_ALL (POWER_ALL_2D | POWER_3D_CORE | POWER_MATRIX) - -//! Switches the screens. -static inline void lcdSwap(void) { REG_POWERCNT ^= POWER_SWAP_LCDS; } - -//! Forces the main core to display on the top. -static inline void lcdMainOnTop(void) { REG_POWERCNT |= POWER_SWAP_LCDS; } - -//! Forces the main core to display on the bottom. -static inline void lcdMainOnBottom(void) { REG_POWERCNT &= ~POWER_SWAP_LCDS; } -#endif - -#ifdef ARM7 -#ifdef DOXYGEN -//! Power-controlled hardware devices accessable to the ARM7. -/*! Note that these should only be used when programming for - the ARM7. Trying to boot up these hardware devices via - the ARM9 would lead to unexpected results. -*/ -enum ARM7_power -{ - POWER_SOUND, //!< Controls the power for the sound controller. - POWER_UNKNOWN, //!< Controls the power for an unknown device. -}; -#else -#define POWER_SOUND BIT(0) -#define POWER_UNKNOWN BIT(1) -#endif /* DOXYGEN */ - -void readUserSettings(void); - -#endif /* ARM7 */ - -//! User's DS settings. -/*! \struct tPERSONAL_DATA - - Defines the structure the DS firmware uses for transfer - of the user's settings to the booted program. -*/ -typedef struct tPERSONAL_DATA { - u8 RESERVED0[2]; //!< ??? (0x05 0x00). - - u8 theme; //!< The user's theme color (0-15). - u8 birthMonth; //!< The user's birth month (1-12). - u8 birthDay; //!< The user's birth day (1-31). - - u8 RESERVED1[1]; //!< ??? - - s16 name[10]; //!< The user's name in UTF-16 format. - u16 nameLen; //!< The length of the user's name in characters. - - s16 message[26]; //!< The user's message. - u16 messageLen; //!< The length of the user's message in characters. - - u8 alarmHour; //!< What hour the alarm clock is set to (0-23). - u8 alarmMinute; //!< What minute the alarm clock is set to (0-59). - //0x027FFCD3 alarm minute - - u8 RESERVED2[4]; //!< ??? - //0x027FFCD4 ?? - - u16 calX1; //!< Touchscreen calibration: first X touch - u16 calY1; //!< Touchscreen calibration: first Y touch - u8 calX1px; //!< Touchscreen calibration: first X touch pixel - u8 calY1px; //!< Touchscreen calibration: first X touch pixel - - u16 calX2; //!< Touchscreen calibration: second X touch - u16 calY2; //!< Touchscreen calibration: second Y touch - u8 calX2px; //!< Touchscreen calibration: second X touch pixel - u8 calY2px; //!< Touchscreen calibration: second Y touch pixel - - packed_struct { - unsigned language : 3; //!< User's language. - unsigned gbaScreen : 1; //!< GBA screen selection (lower screen if set, otherwise upper screen). - unsigned defaultBrightness : 2; //!< Brightness level at power on, dslite. - unsigned autoMode : 1; //!< The DS should boot from the DS cart or GBA cart automatically if one is inserted. - unsigned RESERVED1 : 2; //!< ??? - unsigned settingsLost : 1; //!< User Settings Lost (0=Normal, 1=Prompt/Settings Lost) - unsigned RESERVED2 : 6; //!< ??? - } _user_data; - - u16 RESERVED3; - u32 rtcOffset; - u32 RESERVED4; -} PACKED PERSONAL_DATA ; - -//! Key input register. -/*! On the ARM9, the hinge "button," the touch status, and the - X and Y buttons cannot be accessed directly. -*/ -#define REG_KEYINPUT (*(vuint16*)0x04000130) - -//! Key input control register. -#define REG_KEYCNT (*(vuint16*)0x04000132) - -//! Default location for the user's personal data (see %PERSONAL_DATA). -#define PersonalData ((PERSONAL_DATA*)0x27FFC80) - -//! argv structure -/*! \struct __argv - - structure used to set up argc/argv on the DS - -*/ -struct __argv { - int argvMagic; //!< argv magic number, set to 0x5f617267 ('_arg') if valid - char *commandLine; //!< base address of command line, set of null terminated strings - int length; //!< total length of command line -}; - -//! Default location for the libnds argv structure. -#define libnds_argv ((struct __argv *)0x027FFF70) - -// argv struct magic number -#define argvMagic 0x5f617267 - -#endif |