/*      $NetBSD: lubbock_reg.h,v 1.4 2005/12/11 12:17:09 christos Exp $ */

/*
* Copyright (c) 2002, 2003, 2005  Genetec Corporation.  All rights reserved.
* Written by Hiroyuki Bessho for Genetec Corporation.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
* 2. 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.
* 3. The name of Genetec Corporation may not be used to endorse or
*    promote products derived from this software without specific prior
*    written permission.
*
* THIS SOFTWARE IS PROVIDED BY GENETEC CORPORATION ``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 GENETEC CORPORATION
* 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.
*/


#ifndef _EVBARM_LUBBOCK_REG_H
#define _EVBARM_LUBBOCK_REG_H

#include <arm/xscale/pxa2x0reg.h>

/* lubbock on-board IOs */
#define LUBBOCK_OBIO_PBASE PXA2X0_CS2_START /* Physical address */
#define LUBBOCK_OBIO_SIZE  0x00000100

#define LUBBOCK_SRAM_PBASE (PXA2X0_CS2_START+0x02000000)
#define LUBBOCK_SRAM_SIZE  0x00100000

#define LUBBOCK_91C96_PBASE PXA2X0_CS3_START
#define LUBBOCK_91C96_IO        LUBBOCK_91C96_PBASE
#define LUBBOCK_91C96_ATTRMEM   (LUBBOCK_91C96_PBASE+0x02000000)


/* SA-1111 companion chip registers */
#define LUBBOCK_SACC_PBASE PXA2X0_CS4_START

/*
* Logical mapping for onboard/integrated peripherals
*/
#define LUBBOCK_IO_AREA_VBASE   0xfd000000
#define LUBBOCK_OBIO_VBASE      0xfd000000
#define LUBBOCK_GPIO_VBASE      0xfd100000
#define LUBBOCK_CLKMAN_VBASE    0xfd200000
#define LUBBOCK_INTCTL_VBASE    0xfd300000
#define LUBBOCK_FFUART_VBASE    0xfd400000
#define LUBBOCK_BTUART_VBASE    0xfd500000
/* FFUART and/or BTUART are mapped to this area when
  used for console or kgdb port */

/*
* Onboard register address
* (offset from LUBBOCK_OBIO_PBASE)
*/
#define LUBBOCK_SYSTEMID        0x0000
#define LUBBOCK_HEXLED          0x0010
#define LUBBOCK_LEDCTL          0x0040
#define LUBBOCK_CONFIGSW        0x0050
#define LUBBOCK_USERSW          0x0060
#define LUBBOCK_MISCWR          0x0080
#define  MISCWR_S1PWR           (3U<<14)
#define  MISCWR_LCDDISP         (1U<<8)
#define  MISCWR_IRDAMODE        (1U<<4) /* 1=FIR, 0=SIR */
#define  MISCWR_GREENLED        (1U<<3)
#define  MISCWR_ENETEN16        (1U<<2)
#define  MISCWR_PCRESET         (1U<<1) /* Processor card reset */
#define  MSICWR_SYSRESET        (1U<<0)
#define LUBBOCK_MISCRD          0x0090
#define LUBBOCK_INTRMASK        0x00c0
#define LUBBOCK_INTRCTL         0x00d0

#define ioreg_read(a)  (*(volatile unsigned *)(a))
#define ioreg_write(a,v)  (*(volatile unsigned *)(a)=(v))

#define ioreg16_read(a)  (*(volatile uint16_t *)(a))
#define ioreg16_write(a,v)  (*(volatile uint16_t *)(a)=(v))

#define ioreg8_read(a)  (*(volatile uint8_t *)(a))
#define ioreg8_write(a,v)  (*(volatile uint8_t *)(a)=(v))

#endif /* _EVBARM_LUBBOCK_REG_H */