/*
 * Register definitions for the AMBA CLCD logic cell.
 *
 * derived from David A Rusling, although rearranged as a C structure
 *     linux/include/asm-arm/hardware/amba_clcd.h -- Integrator LCD panel.
 *
 * Copyright (C) 2001 ARM Limited
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file COPYING in the main directory of this archive
 * for more details.
 */

/*
 * CLCD Controller Internal Register addresses
 */
struct clcd_registers {
	u32 tim0;	/* 0x00 */
	u32 tim1;
	u32 tim2;
	u32 tim3;
	u32 ubas;	/* 0x10 */
	u32 lbas;
#if !defined(CONFIG_ARCH_VERSATILE) && !defined(CONFIG_ARCH_REALVIEW)
	u32 ienb;
	u32 cntl;
#else /* Someone rearranged these two registers on the Versatile */
	u32 cntl;
	u32 ienb;
#endif
	u32 stat;	/* 0x20 */
	u32 intr;
	u32 ucur;
	u32 lcur;
	u32 unused[0x74];	/* 0x030..0x1ff */
	u32 palette[0x80];	/* 0x200..0x3ff */
};

/* Bit definition for TIM2 */
#define TIM2_CLKSEL		(1 << 5)
#define TIM2_IVS		(1 << 11)
#define TIM2_IHS		(1 << 12)
#define TIM2_IPC		(1 << 13)
#define TIM2_IOE		(1 << 14)
#define TIM2_BCD		(1 << 26)

/* Bit definitions for control register */
#define CNTL_LCDEN		(1 << 0)
#define CNTL_LCDBPP1		(0 << 1)
#define CNTL_LCDBPP2		(1 << 1)
#define CNTL_LCDBPP4		(2 << 1)
#define CNTL_LCDBPP8		(3 << 1)
#define CNTL_LCDBPP16		(4 << 1)
#define CNTL_LCDBPP16_565	(6 << 1)
#define CNTL_LCDBPP24		(5 << 1)
#define CNTL_LCDBW		(1 << 4)
#define CNTL_LCDTFT		(1 << 5)
#define CNTL_LCDMONO8		(1 << 6)
#define CNTL_LCDDUAL		(1 << 7)
#define CNTL_BGR		(1 << 8)
#define CNTL_BEBO		(1 << 9)
#define CNTL_BEPO		(1 << 10)
#define CNTL_LCDPWR		(1 << 11)
#define CNTL_LCDVCOMP(x)	((x) << 12)
#define CNTL_LDMAFIFOTIME	(1 << 15)
#define CNTL_WATERMARK		(1 << 16)

/* u-boot specific: information passed by the board file */
struct clcd_config {
	struct clcd_registers *address;
	u32			tim0;
	u32			tim1;
	u32			tim2;
	u32			tim3;
	u32			cntl;
	unsigned long		pixclock;
};