/*
* $Id: lcdc.h,v 1.2 2005/09/29 08:51:07 telka Exp $
*
* Hitachi HD64461 Color LCD Controller Registers
* Copyright (C) 2004 Marcel Telka
* 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 following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the copyright holders nor the names of their
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS 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.
*
* Written by Marcel Telka <marcel@telka.sk>, 2004.
*
* Documentation:
* [1] Hitachi, Ltd., "HD64461 Windows(R) CE Intelligent Peripheral Controller",
* 1st Edition, July 1998, Order Number: ADE-602-076
*
*/
#ifndef HD64461_LCDC_H
#define HD64461_LCDC_H
#include <openwince.h>
#if LANGUAGE == C
#include <stdint.h>
#endif
/* Color LCD Controller Registers */
#if LANGUAGE == C
typedef volatile struct LCDC_registers {
uint16_t lcdcbar;
uint16_t lcdclor;
uint16_t lcdccr;
uint16_t __reserved1[5];
uint16_t ldr1;
uint16_t ldr2;
uint16_t ldhncr;
uint16_t ldhnsr;
uint16_t ldvntr;
uint16_t ldvndr;
uint16_t ldvspr;
uint16_t ldr3;
uint16_t crtvtr;
uint16_t crtvrsr;
uint16_t vrtvrer;
uint16_t __reserved2[5];
uint16_t cptwar;
uint16_t cptwdr;
uint16_t cptrar;
uint16_t cptrdr;
uint16_t __reserved3[4];
uint16_t grdor;
uint16_t grscr;
uint16_t grcfgr;
uint16_t lnsarh;
uint16_t lnsarl;
uint16_t lnaxlr;
uint16_t lndgr;
uint16_t lnaxr;
uint16_t lnertr;
uint16_t lnmdr;
uint16_t bbtssarh;
uint16_t bbtssarl;
uint16_t bbtdsarh;
uint16_t bbtdsarl;
uint16_t bbtdwr;
uint16_t bbtdhr;
uint16_t bbtparh;
uint16_t bbtparl;
uint16_t bbtmarh;
uint16_t bbtmarl;
uint16_t bbtropr;
uint16_t bbtmdr;
} LCDC_registers_t;
#endif /* LANGUAGE == C */
#define LCDCBAR_OFFSET 0x00
#define LCDCLOR_OFFSET 0x02
#define LCDCCR_OFFSET 0x04
#define LDR1_OFFSET 0x10
#define LDR2_OFFSET 0x12
#define LDHNCR_OFFSET 0x14
#define LDHNSR_OFFSET 0x16
#define LDVNTR_OFFSET 0x18
#define LDVNDR_OFFSET 0x1A
#define LDVSPR_OFFSET 0x1C
#define LDR3_OFFSET 0x1E
#define CRTVTR_OFFSET 0x20
#define CRTVRSR_OFFSET 0x22
#define CRTVRER_OFFSET 0x24
#define CPTWAR_OFFSET 0x30
#define CPTWDR_OFFSET 0x32
#define CPTRAR_OFFSET 0x34
#define CPTRDR_OFFSET 0x36
#define GRDOR_OFFSET 0x40
#define GRSCR_OFFSET 0x42
#define GRCFGR_OFFSET 0x44
#define LNSARH_OFFSET 0x46
#define LNSARL_OFFSET 0x48
#define LNAXLR_OFFSET 0x4A
#define LNDGR_OFFSET 0x4C
#define LNAXR_OFFSET 0x4E
#define LNERTR_OFFSET 0x50
#define LNMDR_OFFSET 0x52
#define BBTSSARH_OFFSET 0x54
#define BBTSSARL_OFFSET 0x56
#define BBTDSARH_OFFSET 0x58
#define BBTDSARL_OFFSET 0x5A
#define BBTDWR_OFFSET 0x5C
#define BBTDHR_OFFSET 0x5E
#define BBTPARH_OFFSET 0x60
#define BBTPARL_OFFSET 0x62
#define BBTMARH_OFFSET 0x64
#define BBTMARL_OFFSET 0x66
#define BBTROPR_OFFSET 0x68
#define BBTMDR_OFFSET 0x6A
/* LCDCBAR bits */
#define LCDCBAR_BAD_MASK bits(13,0)
#define LCDCBAR_BAD(x) bits_val(13,0,x)
#define get_LCDCBAR_BAD(x) bits_get(13,0,x)
/* LCDCLOR bits */
#define LCDCLOR_LO_MASK bits(10,0)
#define LCDCLOR_LO(x) bits_val(10,0,x)
#define get_LCDCLOR_LO(x) bits_get(10,0,x)
/* LCDCCR bits */
#define LCDCCR_STBACK bit(10)
#define LCDCCR_STREQ bit(8)
#define LCDCCR_MOFF bit(7)
#define LCDCCR_REFSEL bit(6)
#define LCDCCR_EPON bit(5)
#define LCDCCR_SPON bit(4)
#define LCDCCR_DSPSEL_MASK bits(2,0)
#define LCDCCR_DSPSEL(x) bits_val(2,0,x)
#define get_LCDCCR_DSPSEL(x) bits_get(2,0,x)
/* LDR1 bits */
#define LDR1_DINV bit(8)
#define LDR1_DON bit(0)
/* LDR2 bits */
#define LDR2_CC1 bit(7)
#define LDR2_CC2 bit(6)
#define LDR2_LM_MASK bits(2,0)
#define LDR2_LM(x) bits_val(2,0,x)
#define get_LDR2_LM(x) bits_get(2,0,x)
/* LDHNCR bits */
#define LDHNCR_NHD_MASK bits(15,8)
#define LDHNCR_NHD(x) bits_val(15,8,x)
#define get_LDHNCR_NHD(x) bits_get(15,8,x)
#define LDHNCR_NHT_MASK bits(7,0)
#define LDHNCR_NHT(x) bits_val(7,0,x)
#define get_LDHNCR_NHT(x) bits_get(7,0,x)
/* LDHNSR bits */
#define LDHNSR_HSW_MASK bits(11,8)
#define LDHNSR_HSW(x) bits_val(11,8,x)
#define get_LDHNSR_HSW(x) bits_get(11,8,x)
#define LDHNSR_HSP_MASK bits(7,0)
#define LDHNSR_HSP(x) bits_val(7,0,x)
#define get_LDHNSR_HSP(x) bits_get(7,0,x)
/* LDVNTR bits */
#define LDVNTR_VTL_MASK bits(9,0)
#define LDVNTR_VTL(x) bits_val(9,0,x)
#define get_LDVNTR_VTL(x) bits_get(9,0,x)
/* LDVNDR bits */
#define LDVNDR_VDL_MASK bits(9,0)
#define LDVNDR_VDL(x) bits_val(9,0,x)
#define get_LDVNDR_VDL(x) bits_get(9,0,x)
/* LDVSPR bits */
#define LDVSPR_VSP_MASK bits(9,0)
#define LDVSPR_VSP(x) bits_val(9,0,x)
#define get_LDVSPR_VSP(x) bits_get(9,0,x)
/* LDR3 bits */
#define LDR3_CS_MASK bits(9,5)
#define LDR3_CS(x) bits_val(9,5,x)
#define get_LDR3_CS(x) bits_get(9,5,x)
#define LDR3_CG_MASK bits(3,0)
#define LDR3_CG(x) bits_val(3,0,x)
#define get_LDR3_CG(x) bits_get(3,0,x)
/* CRTVTR bits */
#define CRTVTR_CRTVTR_MASK bits(9,0)
#define CRTVTR_CRTVTR(x) bits_val(9,0,x)
#define get_CRTVTR_CRTVTR(x) bits_get(9,0,x)
/* CRTVRSR bits */
#define CRTVRSR_CRTVRSR_MASK bits(9,0)
#define CRTVRSR_CRTVRSR(x) bits_val(9,0,x)
#define get_CRTVRSR_CRTVRSR(x) bits_get(9,0,x)
/* CRTVRER bits */
#define CRTVRER_CRTVRER_MASK bits(3,0)
#define CRTVRER_CRTVRER(x) bits_val(3,0,x)
#define get_CRTVRER_CRTVRER(x) bits_get(3,0,x)
/* CPTWAR bits */
#define CPTWAR_WRITE_PALETTE_NUM_MASK bits(15,8)
#define CPTWAR_WRITE_PALETTE_NUM(x) bits_val(15,8,x)
#define get_CPTWAR_WRITE_PALETTE_NUM(x) bits_get(15,8,x)
/* CPTWDR bits */
#define CPTWDR_WRITE_PALETTE_D_MASK bits(5,0)
#define CPTWDR_WRITE_PALETTE_D(x) bits_val(5,0,x)
#define get_CPTWDR_WRITE_PALETTE_D(x) bits_get(5,0,x)
/* CPTRAR bits */
#define CPTRAR_READ_PALETTE_NUM_MASK bits(15,8)
#define CPTRAR_READ_PALETTE_NUM(x) bits_val(15,8,x)
#define get_CPTRAR_READ_PALETTE_NUM(x) bits_get(15,8,x)
/* CPTRDR bits */
#define CPTRDR_READ_PALETTE_D_MASK bits(5,0)
#define CPTRDR_READ_PALETTE_D(x) bits_val(5,0,x)
#define get_CPTRDR_READ_PALETTE_D(x) bits_get(5,0,x)
/* GRDOR bits */
#define GRDOR_GRDOR_MASK bits(10,0)
#define GRDOR_GRDOR(x) bits_val(10,0,x)
#define get_GRDOR_GRDOR(x) bits_get(10,0,x)
/* GRCFGR bits */
#define GRCFGR_ACCSTATUS bit(4)
#define GRCFGR_ACCRESET bit(3)
#define GRCFGR_ACCSTART_MASK bits(2,1)
#define GRCFGR_ACCSTART(x) bits_val(2,1,x)
#define get_GRCFGR_ACCSTART(x) bits_get(2,1,x)
#define GRCFGR_COLORDEPTH bit(0)
/* LNSARH bits */
#define LNSARH_LNSARH_MASK bits(2,0)
#define LNSARH_LNSARH(x) bits_val(2,0,x)
#define get_LNSARH_LNSARH(x) bits_get(2,0,x)
/* LNAXLR bits */
#define LNAXLR_LNAXLR_MASK bits(10,0)
#define LNAXLR_LNAXLR(x) bits_val(10,0,x)
#define get_LNAXLR_LNAXLR(x) bits_get(10,0,x)
/* LNDGR bits */
#define LNDGR_LNDGR_SIGN bit(15)
#define LNDGR_LNDGR_MASK bits(10,0)
#define LNDGR_LNDGR(x) bits_val(10,0,x)
#define get_LNDGR_LNDGR(x) bits_get(10,0,x)
/* LNAXR bits */
#define LNAXR_LNAXR_MASK bits(11,0)
#define LNAXR_LNAXR(x) bits_val(10,0,x)
#define get_LNAXR_LNAXR(x) bits_get(10,0,x)
/* LNERTR bits */
#define LNERTR_LNERTR_SIGN bit(15)
#define LNERTR_LNERTR_MASK bits(10,0)
#define LNERTR_LNERTR(x) bits_val(10,0,x)
#define get_LNERTR_LNERTR(x) bits_get(10,0,x)
/* LNMDR bits */
#define LNMDR_LNMDR_MASK bits(1,0)
#define LNMDR_LNMDR(x) bits_val(1,0,x)
#define get_LNMDR_LNMDR(x) bits_get(1,0,x)
/* BBTSSARH bits */
#define BBTSSARH_BBTSSARH_MASK bits(2,0)
#define BBTSSARH_BBTSSARH(x) bits_val(2,0,x)
#define get_BBTSSARH_BBTSSARH(x) bits_get(2,0,x)
/* BBTDSARH bits */
#define BBTDSARH_BBTDSARH_MASK bits(2,0)
#define BBTDSARH_BBTDSARH(x) bits_val(2,0,x)
#define get_BBTDSARH_BBTDSARH(x) bits_get(2,0,x)
/* BBTDWR bits */
#define BBTDWR_BBTDWR_MASK bits(10,0)
#define BBTDWR_BBTDWR(x) bits_val(10,0,x)
#define get_BBTDWR_BBTDWR(x) bits_get(10,0,x)
/* BBTDHR bits */
#define BBTDHR_BBTDHR_MASK bits(10,0)
#define BBTDHR_BBTDHR(x) bits_val(10,0,x)
#define get_BBTDHR_BBTDHR(x) bits_get(10,0,x)
/* BBTPARH bits */
#define BBTPARH_BBTPARH_MASK bits(2,0)
#define BBTPARH_BBTPARH(x) bits_val(2,0,x)
#define get_BBTPARH_BBTPARH(x) bits_get(2,0,x)
/* BBTMARH bits */
#define BBTMARH_BBTMARH_MASK bits(2,0)
#define BBTMARH_BBTMARH(x) bits_val(2,0,x)
#define get_BBTMARH_BBTMARH(x) bits_get(2,0,x)
/* BBTMDR bits */
#define BBTMDR_MSKENABLE bit(5)
#define BBTMDR_PATSELECT bit(4)
#define BBTMDR_SCREENSELECT_MASK bits(3,2)
#define BBTMDR_SCREENSELECT(x) bits_val(3,2,x)
#define get_BBTMDR_SCREENSELECT(x) bits_get(3,2,x)
#define BBTMDR_SCANDRCT bit(0)
#endif /* HD64461_LCDC_H */
syntax highlighted by Code2HTML, v. 0.9.1