/*
 * Common header file for Blackfin family of processors
 *
 * Copyright 2007-2008 Analog Devices Inc.
 *
 * Licensed under the GPL-2 or later.
 */

#ifndef _PORTMUX_H_
#define _PORTMUX_H_

#define P_IDENT(x)	((x) & 0x1FF)
#define P_FUNCT(x)	(((x) & 0x3) << 9)
#define P_FUNCT2MUX(x)	(((x) >> 9) & 0x3)
#define P_DEFINED	0x8000
#define P_UNDEF		0x4000
#define P_MAYSHARE	0x2000
#define P_DONTCARE	0x1000


int peripheral_request(unsigned short per, const char *label);
void peripheral_free(unsigned short per);
int peripheral_request_list(const unsigned short per[], const char *label);
void peripheral_free_list(const unsigned short per[]);

#include <asm/gpio.h>
#include <mach/portmux.h>

#ifndef P_SPORT2_TFS
#define P_SPORT2_TFS P_UNDEF
#endif

#ifndef P_SPORT2_DTSEC
#define P_SPORT2_DTSEC P_UNDEF
#endif

#ifndef P_SPORT2_DTPRI
#define P_SPORT2_DTPRI P_UNDEF
#endif

#ifndef P_SPORT2_TSCLK
#define P_SPORT2_TSCLK P_UNDEF
#endif

#ifndef P_SPORT2_RFS
#define P_SPORT2_RFS P_UNDEF
#endif

#ifndef P_SPORT2_DRSEC
#define P_SPORT2_DRSEC P_UNDEF
#endif

#ifndef P_SPORT2_DRPRI
#define P_SPORT2_DRPRI P_UNDEF
#endif

#ifndef P_SPORT2_RSCLK
#define P_SPORT2_RSCLK P_UNDEF
#endif

#ifndef P_SPORT3_TFS
#define P_SPORT3_TFS P_UNDEF
#endif

#ifndef P_SPORT3_DTSEC
#define P_SPORT3_DTSEC P_UNDEF
#endif

#ifndef P_SPORT3_DTPRI
#define P_SPORT3_DTPRI P_UNDEF
#endif

#ifndef P_SPORT3_TSCLK
#define P_SPORT3_TSCLK P_UNDEF
#endif

#ifndef P_SPORT3_RFS
#define P_SPORT3_RFS P_UNDEF
#endif

#ifndef P_SPORT3_DRSEC
#define P_SPORT3_DRSEC P_UNDEF
#endif

#ifndef P_SPORT3_DRPRI
#define P_SPORT3_DRPRI P_UNDEF
#endif

#ifndef P_SPORT3_RSCLK
#define P_SPORT3_RSCLK P_UNDEF
#endif

#ifndef P_TMR4
#define P_TMR4 P_UNDEF
#endif

#ifndef P_TMR5
#define P_TMR5 P_UNDEF
#endif

#ifndef P_TMR6
#define P_TMR6 P_UNDEF
#endif

#ifndef P_TMR7
#define P_TMR7 P_UNDEF
#endif

#ifndef P_TWI1_SCL
#define P_TWI1_SCL P_UNDEF
#endif

#ifndef P_TWI1_SDA
#define P_TWI1_SDA P_UNDEF
#endif

#ifndef P_UART3_RTS
#define P_UART3_RTS P_UNDEF
#endif

#ifndef P_UART3_CTS
#define P_UART3_CTS P_UNDEF
#endif

#ifndef P_UART2_TX
#define P_UART2_TX P_UNDEF
#endif

#ifndef P_UART2_RX
#define P_UART2_RX P_UNDEF
#endif

#ifndef P_UART3_TX
#define P_UART3_TX P_UNDEF
#endif

#ifndef P_UART3_RX
#define P_UART3_RX P_UNDEF
#endif

#ifndef P_SPI2_SS
#define P_SPI2_SS P_UNDEF
#endif

#ifndef P_SPI2_SSEL1
#define P_SPI2_SSEL1 P_UNDEF
#endif

#ifndef P_SPI2_SSEL2
#define P_SPI2_SSEL2 P_UNDEF
#endif

#ifndef P_SPI2_SSEL3
#define P_SPI2_SSEL3 P_UNDEF
#endif

#ifndef P_SPI2_SSEL4
#define P_SPI2_SSEL4 P_UNDEF
#endif

#ifndef P_SPI2_SSEL5
#define P_SPI2_SSEL5 P_UNDEF
#endif

#ifndef P_SPI2_SSEL6
#define P_SPI2_SSEL6 P_UNDEF
#endif

#ifndef P_SPI2_SSEL7
#define P_SPI2_SSEL7 P_UNDEF
#endif

#ifndef P_SPI2_SCK
#define P_SPI2_SCK P_UNDEF
#endif

#ifndef P_SPI2_MOSI
#define P_SPI2_MOSI P_UNDEF
#endif

#ifndef P_SPI2_MISO
#define P_SPI2_MISO P_UNDEF
#endif

#ifndef P_TMR0
#define P_TMR0 P_UNDEF
#endif

#ifndef P_TMR1
#define P_TMR1 P_UNDEF
#endif

#ifndef P_TMR2
#define P_TMR2 P_UNDEF
#endif

#ifndef P_TMR3
#define P_TMR3 P_UNDEF
#endif

#ifndef P_SPORT0_TFS
#define P_SPORT0_TFS P_UNDEF
#endif

#ifndef P_SPORT0_DTSEC
#define P_SPORT0_DTSEC P_UNDEF
#endif

#ifndef P_SPORT0_DTPRI
#define P_SPORT0_DTPRI P_UNDEF
#endif

#ifndef P_SPORT0_TSCLK
#define P_SPORT0_TSCLK P_UNDEF
#endif

#ifndef P_SPORT0_RFS
#define P_SPORT0_RFS P_UNDEF
#endif

#ifndef P_SPORT0_DRSEC
#define P_SPORT0_DRSEC P_UNDEF
#endif

#ifndef P_SPORT0_DRPRI
#define P_SPORT0_DRPRI P_UNDEF
#endif

#ifndef P_SPORT0_RSCLK
#define P_SPORT0_RSCLK P_UNDEF
#endif

#ifndef P_SD_D0
#define P_SD_D0 P_UNDEF
#endif

#ifndef P_SD_D1
#define P_SD_D1 P_UNDEF
#endif

#ifndef P_SD_D2
#define P_SD_D2 P_UNDEF
#endif

#ifndef P_SD_D3
#define P_SD_D3 P_UNDEF
#endif

#ifndef P_SD_CLK
#define P_SD_CLK P_UNDEF
#endif

#ifndef P_SD_CMD
#define P_SD_CMD P_UNDEF
#endif

#ifndef P_MMCLK
#define P_MMCLK P_UNDEF
#endif

#ifndef P_MBCLK
#define P_MBCLK P_UNDEF
#endif

#ifndef P_PPI1_D0
#define P_PPI1_D0 P_UNDEF
#endif

#ifndef P_PPI1_D1
#define P_PPI1_D1 P_UNDEF
#endif

#ifndef P_PPI1_D2
#define P_PPI1_D2 P_UNDEF
#endif

#ifndef P_PPI1_D3
#define P_PPI1_D3 P_UNDEF
#endif
