/*
 * Alchemy Semi Pb1100 Referrence Board
 *
 * Copyright 2001, 2008 MontaVista Software Inc.
 * Author: MontaVista Software, Inc. <source@mvista.com>
 *
 * ########################################################################
 *
 *  This program is free software; you can distribute it and/or modify it
 *  under the terms of the GNU General Public License (Version 2) as
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope it will be useful, but WITHOUT
 *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 *  for more details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with this program; if not, write to the Free Software Foundation, Inc.,
 *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
 *
 * ########################################################################
 *
 *
 */
#ifndef __ASM_PB1100_H
#define __ASM_PB1100_H

#define PB1100_IDENT		0xAE000000
#define BOARD_STATUS_REG	0xAE000004
#  define PB1100_ROM_SEL	(1 << 15)
#  define PB1100_ROM_SIZ	(1 << 14)
#  define PB1100_SWAP_BOOT	(1 << 13)
#  define PB1100_FLASH_WP	(1 << 12)
#  define PB1100_ROM_H_STS	(1 << 11)
#  define PB1100_ROM_L_STS	(1 << 10)
#  define PB1100_FLASH_H_STS	(1 << 9)
#  define PB1100_FLASH_L_STS	(1 << 8)
#  define PB1100_SRAM_SIZ	(1 << 7)
#  define PB1100_TSC_BUSY	(1 << 6)
#  define PB1100_PCMCIA_VS_MASK (3 << 4)
#  define PB1100_RS232_CD	(1 << 3)
#  define PB1100_RS232_CTS	(1 << 2)
#  define PB1100_RS232_DSR	(1 << 1)
#  define PB1100_RS232_RI	(1 << 0)

#define PB1100_IRDA_RS232	0xAE00000C
#  define PB1100_IRDA_FULL	(0 << 14)	/* full power		*/
#  define PB1100_IRDA_SHUTDOWN	(1 << 14)
#  define PB1100_IRDA_TT	(2 << 14)	/* 2/3 power		*/
#  define PB1100_IRDA_OT	(3 << 14)	/* 1/3 power		*/
#  define PB1100_IRDA_FIR	(1 << 13)

#define PCMCIA_BOARD_REG	0xAE000010
#  define PB1100_SD_WP1_RO	(1 << 15)	/* read only		*/
#  define PB1100_SD_WP0_RO	(1 << 14)	/* read only		*/
#  define PB1100_SD_PWR1	(1 << 11)	/* applies power to SD1 */
#  define PB1100_SD_PWR0	(1 << 10)	/* applies power to SD0 */
#  define PB1100_SEL_SD_CONN1	(1 << 9)
#  define PB1100_SEL_SD_CONN0	(1 << 8)
#  define PC_DEASSERT_RST	(1 << 7)
#  define PC_DRV_EN		(1 << 4)

#define PB1100_G_CONTROL	0xAE000014	/* graphics control	*/

#define PB1100_RST_VDDI 	0xAE00001C
#  define PB1100_SOFT_RESET	(1 << 15)	/* clear to reset the board */
#  define PB1100_VDDI_MASK	0x1F

#define PB1100_LEDS		0xAE000018

/*
 * 11:8 is 4 discreet LEDs. Clearing a bit illuminates the LED.
 * 7:0  is the LED Display's decimal points.
 */
#define PB1100_HEX_LED		0xAE000018

/* PCMCIA Pb1100 specific defines */
#define PCMCIA_MAX_SOCK  0
#define PCMCIA_NUM_SOCKS (PCMCIA_MAX_SOCK + 1)

/* VPP/VCC */
#define SET_VCC_VPP(VCC, VPP) (((VCC) << 2) | ((VPP) << 0))

#endif /* __ASM_PB1100_H */
