/*
 * Copyright 2010 eXMeritus, A Boeing Company
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#include <asm/mpc85xx_gpio.h>

/* Common CPU A/B GPIOs (GPIO8-GPIO15 and IRQ4-IRQ6) */
#define GPIO_CPU_ID		(1UL << (31 -  8))
#define GPIO_BLUE_LED		(1UL << (31 -  9))
#define GPIO_DIMM_RESET		(1UL << (31 - 10))
#define GPIO_USB_RESET		(1UL << (31 - 11))
#define GPIO_UNUSED_12		(1UL << (31 - 12))
#define GPIO_GETH0_RESET	(1UL << (31 - 13))
#define GPIO_RS422_RE		(1UL << (31 - 14))
#define GPIO_RS422_DE		(1UL << (31 - 15))
#define IRQ_I2CINT		(1UL << (31 - 20))
#define IRQ_FANINT		(1UL << (31 - 21))
#define IRQ_DIMM_EVENT		(1UL << (31 - 22))

#define GPIO_RESETS (GPIO_DIMM_RESET|GPIO_USB_RESET|GPIO_GETH0_RESET)

/* CPU A GPIOS (GPIO0-GPIO7 and IRQ0-IRQ3) */
#define GPIO_CPUA_UNUSED_0	(1UL << (31 -  0))
#define GPIO_CPUA_CPU_READY	(1UL << (31 -  1))
#define GPIO_CPUA_DEBUG_LED2	(1UL << (31 -  2))
#define GPIO_CPUA_DEBUG_LED1	(1UL << (31 -  3))
#define GPIO_CPUA_TDIS2B	(1UL << (31 -  4)) /* MAC 2 TX B */
#define GPIO_CPUA_TDIS2A	(1UL << (31 -  5)) /* MAC 2 TX A */
#define GPIO_CPUA_TDIS1B	(1UL << (31 -  6)) /* MAC 1 TX B */
#define GPIO_CPUA_TDIS1A	(1UL << (31 -  7)) /* MAC 1 TX A */
#define IRQ_CPUA_UNUSED_0	(1UL << (31 - 16))
#define IRQ_CPUA_UNUSED_1	(1UL << (31 - 17))
#define IRQ_CPUA_UNUSED_2	(1UL << (31 - 18))
#define IRQ_CPUA_UNUSED_3	(1UL << (31 - 19))

/* CPU B GPIOS (GPIO0-GPIO7 and IRQ0-IRQ3) */
#define GPIO_CPUB_RMUX_SEL1B	(1UL << (31 -  0))
#define GPIO_CPUB_RMUX_SEL0B	(1UL << (31 -  1))
#define GPIO_CPUB_RMUX_SEL1A	(1UL << (31 -  2))
#define GPIO_CPUB_RMUX_SEL0A	(1UL << (31 -  3))
#define GPIO_CPUB_UNUSED_4	(1UL << (31 -  4))
#define GPIO_CPUB_CPU_READY	(1UL << (31 -  5))
#define GPIO_CPUB_DEBUG_LED2	(1UL << (31 -  6))
#define GPIO_CPUB_DEBUG_LED1	(1UL << (31 -  7))
#define IRQ_CPUB_SD_1A		(1UL << (31 - 16))
#define IRQ_CPUB_SD_2B		(1UL << (31 - 17))
#define IRQ_CPUB_SD_2A		(1UL << (31 - 18))
#define IRQ_CPUB_SD_1B		(1UL << (31 - 19))

/* If it isn't CPU A then it's CPU B */
static inline unsigned int hww1u1a_is_cpu_a(void)
{
	return !mpc85xx_gpio_get(GPIO_CPU_ID);
}
