/*
 *    Copyright (c) 2010-2011 Nest, Inc.
 *
 *      Author: Grant Erickson <grant@nestlabs.com>
 *
 *    This program is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU General Public License
 *    version 2 as published by the Free Software Foundation.
 *
 *    Description:
 *      This file implements the pin multiplexer settings for the Nest
 *      Diamond EVT boards.
 *
 */

static struct omap_board_mux diamond_evt_mux[] __initdata = {
	OMAP3_MUX(SYS_NIRQ,			OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP   | OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),

	// SDRC
	OMAP3_MUX(SDRC_A13,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_A14,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D31,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D31,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D30,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D29,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D28,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D27,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D26,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D25,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D24,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D23,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D22,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D21,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D20,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D19,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D18,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D17,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_D16,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_CKE1,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_NCS1,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_DM2,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_DM3,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_DQS2,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDRC_DQS3,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// DSS
	OMAP3_MUX(DSS_ACBIAS,		OMAP_MUX_MODE0							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_ACBIAS
	OMAP3_MUX(DSS_PCLK,			OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_PCLK
	OMAP3_MUX(DSS_HSYNC,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_HSYNC
	OMAP3_MUX(DSS_VSYNC,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_VSYNC
	OMAP3_MUX(DSS_DATA0,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA0
	OMAP3_MUX(DSS_DATA1,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA1
	OMAP3_MUX(DSS_DATA2,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA2
	OMAP3_MUX(DSS_DATA3,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA3
	OMAP3_MUX(DSS_DATA4,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA4
	OMAP3_MUX(DSS_DATA5,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA5
	OMAP3_MUX(DSS_DATA6,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA6
	OMAP3_MUX(DSS_DATA7,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA7
	OMAP3_MUX(DSS_DATA8,		OMAP_MUX_MODE0							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA8
	OMAP3_MUX(DSS_DATA9,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA9
	OMAP3_MUX(DSS_DATA10,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA10
	OMAP3_MUX(DSS_DATA11,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA11
	OMAP3_MUX(DSS_DATA12,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA12
	OMAP3_MUX(DSS_DATA13,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA13
	OMAP3_MUX(DSS_DATA14,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA14
	OMAP3_MUX(DSS_DATA15,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA15
	OMAP3_MUX(DSS_DATA16,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA16
	OMAP3_MUX(DSS_DATA17,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA17
	OMAP3_MUX(DSS_DATA18,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA18
	OMAP3_MUX(DSS_DATA19,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA19
	OMAP3_MUX(DSS_DATA20,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA20
	OMAP3_MUX(DSS_DATA21,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA21
	OMAP3_MUX(DSS_DATA22,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA22
	OMAP3_MUX(DSS_DATA23,		OMAP_MUX_MODE0 							 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // DSS_DATA23

	// MMC1
	OMAP3_MUX(SDMMC1_CLK,		OMAP_MUX_MODE7  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // Unused
	OMAP3_MUX(SDMMC1_CMD,		OMAP_MUX_MODE7  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // Unused
	OMAP3_MUX(SDMMC1_DAT0,		OMAP_MUX_MODE7  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // Unused
	OMAP3_MUX(SDMMC1_DAT1,		OMAP_MUX_MODE7  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // Unused
	OMAP3_MUX(SDMMC1_DAT2,		OMAP_MUX_MODE7  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // Unused
	OMAP3_MUX(SDMMC1_DAT3,		OMAP_MUX_MODE7  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // Unused

	OMAP3_MUX(GPIO_126,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused 
	OMAP3_MUX(GPIO_129,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// MMC2
	OMAP3_MUX(SDMMC2_CLK,		OMAP_MUX_MODE0  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // 
	OMAP3_MUX(SDMMC2_CMD,		OMAP_MUX_MODE0  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // 
	OMAP3_MUX(SDMMC2_DAT0,		OMAP_MUX_MODE0  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // 
	OMAP3_MUX(SDMMC2_DAT1,		OMAP_MUX_MODE0  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // 
	OMAP3_MUX(SDMMC2_DAT2,		OMAP_MUX_MODE0  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // 
	OMAP3_MUX(SDMMC2_DAT3,		OMAP_MUX_MODE0  						 | OMAP_PIN_OFF_INPUT_PULLUP   ), // 
	OMAP3_MUX(SDMMC2_DAT4,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDMMC2_DAT5,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDMMC2_DAT6,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(SDMMC2_DAT7,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// GPMC
	OMAP3_MUX(GPMC_A1,     		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(GPMC_A2,     		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(GPMC_A3,     		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(GPMC_A4,     		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(GPMC_A5,     		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(GPMC_A6,     		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(GPMC_A7,     		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(GPMC_A8,     		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// Assign GPMC_A9 to GPIO_42 used as a push-pull, active-high
	// output to INTUSB_SUSPEND to the TUSB2551 USB PHY SUSPEND
	// internal circuit deactivation signal.

	OMAP3_MUX(GPMC_A9,			OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT		 | OMAP_PIN_OFF_OUTPUT_HIGH    ), // GPIO_42

	OMAP3_MUX(GPMC_A10,    		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// NAND
	/*
	OMAP3_MUX(GPMC_NCS0,		OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_INPUT_PULLUP),
	// NBO OMAP3_MUX(GPMC_NCS1,  OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_INPUT_PULLUP),
	// NBO OMAP3_MUX(GPMC_NCS2,  OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_INPUT_PULLUP),
	*/

	OMAP3_MUX(GPMC_NCS3,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(GPMC_NCS4,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(GPMC_NCS5,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	/*
	OMAP3_MUX(GPMC_NWE,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_NOE,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_HIGH),
	OMAP3_MUX(GPMC_D0,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D1,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D2,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D3,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D4,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D5,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D6,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D7,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D8,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D9,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D10,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D11,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D12,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D13,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D14,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	OMAP3_MUX(GPMC_D15,			OMAP_MUX_MODE0 | OMAP_PIN_OFF_OUTPUT_LOW),
	*/

	OMAP3_MUX(GPMC_CLK,			OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// Assign GPMC_NBE1 to GPIO_61 used as a push-pull output to the
	// ZigBee active-low reset.

	OMAP3_MUX(GPMC_NBE1,		OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT		 | OMAP_PIN_OFF_OUTPUT_LOW     ), // GPIO_61

	// UART3
	OMAP3_MUX(UART3_CTS_RCTX,	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(UART3_RTS_SD,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(UART3_RX_IRRX,	OMAP_MUX_MODE0 | OMAP_PIN_INPUT          | OMAP_PIN_OFF_INPUT_PULLDOWN ), // UART3_RX_IRRX
	OMAP3_MUX(UART3_TX_IRTX,	OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT         | OMAP_PIN_OFF_INPUT_PULLUP   ), // UART3_TX_IRTX

	// Debug console UART
	OMAP3_MUX(UART1_RTS,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // UART1_RTS
	OMAP3_MUX(UART1_CTS,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // UART1_CTS

	// Camera
	OMAP3_MUX(CAM_XCLKA,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(CAM_XCLKB,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(CAM_PCLK,       	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(CAM_VS,         	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(CAM_HS,         	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(CAM_FLD,        	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(CAM_WEN,        	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(CAM_STROBE,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(CAM_D0,         	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(CAM_D1,         	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// Assign CAM_D2 to GPIO_101 used as a push-pull active-high
	// output OFN_SHUTDOWN to the Avago ADBS A320 Optical Finger
	// Navigation (OFN) sensor SHTDWN input.

	OMAP3_MUX(CAM_D2,		  	OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT         | OMAP_PIN_OFF_INPUT_PULLDOWN ), // GPIO_101

	// Wi-Fi
	//
	// Assign CAM_D3 to GPIO_102 used as a push-pull, active high
	// WL_IRQ interrupt input from the TI WL1270 wireless Ethernet.

	OMAP3_MUX(CAM_D3,			OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE), //GPIO_102
	// Assign CAM_D4 to GPIO_103 used as a push-pull, active high
	// WL_EN enable output to the TI WL1270 wireless Ethernet.

	OMAP3_MUX(CAM_D4,			OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT         | OMAP_PIN_OFF_INPUT_PULLUP   ), // GPIO_103

	// Assign CAM_D6 to GPIO_105 used as a push-pull, active-low input
	// LCD_ID from the LCD module flexible printed circuit.

	OMAP3_MUX(CAM_D6,		  	OMAP_MUX_MODE4 | OMAP_PIN_INPUT		     | OMAP_PIN_OFF_INPUT_PULLDOWN ), // GPIO_105

	// Assign CAM_D9 to GPIO_108 used as a push-pull active-low
	// input OFN_MOTION_L from the Avago ADBS A320 Optical Finger
	// Navigation (OFN) sensor MOTION output.

	OMAP3_MUX(CAM_D9,		  	OMAP_MUX_MODE4 | OMAP_PIN_INPUT		     | OMAP_PIN_OFF_INPUT_PULLDOWN | OMAP_PIN_OFF_WAKEUPENABLE ), // GPIO_108

	// Assign CAM_D10 to GPIO_109 used as a push-pull, active low
	// output LCD_nRESET for the Tianma TM025ZDZ01 LCD reset.

	OMAP3_MUX(CAM_D10,        	OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT         | OMAP_PIN_OFF_INPUT_PULLDOWN ), // GPIO_109

	// Assign CAM_D11 to GPIO_110 used as a push-pull active-low
	// output OFN_RESET_L to the Avago ADBS A320 Optical Finger
	// Navigation (OFN) sensor NRST input.

	OMAP3_MUX(CAM_D11,        	OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT         | OMAP_PIN_OFF_INPUT_PULLDOWN ), // GPIO_110

	OMAP3_MUX(SYS_CLKOUT2,    	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(HDQ_SIO,        	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// McSPI1

	// Surprisingly, per http://e2e.ti.com/support/dsp/
	// omap_applications_processors/f/447/p/54130/193260.aspx#193260,
	// the SPI clock MUST be configured as an input for the SPI
	// interface to work correctly.

	OMAP3_MUX(MCSPI1_CLK,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(MCSPI1_SIMO,    	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(MCSPI1_SOMI,    	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(MCSPI1_CS0,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// Assign MCSPI1_CS3 to MM2_TXDAT used as a push-pull,
	// input/output for the TUSB2551 USB PHY VP/D+ data signal.

	OMAP3_MUX(MCSPI1_CS3,		OMAP_MUX_MODE5 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // MM2_TXDAT

	// McSPI2
	OMAP3_MUX(MCSPI2_CLK,       OMAP_MUX_MODE0 | OMAP_PIN_INPUT                                        ), // MCSPI2_CLK
	OMAP3_MUX(MCSPI2_SIMO,      OMAP_MUX_MODE0 | OMAP_PIN_INPUT                                        ), // MCSPI2_SIMO

	// Assign MCSPI2_SOMI to GPT10_PWM_EVT used as a push-pull pulse
	// width modulated (PWM) signal for the Samsung LMS350DF0[13] /
	// Tianma TM025ZDZ01 backlight control.

	OMAP3_MUX(MCSPI2_SOMI,		OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT                                       ), // GPT10_PWM_EVT

	OMAP3_MUX(MCSPI2_CS0,       OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN                               ), // MCSPI2_CS0

	// Assign MCSPI2_CS1 to MM2_TXEN_N used as a push-pull, active-low
	// output to the TUSB2551 USB PHY OE# output (transmit) enable.

	OMAP3_MUX(MCSPI2_CS1,		OMAP_MUX_MODE5 | OMAP_PIN_OUTPUT		 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // MM2_TXEN_N

	// McBSP2
	OMAP3_MUX(MCBSP2_FSX,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(MCBSP2_CLKX,    	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(MCBSP2_DR,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(MCBSP2_DX,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// Assign MCBSP3 as UART2 (Mode 1) for communication with the
	// ZigBee module.

	OMAP3_MUX(MCBSP3_DX,		OMAP_MUX_MODE1 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // UART2_CTS
	OMAP3_MUX(MCBSP3_DR,		OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT		 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // UART2_RTS
	OMAP3_MUX(MCBSP3_CLKX,		OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT		 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // UART2_TX
	OMAP3_MUX(MCBSP3_FSX,		OMAP_MUX_MODE1 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // UART2_RX

	// JTAG_RTCK ??

	// 32 and 187 are not bonded out in any of the AM3703 packages
	// 52, 53, 
	// 63, 64, 
	// 112, 113, 114, 115, 
	// 127, 128, 
	// 144, 145, 146, 147, 
	// 152, 153, 154, 155, 
	// 175, and 176
	// are non-bonded on the AM3703 CUS
	OMAP3_MUX(CHASSIS_ARMIRQ,	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 32
	OMAP3_MUX(CHASSIS_IVAIRQ,	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 187
	OMAP3_MUX(GPMC_NCS1,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 52
	OMAP3_MUX(GPMC_NCS2,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 53
	OMAP3_MUX(GPMC_WAIT1,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 63
	OMAP3_MUX(GPMC_WAIT2,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 64
	OMAP3_MUX(CSI2_DX0,       	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 112
	OMAP3_MUX(CSI2_DY0,       	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 113
	OMAP3_MUX(CSI2_DX1,       	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 114
	OMAP3_MUX(CSI2_DY1,       	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 115
	OMAP3_MUX(GPIO_127,       	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 127
	OMAP3_MUX(GPIO_128,       	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 128
	OMAP3_MUX(UART2_CTS,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 144
	OMAP3_MUX(UART2_RTS,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 145
	OMAP3_MUX(UART2_TX,       	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 146
	OMAP3_MUX(UART2_RX,       	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 147
	OMAP3_MUX(MCBSP4_CLKX,    	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 152
	OMAP3_MUX(MCBSP4_DR,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 153
	OMAP3_MUX(MCBSP4_DX,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 154
	OMAP3_MUX(MCBSP4_FSX,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 155
	OMAP3_MUX(MCSPI1_CS1,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 175
	OMAP3_MUX(MCSPI1_CS2,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // 176

	// AM37x Device-only High-speed USB (HSUSB) ULPI to the TPS65921 USB 2.0 PHY
	OMAP3_MUX(HSUSB0_DATA0,		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_DATA1,		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_DATA2,		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_DATA3,		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_DATA4,		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_DATA5,		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_DATA6,		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_DATA7,		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_CLK,  		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_STP,  		OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT		 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_DIR,  		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB
	OMAP3_MUX(HSUSB0_NXT,  		OMAP_MUX_MODE0 | OMAP_PIN_INPUT			 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // USB

	// McBSP1
	OMAP3_MUX(MCBSP1_CLKR,    	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(MCBSP1_FSR,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// Assign MCBSP1_DX to GPIO_158 used as a push-pull, active-high
	// output to the ZigBee power supply.

	OMAP3_MUX(MCBSP1_DX,		OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT		 | OMAP_PIN_OFF_OUTPUT_LOW     ), // GPIO_158

	OMAP3_MUX(MCBSP1_DR,      	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(MCBSP_CLKS,     	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// Assign MCBSP1_FSX to GPIO_161 used as a push-pull, active high
	// output BATT_DISCONNECT for the battery management circuit.

	OMAP3_MUX(MCBSP1_FSX,	  	OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT	     | OMAP_PIN_OFF_OUTPUT_LOW     ), // GPIO_161

	OMAP3_MUX(MCBSP1_CLKX,    	OMAP_MUX_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// ETK
	OMAP3_MUX(ETK_CLK,        	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_CTL,        	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D0,         	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D1,         	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D2,         	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D3,         	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D4,         	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D5,         	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D6,         	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D7,         	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D8,         	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D9,         	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D10,        	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D11,        	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D12,        	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused
	OMAP3_MUX(ETK_D13,        	OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// Assign ETK_D15 to MM2_RCV used as a push-pull input from the
	// TUSB2551 USB PHY RCV signal.

	OMAP3_MUX(ETK_D14,			OMAP_MUX_MODE5 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // MM2_RCV

	// Assign ETK_D15 to MM2_TXSE0 used as a push-pull input/output
	// for the TUSB2551 USB PHY VM/D- data signal.

	OMAP3_MUX(ETK_D15,			OMAP_MUX_MODE5 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // MM2_TXSE0

	{ .reg_offset = OMAP_MUX_TERMINATOR }
};
