#ifndef __ASM_ARCH_MFP_PXA2XX_H
#define __ASM_ARCH_MFP_PXA2XX_H

#include <plat/mfp.h>

/*
 * the following MFP_xxx bit definitions in mfp.h are re-used for pxa2xx:
 *
 *  MFP_PIN(x)
 *  MFP_AFx
 *  MFP_LPM_DRIVE_{LOW, HIGH}
 *  MFP_LPM_EDGE_x
 *
 * other MFP_x bit definitions will be ignored
 *
 * and adds the below two bits specifically for pxa2xx:
 *
 * bit     23 - Input/Output (PXA2xx specific)
 * bit     24 - Wakeup Enable(PXA2xx specific)
 */

#define MFP_DIR_IN		(0x0 << 23)
#define MFP_DIR_OUT		(0x1 << 23)
#define MFP_DIR_MASK		(0x1 << 23)
#define MFP_DIR(x)		(((x) >> 23) & 0x1)

#define MFP_LPM_CAN_WAKEUP	(0x1 << 24)
#define WAKEUP_ON_EDGE_RISE	(MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_RISE)
#define WAKEUP_ON_EDGE_FALL	(MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_FALL)
#define WAKEUP_ON_EDGE_BOTH	(MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_BOTH)

/* specifically for enabling wakeup on keypad GPIOs */
#define WAKEUP_ON_LEVEL_HIGH	(MFP_LPM_CAN_WAKEUP)

#define MFP_CFG_IN(pin, af)		\
	((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DIR_MASK)) |\
	 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_DIR_IN))

/* NOTE:  pins configured as output _must_ provide a low power state,
 * and this state should help to minimize the power dissipation.
 */
#define MFP_CFG_OUT(pin, af, state)	\
	((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DIR_MASK | MFP_LPM_STATE_MASK)) |\
	 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_DIR_OUT | MFP_LPM_##state))

/* Common configurations for pxa25x and pxa27x
 *
 * Note: pins configured as GPIO are always initialized to input
 * so not to cause any side effect
 */
#define GPIO0_GPIO	MFP_CFG_IN(GPIO0, AF0)
#define GPIO1_GPIO	MFP_CFG_IN(GPIO1, AF0)
#define GPIO9_GPIO	MFP_CFG_IN(GPIO9, AF0)
#define GPIO10_GPIO	MFP_CFG_IN(GPIO10, AF0)
#define GPIO11_GPIO	MFP_CFG_IN(GPIO11, AF0)
#define GPIO12_GPIO	MFP_CFG_IN(GPIO12, AF0)
#define GPIO13_GPIO	MFP_CFG_IN(GPIO13, AF0)
#define GPIO14_GPIO	MFP_CFG_IN(GPIO14, AF0)
#define GPIO15_GPIO	MFP_CFG_IN(GPIO15, AF0)
#define GPIO16_GPIO	MFP_CFG_IN(GPIO16, AF0)
#define GPIO17_GPIO	MFP_CFG_IN(GPIO17, AF0)
#define GPIO18_GPIO	MFP_CFG_IN(GPIO18, AF0)
#define GPIO19_GPIO	MFP_CFG_IN(GPIO19, AF0)
#define GPIO20_GPIO	MFP_CFG_IN(GPIO20, AF0)
#define GPIO21_GPIO	MFP_CFG_IN(GPIO21, AF0)
#define GPIO22_GPIO	MFP_CFG_IN(GPIO22, AF0)
#define GPIO23_GPIO	MFP_CFG_IN(GPIO23, AF0)
#define GPIO24_GPIO	MFP_CFG_IN(GPIO24, AF0)
#define GPIO25_GPIO	MFP_CFG_IN(GPIO25, AF0)
#define GPIO26_GPIO	MFP_CFG_IN(GPIO26, AF0)
#define GPIO27_GPIO	MFP_CFG_IN(GPIO27, AF0)
#define GPIO28_GPIO	MFP_CFG_IN(GPIO28, AF0)
#define GPIO29_GPIO	MFP_CFG_IN(GPIO29, AF0)
#define GPIO30_GPIO	MFP_CFG_IN(GPIO30, AF0)
#define GPIO31_GPIO	MFP_CFG_IN(GPIO31, AF0)
#define GPIO32_GPIO	MFP_CFG_IN(GPIO32, AF0)
#define GPIO33_GPIO	MFP_CFG_IN(GPIO33, AF0)
#define GPIO34_GPIO	MFP_CFG_IN(GPIO34, AF0)
#define GPIO35_GPIO	MFP_CFG_IN(GPIO35, AF0)
#define GPIO36_GPIO	MFP_CFG_IN(GPIO36, AF0)
#define GPIO37_GPIO	MFP_CFG_IN(GPIO37, AF0)
#define GPIO38_GPIO	MFP_CFG_IN(GPIO38, AF0)
#define GPIO39_GPIO	MFP_CFG_IN(GPIO39, AF0)
#define GPIO40_GPIO	MFP_CFG_IN(GPIO40, AF0)
#define GPIO41_GPIO	MFP_CFG_IN(GPIO41, AF0)
#define GPIO42_GPIO	MFP_CFG_IN(GPIO42, AF0)
#define GPIO43_GPIO	MFP_CFG_IN(GPIO43, AF0)
#define GPIO44_GPIO	MFP_CFG_IN(GPIO44, AF0)
#define GPIO45_GPIO	MFP_CFG_IN(GPIO45, AF0)
#define GPIO46_GPIO	MFP_CFG_IN(GPIO46, AF0)
#define GPIO47_GPIO	MFP_CFG_IN(GPIO47, AF0)
#define GPIO48_GPIO	MFP_CFG_IN(GPIO48, AF0)
#define GPIO49_GPIO	MFP_CFG_IN(GPIO49, AF0)
#define GPIO50_GPIO	MFP_CFG_IN(GPIO50, AF0)
#define GPIO51_GPIO	MFP_CFG_IN(GPIO51, AF0)
#define GPIO52_GPIO	MFP_CFG_IN(GPIO52, AF0)
#define GPIO53_GPIO	MFP_CFG_IN(GPIO53, AF0)
#define GPIO54_GPIO	MFP_CFG_IN(GPIO54, AF0)
#define GPIO55_GPIO	MFP_CFG_IN(GPIO55, AF0)
#define GPIO56_GPIO	MFP_CFG_IN(GPIO56, AF0)
#define GPIO57_GPIO	MFP_CFG_IN(GPIO57, AF0)
#define GPIO58_GPIO	MFP_CFG_IN(GPIO58, AF0)
#define GPIO59_GPIO	MFP_CFG_IN(GPIO59, AF0)
#define GPIO60_GPIO	MFP_CFG_IN(GPIO60, AF0)
#define GPIO61_GPIO	MFP_CFG_IN(GPIO61, AF0)
#define GPIO62_GPIO	MFP_CFG_IN(GPIO62, AF0)
#define GPIO63_GPIO	MFP_CFG_IN(GPIO63, AF0)
#define GPIO64_GPIO	MFP_CFG_IN(GPIO64, AF0)
#define GPIO65_GPIO	MFP_CFG_IN(GPIO65, AF0)
#define GPIO66_GPIO	MFP_CFG_IN(GPIO66, AF0)
#define GPIO67_GPIO	MFP_CFG_IN(GPIO67, AF0)
#define GPIO68_GPIO	MFP_CFG_IN(GPIO68, AF0)
#define GPIO69_GPIO	MFP_CFG_IN(GPIO69, AF0)
#define GPIO70_GPIO	MFP_CFG_IN(GPIO70, AF0)
#define GPIO71_GPIO	MFP_CFG_IN(GPIO71, AF0)
#define GPIO72_GPIO	MFP_CFG_IN(GPIO72, AF0)
#define GPIO73_GPIO	MFP_CFG_IN(GPIO73, AF0)
#define GPIO74_GPIO	MFP_CFG_IN(GPIO74, AF0)
#define GPIO75_GPIO	MFP_CFG_IN(GPIO75, AF0)
#define GPIO76_GPIO	MFP_CFG_IN(GPIO76, AF0)
#define GPIO77_GPIO	MFP_CFG_IN(GPIO77, AF0)
#define GPIO78_GPIO	MFP_CFG_IN(GPIO78, AF0)
#define GPIO79_GPIO	MFP_CFG_IN(GPIO79, AF0)
#define GPIO80_GPIO	MFP_CFG_IN(GPIO80, AF0)
#define GPIO81_GPIO	MFP_CFG_IN(GPIO81, AF0)
#define GPIO82_GPIO	MFP_CFG_IN(GPIO82, AF0)
#define GPIO83_GPIO	MFP_CFG_IN(GPIO83, AF0)
#define GPIO84_GPIO	MFP_CFG_IN(GPIO84, AF0)

extern void pxa2xx_mfp_config(unsigned long *mfp_cfgs, int num);
extern void pxa2xx_mfp_set_lpm(int mfp, unsigned long lpm);
extern int gpio_set_wake(unsigned int gpio, unsigned int on);
#endif /* __ASM_ARCH_MFP_PXA2XX_H */
