/*
 * Copyright (C) 2002 Broadcom Corporation
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that 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_SIBYTE_CARMEL_H
#define __ASM_SIBYTE_CARMEL_H

#include <asm/sibyte/sb1250.h>
#include <asm/sibyte/sb1250_int.h>

#define SIBYTE_BOARD_NAME "Carmel"

#define GPIO_PHY_INTERRUPT	2
#define GPIO_NONMASKABLE_INT	3
#define GPIO_CF_INSERTED	6
#define GPIO_MONTEREY_RESET	7
#define GPIO_QUADUART_INT	8
#define GPIO_CF_INT		9
#define GPIO_FPGA_CCLK		10
#define GPIO_FPGA_DOUT		11
#define GPIO_FPGA_DIN		12
#define GPIO_FPGA_PGM		13
#define GPIO_FPGA_DONE		14
#define GPIO_FPGA_INIT		15

#define LEDS_CS			2
#define LEDS_PHYS		0x100C0000
#define MLEDS_CS		3
#define MLEDS_PHYS		0x100A0000
#define UART_CS			4
#define UART_PHYS		0x100D0000
#define ARAVALI_CS		5
#define ARAVALI_PHYS		0x11000000
#define IDE_CS			6
#define IDE_PHYS		0x100B0000
#define ARAVALI2_CS		7
#define ARAVALI2_PHYS		0x100E0000

#if defined(CONFIG_SIBYTE_CARMEL)
#define K_GPIO_GB_IDE	9
#define K_INT_GB_IDE	(K_INT_GPIO_0 + K_GPIO_GB_IDE)
#endif


#endif /* __ASM_SIBYTE_CARMEL_H */
