/*
 *    Copyright (c) 2010-2012 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 DVT and PVT boards.
 *
 */

static struct omap_board_mux j49_prototype_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_MODE7 | OMAP_PIN_OUTPUT		 | OMAP_PIN_OFF_INPUT_PULLDOWN   ), // Unused

	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: ZIG_RESET_L

	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_PULLUP		     | OMAP_PIN_OFF_INPUT_PULLUP ), // GPIO_105

	// Assign CAM_D9 to GPIO_108 used as a push-pull active-low
	// input OFN_EVENT_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_RESET_L 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_MODE0 | OMAP_PIN_INPUT                                        ), // LCD_SPI_CLK
    OMAP3_MUX(MCSPI1_SIMO,      OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT                                       ), // LCD_SPI_MOSI
    OMAP3_MUX(MCSPI1_SOMI,      OMAP_MUX_MODE0 | OMAP_PIN_INPUT                                        ), // LCD_SPI_MISO
	OMAP3_MUX(MCSPI1_CS0,     	OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN                               ), // LCD_SPI_CS_L 

	// Assign MCSPI1_CS3/GPIO_177 to be used as a push-pull, active high 
	// output for the LCD backlight enable pin

	OMAP3_MUX(MCSPI1_CS3,		OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT | OMAP_PIN_OFF_OUTPUT_LOW         ), // LCD_BL_HWEN 

	// McSPI2 used for Zigbee
	OMAP3_MUX(MCSPI2_CLK,       OMAP_MUX_MODE0 | OMAP_PIN_INPUT                                        ), // ZIG_SPI_SCLK
	OMAP3_MUX(MCSPI2_SIMO,      OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT                                       ), // ZIG_SPI_MOSI
	OMAP3_MUX(MCSPI2_SOMI,		OMAP_MUX_MODE0 | OMAP_PIN_INPUT                                        ), // ZIG_SPI_MISO
	OMAP3_MUX(MCSPI2_CS0,       OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT                                       ), // ZIG_SPI_CS_L
	OMAP3_MUX(MCSPI2_CS1,		OMAP_MUX_MODE4 | OMAP_PIN_INPUT | OMAP_PIN_OFF_INPUT_PULLUP            ), // ZIG_INT_L

	// 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_OUTPUT | 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), // UART2_CTS
	OMAP3_MUX(MCBSP3_DR,		OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT		 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // reset
	OMAP3_MUX(MCBSP3_CLKX,		OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT		 | OMAP_PIN_OFF_INPUT_PULLDOWN ), // reset
	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 ), // GPIO_156 
	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 input
	// this is the "REG_EN" override and should not be driven
    // in normal conditions

	OMAP3_MUX(MCBSP1_DX,		OMAP_MUX_MODE7 | OMAP_PIN_INPUT	                                       ), // 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_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	// 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_MODE7 | OMAP_PIN_INPUT_PULLDOWN | OMAP_PIN_OFF_INPUT_PULLDOWN ), // Unused

	{ .reg_offset = OMAP_MUX_TERMINATOR }
};
