mirror of https://gerrit.osmocom.org/simtrace2
183 lines
8.8 KiB
C
183 lines
8.8 KiB
C
/* ----------------------------------------------------------------------------
|
|
* ATMEL Microcontroller Software Support
|
|
* ----------------------------------------------------------------------------
|
|
* Copyright (c) 2009, Atmel Corporation
|
|
*
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* - Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the disclaimer below.
|
|
*
|
|
* Atmel's name may not be used to endorse or promote products derived from
|
|
* this software without specific prior written permission.
|
|
*
|
|
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
|
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
|
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
* ----------------------------------------------------------------------------
|
|
*/
|
|
|
|
/**
|
|
* \file
|
|
*
|
|
* Interface of ILI9325 driver.
|
|
*
|
|
*/
|
|
|
|
#ifndef _ILI9325_
|
|
#define _ILI9325_
|
|
|
|
/*----------------------------------------------------------------------------
|
|
* Headers
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
#include "board.h"
|
|
|
|
#include <stdint.h>
|
|
typedef uint32_t LcdColor_t ;
|
|
|
|
/*----------------------------------------------------------------------------
|
|
* Definitions
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
/* ILI9325 ID code */
|
|
#define ILI9325_DEVICE_CODE 0x9325
|
|
|
|
/* ILI9325 LCD Registers */
|
|
#define ILI9325_R00H 0x00 /* Driver Code Read */
|
|
#define ILI9325_R01H 0x01 /* Driver Output Control 1 */
|
|
#define ILI9325_R01H_SS ((uint16_t)0x0100)
|
|
#define ILI9325_R01H_SM ((uint16_t)0x0400)
|
|
#define ILI9325_R02H 0x02 /* LCD Driving Control */
|
|
#define ILI9325_R03H 0x03 /* Entry Mode */
|
|
#define ILI9325_R03H_AM ((uint16_t)0x0008) /* AM Control the GRAM update direction */
|
|
#define ILI9325_R03H_ID0 ((uint16_t)0x0010) /* I/D[1:0] Control the address counter */
|
|
#define ILI9325_R03H_ID1 ((uint16_t)0x0020)
|
|
#define ILI9325_R03H_ORG ((uint16_t)0x0080)
|
|
#define ILI9325_R03H_HWM ((uint16_t)0x0200)
|
|
#define ILI9325_R03H_BGR ((uint16_t)0x1000)
|
|
#define ILI9325_R03H_DFM ((uint16_t)0x4000)
|
|
#define ILI9325_R03H_TRI ((uint16_t)0x8000)
|
|
#define ILI9325_R04H 0x04 /* Resize Control */
|
|
#define ILI9325_R07H 0x07 /* Display Control 1 */
|
|
#define ILI9325_R07H_D0 ((uint16_t)0x0001)
|
|
#define ILI9325_R07H_D1 ((uint16_t)0x0002)
|
|
#define ILI9325_R07H_CL ((uint16_t)0x0008)
|
|
#define ILI9325_R07H_DTE ((uint16_t)0x0010)
|
|
#define ILI9325_R07H_GON ((uint16_t)0x0020)
|
|
#define ILI9325_R07H_BASEE ((uint16_t)0x0100)
|
|
#define ILI9325_R07H_PTDE0 ((uint16_t)0x1000)
|
|
#define ILI9325_R07H_PTDE1 ((uint16_t)0x2000)
|
|
|
|
#define ILI9325_R08H 0x08 /* Display Control 2 */
|
|
#define ILI9325_R09H 0x09 /* Display Control 3 */
|
|
#define ILI9325_R0AH 0x0A /* Display Control 4 */
|
|
#define ILI9325_R0CH 0x0C /* RGB Display Interface Control 1 */
|
|
#define ILI9325_R0DH 0x0D /* Frame Maker Position */
|
|
#define ILI9325_R0FH 0x0F /* RGB Display Interface Control 2 */
|
|
|
|
#define ILI9325_R10H 0x10 /* Power Control 1 */
|
|
#define ILI9325_R11H 0x11 /* Power Control 2 */
|
|
#define ILI9325_R12H 0x12 /* Power Control 3 */
|
|
#define ILI9325_R13H 0x13 /* Power Control 4 */
|
|
|
|
#define ILI9325_R20H 0x20 /* Horizontal GRAM Address Set */
|
|
#define ILI9325_R21H 0x21 /* Vertical GRAM Address Set */
|
|
#define ILI9325_R22H 0x22 /* Write Data to GRAM */
|
|
#define ILI9325_R29H 0x29 /* Power Control 7 */
|
|
#define ILI9325_R2BH 0x2B /* Frame Rate and Color Control */
|
|
|
|
#define ILI9325_R30H 0x30 /* Gamma Control 1 */
|
|
#define ILI9325_R31H 0x31 /* Gamma Control 2 */
|
|
#define ILI9325_R32H 0x32 /* Gamma Control 3 */
|
|
#define ILI9325_R35H 0x35 /* Gamma Control 4 */
|
|
#define ILI9325_R36H 0x36 /* Gamma Control 5 */
|
|
#define ILI9325_R37H 0x37 /* Gamma Control 6 */
|
|
#define ILI9325_R38H 0x38 /* Gamma Control 7 */
|
|
#define ILI9325_R39H 0x39 /* Gamma Control 8 */
|
|
#define ILI9325_R3CH 0x3C /* Gamma Control 9 */
|
|
#define ILI9325_R3DH 0x3D /* Gamma Control 10 */
|
|
|
|
#define ILI9325_R50H 0x50 /* Horizontal Address Start Position */
|
|
#define ILI9325_R51H 0x51 /* Horizontal Address End Position */
|
|
#define ILI9325_R52H 0x52 /* Vertical Address Start Position */
|
|
#define ILI9325_R53H 0x53 /* Vertical Address End Position */
|
|
|
|
#define ILI9325_R60H 0x60 /* Driver Output Control 2 */
|
|
#define ILI9325_R60H_GS ((uint16_t)0x8000)
|
|
#define ILI9325_R61H 0x61 /* Base Image Display Control */
|
|
#define ILI9325_R6AH 0x6A /* Vertical Scroll Control */
|
|
|
|
#define ILI9325_R80H 0x80 /* Partial Image 1 Display Position */
|
|
#define ILI9325_R81H 0x81 /* Partial Image 1 Area (Start Line) */
|
|
#define ILI9325_R82H 0x82 /* Partial Image 1 Area (End Line) */
|
|
#define ILI9325_R83H 0x83 /* Partial Image 2 Display Position */
|
|
#define ILI9325_R84H 0x84 /* Partial Image 2 Area (Start Line) */
|
|
#define ILI9325_R85H 0x85 /* Partial Image 2 Area (End Line) */
|
|
|
|
#define ILI9325_R90H 0x90 /* Panel Interface Control 1 */
|
|
#define ILI9325_R92H 0x92 /* Panel Interface Control 2 */
|
|
#define ILI9325_R95H 0x95 /* Panel Interface Control 4 */
|
|
|
|
#define ILI9325_RA1H 0xA1 /* OTP VCM Programming Control */
|
|
#define ILI9325_RA2H 0xA2 /* OTP VCM Status and Enable */
|
|
#define ILI9325_RA5H 0xA5 /* OTP Programming ID Key */
|
|
|
|
/*----------------------------------------------------------------------------
|
|
* Types
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
typedef volatile uint8_t REG8;
|
|
|
|
/*----------------------------------------------------------------------------
|
|
* Marcos
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
/** LCD index register address */
|
|
#define LCD_IR() (*((REG8 *)(BOARD_LCD_BASE)))
|
|
/** LCD status register address */
|
|
#define LCD_SR() (*((REG8 *)(BOARD_LCD_BASE)))
|
|
/** LCD data address */
|
|
#define LCD_D() (*((REG8 *)((uint32_t)(BOARD_LCD_BASE) + BOARD_LCD_RS)))
|
|
|
|
/*----------------------------------------------------------------------------
|
|
* Exported functions
|
|
*----------------------------------------------------------------------------*/
|
|
extern void LCD_WriteRAM_Prepare( void );
|
|
extern void LCD_WriteRAM( LcdColor_t dwColor );
|
|
extern void LCD_ReadRAM_Prepare( void );
|
|
extern uint32_t LCD_ReadRAM( void );
|
|
extern uint32_t LCD_Initialize( void );
|
|
extern void LCD_On( void );
|
|
extern void LCD_Off( void );
|
|
extern void LCD_PowerDown( void );
|
|
extern uint32_t LCD_SetColor(uint32_t dwRgb24Bits);
|
|
extern void LCD_SetCursor( uint16_t x, uint16_t y );
|
|
extern void LCD_SetWindow( uint32_t dwX, uint32_t dwY, uint32_t dwWidth, uint32_t dwHeight );
|
|
extern void LCD_SetDisplayLandscape( uint32_t dwRGB );
|
|
extern void LCD_SetDisplayPortrait( uint32_t dwRGB );
|
|
extern void LCD_VerticalScroll( uint16_t wY );
|
|
extern void LCD_SetPartialImage1( uint32_t dwDisplayPos, uint32_t dwStart, uint32_t dwEnd );
|
|
extern void LCD_SetPartialImage2( uint32_t dwDisplayPos, uint32_t dwStart, uint32_t dwEnd );
|
|
extern uint32_t LCD_DrawPixel( uint32_t x, uint32_t y );
|
|
extern void LCD_TestPattern( uint32_t dwRGB );
|
|
extern uint32_t LCD_DrawFilledRectangle( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2 );
|
|
extern uint32_t LCD_DrawPicture( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2, const LcdColor_t *pBuffer );
|
|
extern uint32_t LCD_DrawLine ( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2 );
|
|
extern uint32_t LCD_DrawCircle( uint32_t dwX, uint32_t dwY, uint32_t dwR );
|
|
extern uint32_t LCD_DrawFilledCircle( uint32_t dwX, uint32_t dwY, uint32_t dwRadius);
|
|
extern uint32_t LCD_DrawRectangle( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2 );
|
|
extern void LCD_SetBacklight (uint32_t level);
|
|
|
|
#endif /* #ifndef ILI9325 */
|