1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/cpu/arm7tdmi_gba/include/periph_gba.h
2024-04-10 17:06:14 +02:00

107 lines
2.5 KiB
C

/*
* Copyright (C) 2023 HAW Hamburg. All rights reserved.
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup cpu_arm7tdmi_gba
* @{
*
* @file
* @brief GBA specific definitions for internal peripheral handling
*
* @author Bennet Blischke
*/
#ifndef PERIPH_GBA_H
#define PERIPH_GBA_H
#include <stdint.h>
#ifdef __cplusplus
extern "C"
{
#endif
/**
* @brief Type for 32-bit registers
*/
#define REG32(ADDR) (*(uint32_t volatile (*))(ADDR))
/**
* @brief Type for 16-bit registers
*/
#define REG16(ADDR) (*(uint16_t volatile (*))(ADDR))
/**
* @brief Type for 16-bit memory addresses
*/
#define MEM16(ADDR) ((uint16_t(*))(ADDR))
/**
* @brief Screen dimension in pixel
* @{
*/
#define GBA_SCREEN_WIDTH (240) /**< width */
#define GBA_SCREEN_HEIGHT (160) /**< height */
/** @} */
/**
* @brief Display Control register
*/
#define GBA_DISPCNT REG16(0x4000000)
/**
* @name Settings for GBA_DISPCNT
* @{
*/
#define GBA_DISPCNT_BGMODE_0 0x0000 /**< Tiled, four layers, up to 1024 tiles */
#define GBA_DISPCNT_BGMODE_1 0x0001 /**< Tiled, three layers, up to 1024 tiles */
#define GBA_DISPCNT_BGMODE_2 0x0002 /**< Tiled, two layers, up to 1024 tiles */
#define GBA_DISPCNT_BGMODE_3 0x0003 /**< Bitmap, 240x160, 15-bit RGB */
#define GBA_DISPCNT_BGMODE_4 0x0004 /**< Bitmap, 240x160, 8-bit RGB */
#define GBA_DISPCNT_BGMODE_5 0x0005 /**< Bitmap, 160x128, 15-bit RGB */
#define GBA_DISPCNT_SDBG_0 0x0100 /**< Enable display of background 0 */
#define GBA_DISPCNT_SDBG_1 0x0200 /**< Enable display of background 1 */
#define GBA_DISPCNT_SDBG_2 0x0400 /**< Enable display of background 2 */
#define GBA_DISPCNT_SDBG_3 0x0800 /**< Enable display of background 3 */
#define GBA_DISPCNT_SDOBJ 0x1000 /**< Enable display of objects */
/** @} */
/**
* @brief General LCD Status register
*/
#define GBA_DISPSTAT REG16(0x4000004)
/**
* @name LCD background control registers
* @{
*/
#define GBA_BG0CNT REG16(0x4000008) /**< BG0 */
#define GBA_BG1CNT REG16(0x400000a) /**< BG1 */
#define GBA_BG2CNT REG16(0x400000c) /**< BG2 */
#define GBA_BG3CNT REG16(0x400000e) /**< BG3 */
/** @} */
/**
* @brief VRAM color palette memory
*/
#define GBA_VRAM_PALETTE MEM16(0x5000000)
/**
* @brief VRAM, 96Kb, 0x6017FFF - size depends on display mode!
*/
#define GBA_VRAM MEM16(0x6000000)
#ifdef __cplusplus
}
#endif
#endif /* PERIPH_GBA_H */
/** @} */