#ifndef _INCLUDE_CERF_H_
#define _INCLUDE_CERF_H_
#include <linux/config.h>
#ifdef CONFIG_SA1100_CERF_CPLD
// Map sa1100fb.c to sa1100_frontlight.c - Not pretty, but necessary.
#define CERF_BACKLIGHT_ENABLE sa1100_fl_enable
#define CERF_BACKLIGHT_DISABLE sa1100_fl_disable
//
// IO Pins for devices
//
#define CERF_PDA_CPLD 0xf1000000
#define CERF_PDA_CPLD_WRCLRINT (0x0)
#define CERF_PDA_CPLD_BACKLIGHT (0x2)
#define CERF_PDA_CPLD_SOUND_FREQ (0x4)
#define CERF_PDA_CPLD_KEYPAD_A (0x6)
#define CERF_PDA_CPLD_BATTFAULT (0x8)
#define CERF_PDA_CPLD_KEYPAD_B (0xa)
#define CERF_PDA_CPLD_SOUND_ENA (0xc)
#define CERF_PDA_CPLD_SOUND_RESET (0xe)
#define GPIO_CF_BVD2 GPIO_GPIO (5)
#define GPIO_CF_BVD1 GPIO_GPIO (6)
#define GPIO_CF_RESET GPIO_GPIO (7)
#define GPIO_CF_IRQ GPIO_GPIO (8)
#define GPIO_CF_CD GPIO_GPIO (9)
#define GPIO_PWR_SHUTDOWN GPIO_GPIO (25)
#define UCB1200_GPIO_CONT_CS 0x0001
#define UCB1200_GPIO_CONT_DOWN 0x0002
#define UCB1200_GPIO_CONT_INC 0x0004
#define UCB1200_GPIO_CONT_ENA 0x0008
#define UCB1200_GPIO_LCD_RESET 0x0010
#define UCB1200_GPIO_IRDA_ENABLE 0x0020
#define UCB1200_GPIO_BT_ENABLE 0x0040
#define UCB1200_GPIO_L3_DATA 0x0080
#define UCB1200_GPIO_L3_CLOCK 0x0100
#define UCB1200_GPIO_L3_MODE 0x0200
//
// IRQ for devices
//
#define IRQ_UCB1200_CONT_CS IRQ_UCB1200_IO0
#define IRQ_UCB1200_CONT_DOWN IRQ_UCB1200_IO1
#define IRQ_UCB1200_CONT_INC IRQ_UCB1200_IO2
#define IRQ_UCB1200_CONT_ENA IRQ_UCB1200_IO3
#define IRQ_UCB1200_LCD_RESET IRQ_UCB1200_IO4
#define IRQ_UCB1200_IRDA_ENABLE IRQ_UCB1200_IO5
#define IRQ_UCB1200_BT_ENABLE IRQ_UCB1200_IO6
#define IRQ_UCB1200_L3_DATA IRQ_UCB1200_IO7
#define IRQ_UCB1200_L3_CLOCK IRQ_UCB1200_IO8
#define IRQ_UCB1200_L3_MODE IRQ_UCB1200_IO9
#define IRQ_GPIO_CF_BVD2 IRQ_GPIO5
#define IRQ_GPIO_CF_BVD1 IRQ_GPIO6
#define IRQ_GPIO_CF_IRQ IRQ_GPIO8
#define IRQ_GPIO_CF_CD IRQ_GPIO9
//
// Device parameters
//
#define CERF_PDA_CPLD_SOUND_FREQ_8000 (0x01)
#define CERF_PDA_CPLD_SOUND_FREQ_11025 (0x05)
#define CERF_PDA_CPLD_SOUND_FREQ_16000 (0x02)
#define CERF_PDA_CPLD_SOUND_FREQ_22050 (0x06)
#define CERF_PDA_CPLD_SOUND_FREQ_32000 (0x03)
#define CERF_PDA_CPLD_SOUND_FREQ_44100 (0x07)
#define CERF_PDA_CPLD_SOUND_FREQ_48000 (0x0b)
//
// General Functions
//
#define CERF_PDA_CPLD_Get(x, y) (*((char*)(CERF_PDA_CPLD + (x))) & (y))
#define CERF_PDA_CPLD_Set(x, y, z) (*((char*)(CERF_PDA_CPLD + (x))) = (*((char*)(CERF_PDA_CPLD + (x))) & ~(z)) | (y))
#define CERF_PDA_CPLD_UnSet(x, y, z) (*((char*)(CERF_PDA_CPLD + (x))) = (*((char*)(CERF_PDA_CPLD + (x))) & ~(z)) & ~(y))
#else // CONFIG_SA1100_CERF_CPLD
#define GPIO_CF_BVD2 GPIO_GPIO (19)
#define GPIO_CF_BVD1 GPIO_GPIO (20)
#define GPIO_CF_RESET 0
#define GPIO_CF_IRQ GPIO_GPIO (22)
#define GPIO_CF_CD GPIO_GPIO (23)
#define GPIO_LCD_RESET GPIO_GPIO (15)
#define IRQ_GPIO_CF_BVD2 IRQ_GPIO19
#define IRQ_GPIO_CF_BVD1 IRQ_GPIO20
#define IRQ_GPIO_CF_IRQ IRQ_GPIO22
#define IRQ_GPIO_CF_CD IRQ_GPIO23
#endif // CONFIG_SA1100_CERF_CPLD
#define GPIO_UCB1200_IRQ GPIO_GPIO (18)
#define IRQ_GPIO_UCB1200_IRQ IRQ_GPIO18
#endif // _INCLUDE_CERF_H_