blob: 11a4140d7dc0c6aa2ec69d0ec4b989ee2a739f39 [file] [log] [blame]
/*
* Copyright (c) 2010-2011 Nest Labs, Inc.
*
* (C) Copyright 2008
* Nishanth Menon <menon.nishanth@gmail.com>
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
* Description:
* This file is the board-specific set-up for the Nest Learning
* Thermostat board, based on the TI OMAP3 AM3703ACUS, focusing
* primarily I/O pad multiplexer configuration.
*
* This is originally inherited and split from the OMAP3 EVM
* board file.
*/
#include <common.h>
#include <asm/arch/omap3.h>
#include <asm/io.h>
#include <asm/arch/mux.h>
/*
* void set_muxconf_regs()
*
* Description:
* This routines sets the I/O pad multiplexers for UART, GPMC, SDRC,
* GPIO.
*
* The commented string gives the final mux configuration for that
* pin.
*
* NOTE: Only generic model product configuration should be set
* here. Per-revision configuration is handled in diamond.c.
*
* Input(s):
* N/A
*
* Output(s):
* N/A
*
* Returns:
* N/A
*/
void
set_muxconf_regs(void)
{
/*
* The bit fields for these settings are as follows:
*
* I{EN,DIS} - Input Enable/Disable
* PT[DU] - Pull-down, -up
* DIS,EN - Pull-down, -up disabled/enabled
* M[01234567] - Configuration mode 0-7
*/
/*
* SDRAM Controller (SDRC)
*
* Most of the SDRC signals are used to drive the Samsung
* K4X51163PI-FCG6 512 Mb x 16-bit (64 MiB) DDR SDRAM. Because we
* interface in 16-bit rather than 32-bit mode, we place the
* unused pins in safe mode (Mode 7).
*/
MUX_VAL(CP(SDRC_D0), (IEN | PTD | DIS | M0)); // SDRC_D0
MUX_VAL(CP(SDRC_D1), (IEN | PTD | DIS | M0)); // SDRC_D1
MUX_VAL(CP(SDRC_D2), (IEN | PTD | DIS | M0)); // SDRC_D2
MUX_VAL(CP(SDRC_D3), (IEN | PTD | DIS | M0)); // SDRC_D3
MUX_VAL(CP(SDRC_D4), (IEN | PTD | DIS | M0)); // SDRC_D4
MUX_VAL(CP(SDRC_D5), (IEN | PTD | DIS | M0)); // SDRC_D5
MUX_VAL(CP(SDRC_D6), (IEN | PTD | DIS | M0)); // SDRC_D6
MUX_VAL(CP(SDRC_D7), (IEN | PTD | DIS | M0)); // SDRC_D7
MUX_VAL(CP(SDRC_D8), (IEN | PTD | DIS | M0)); // SDRC_D8
MUX_VAL(CP(SDRC_D9), (IEN | PTD | DIS | M0)); // SDRC_D9
MUX_VAL(CP(SDRC_D10), (IEN | PTD | DIS | M0)); // SDRC_D10
MUX_VAL(CP(SDRC_D11), (IEN | PTD | DIS | M0)); // SDRC_D11
MUX_VAL(CP(SDRC_D12), (IEN | PTD | DIS | M0)); // SDRC_D12
MUX_VAL(CP(SDRC_D13), (IEN | PTD | DIS | M0)); // SDRC_D13
MUX_VAL(CP(SDRC_D14), (IEN | PTD | DIS | M0)); // SDRC_D14
MUX_VAL(CP(SDRC_D15), (IEN | PTD | DIS | M0)); // SDRC_D15
// Because we interface SDRAM in 16-bit mode, place
// SDRC_DATA[31:16] in safe mode (Mode 7).
MUX_VAL(CP(SDRC_D16), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D17), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D18), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D19), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D20), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D21), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D22), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D23), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D24), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D25), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D26), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D27), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D28), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D29), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D30), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_D31), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_CLK), (IEN | PTD | DIS | M0)); // SDRC_CLK
MUX_VAL(CP(SDRC_DQS0), (IEN | PTD | DIS | M0)); // SDRC_DQS0
MUX_VAL(CP(SDRC_DQS1), (IEN | PTD | DIS | M0)); // SDRC_DQS1
// Place unused DQ pins in safe mode (Mode 7).
MUX_VAL(CP(SDRC_DQS2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_DQS3), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(SDRC_CKE0), (IDIS | PTU | EN | M0)); // SDRC_CKE0
// Place the unused clock-enable 1 pin in safe mode (Mode 7).
MUX_VAL(CP(SDRC_CKE1), (IDIS | PTD | DIS | M7)); // Unused
/*
* General Purpose Memory Controller (GPMC)
*
*/
MUX_VAL(CP(GPMC_A1), (IDIS | PTU | EN | M0)); // GPMC_A1
MUX_VAL(CP(GPMC_A2), (IDIS | PTU | EN | M0)); // GPMC_A2
MUX_VAL(CP(GPMC_A3), (IDIS | PTU | EN | M0)); // GPMC_A3
MUX_VAL(CP(GPMC_A4), (IDIS | PTU | EN | M0)); // GPMC_A4
MUX_VAL(CP(GPMC_A5), (IDIS | PTU | EN | M0)); // GPMC_A5
MUX_VAL(CP(GPMC_A6), (IDIS | PTU | EN | M0)); // GPMC_A6
MUX_VAL(CP(GPMC_A7), (IDIS | PTU | EN | M0)); // GPMC_A7
// Place the unused GPMC_A8 pin in safe mode (Mode 7).
MUX_VAL(CP(GPMC_A8), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(GPMC_A9), (IEN | PTD | DIS | M4)); // GPIO_42
MUX_VAL(CP(GPMC_A10), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(GPMC_D0), (IEN | PTU | EN | M0)); // GPMC_D0
MUX_VAL(CP(GPMC_D1), (IEN | PTU | EN | M0)); // GPMC_D1
MUX_VAL(CP(GPMC_D2), (IEN | PTU | EN | M0)); // GPMC_D2
MUX_VAL(CP(GPMC_D3), (IEN | PTU | EN | M0)); // GPMC_D3
MUX_VAL(CP(GPMC_D4), (IEN | PTU | EN | M0)); // GPMC_D4
MUX_VAL(CP(GPMC_D5), (IEN | PTU | EN | M0)); // GPMC_D5
MUX_VAL(CP(GPMC_D6), (IEN | PTU | EN | M0)); // GPMC_D6
MUX_VAL(CP(GPMC_D7), (IEN | PTU | EN | M0)); // GPMC_D7
MUX_VAL(CP(GPMC_D8), (IEN | PTU | EN | M0)); // GPMC_D8
MUX_VAL(CP(GPMC_D9), (IEN | PTU | EN | M0)); // GPMC_D9
MUX_VAL(CP(GPMC_D10), (IEN | PTU | EN | M0)); // GPMC_D10
MUX_VAL(CP(GPMC_D11), (IEN | PTU | EN | M0)); // GPMC_D11
MUX_VAL(CP(GPMC_D12), (IEN | PTU | EN | M0)); // GPMC_D12
MUX_VAL(CP(GPMC_D13), (IEN | PTU | EN | M0)); // GPMC_D13
MUX_VAL(CP(GPMC_D14), (IEN | PTU | EN | M0)); // GPMC_D14
MUX_VAL(CP(GPMC_D15), (IEN | PTU | EN | M0)); // GPMC_D15
MUX_VAL(CP(GPMC_NCS0), (IDIS | PTU | EN | M0)); // GPMC_nCS0
MUX_VAL(CP(GPMC_NCS1), (IDIS | PTU | EN | M0)); // GPMC_nCS1
MUX_VAL(CP(GPMC_NCS2), (IDIS | PTU | EN | M0)); // GPMC_nCS2
MUX_VAL(CP(GPMC_NCS3), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(GPMC_NCS4), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(GPMC_NCS5), (IDIS | PTD | DIS | M7)); // Unused
// Assign GPMC_NCS6 to GPT11_PWM_EVT used as a push-pull pulse width
// modulated (PWM) signal for the piezo.
MUX_VAL(CP(GPMC_NCS6), (IDIS | PTD | DIS | M3)); // GPT11_PWM_EVT
// Assign GPMC_NCS7 to GPIO_58 used as a push-pull output
// PIEZO_NENABLE to the TI SN74LVC2G240 Dual Buffer/Driver With
// 3-State Outputs inputs.
MUX_VAL(CP(GPMC_NCS7), (IDIS | PTD | DIS | M4)); // GPIO_58
MUX_VAL(CP(GPMC_CLK), (IDIS | PTU | EN | M0)); // GPMC_CLK
MUX_VAL(CP(GPMC_NADV_ALE), (IDIS | PTD | DIS | M0)); // GPMC_nADV_ALE
MUX_VAL(CP(GPMC_NOE), (IDIS | PTD | DIS | M0)); // GPMC_nOE
MUX_VAL(CP(GPMC_NWE), (IDIS | PTD | DIS | M0)); // GPMC_nWE
MUX_VAL(CP(GPMC_NBE0_CLE), (IDIS | PTU | EN | M0)); // GPMC_nBE0_CLE
// Assign GPMC_NBE1 to GPIO_61 used as a push-pull output to the
// ZigBee active-low reset.
MUX_VAL(CP(GPMC_NBE1), (IDIS | PTD | DIS | M4)); // GPIO_61
MUX_VAL(CP(GPMC_NWP), (IEN | PTD | DIS | M0)); // GPMC_nWP
MUX_VAL(CP(GPMC_WAIT0), (IEN | PTU | EN | M0)); // GPMC_WAIT0
MUX_VAL(CP(GPMC_WAIT1), (IEN | PTU | EN | M0)); // GPMC_WAIT1
MUX_VAL(CP(GPMC_WAIT2), (IDIS | PTD | DIS | M7)); // Unavailable
// Assign GPMC_WAIT3 to GPIO_65 used as an active-high, push-pull
// backplate detect input.
MUX_VAL(CP(GPMC_WAIT3), (IEN | PTD | DIS | M4)); // GPIO_65
/*
* Display Subsystem (DSS)
*
* All DSS signals are used in their normal, default mode (Mode 0)
* to drive the Samsung LMS350DF0[13] LCD display panel.
*/
MUX_VAL(CP(DSS_PCLK), (IDIS | PTD | DIS | M0)); // DSS_PCLK
MUX_VAL(CP(DSS_HSYNC), (IDIS | PTD | DIS | M0)); // DSS_HSYNC
MUX_VAL(CP(DSS_VSYNC), (IDIS | PTD | DIS | M0)); // DSS_VSYNC
MUX_VAL(CP(DSS_ACBIAS), (IDIS | PTD | DIS | M0)); // DSS_ACBIAS
MUX_VAL(CP(DSS_DATA0), (IDIS | PTD | DIS | M0)); // DSS_DATA0
MUX_VAL(CP(DSS_DATA1), (IDIS | PTD | DIS | M0)); // DSS_DATA1
MUX_VAL(CP(DSS_DATA2), (IDIS | PTD | DIS | M0)); // DSS_DATA2
MUX_VAL(CP(DSS_DATA3), (IDIS | PTD | DIS | M0)); // DSS_DATA3
MUX_VAL(CP(DSS_DATA4), (IDIS | PTD | DIS | M0)); // DSS_DATA4
MUX_VAL(CP(DSS_DATA5), (IDIS | PTD | DIS | M0)); // DSS_DATA5
MUX_VAL(CP(DSS_DATA6), (IDIS | PTD | DIS | M0)); // DSS_DATA6
MUX_VAL(CP(DSS_DATA7), (IDIS | PTD | DIS | M0)); // DSS_DATA7
MUX_VAL(CP(DSS_DATA8), (IDIS | PTD | DIS | M0)); // DSS_DATA8
MUX_VAL(CP(DSS_DATA9), (IDIS | PTD | DIS | M0)); // DSS_DATA9
MUX_VAL(CP(DSS_DATA10), (IDIS | PTD | DIS | M0)); // DSS_DATA10
MUX_VAL(CP(DSS_DATA11), (IDIS | PTD | DIS | M0)); // DSS_DATA11
MUX_VAL(CP(DSS_DATA12), (IDIS | PTD | DIS | M0)); // DSS_DATA12
MUX_VAL(CP(DSS_DATA13), (IDIS | PTD | DIS | M0)); // DSS_DATA13
MUX_VAL(CP(DSS_DATA14), (IDIS | PTD | DIS | M0)); // DSS_DATA14
MUX_VAL(CP(DSS_DATA15), (IDIS | PTD | DIS | M0)); // DSS_DATA15
MUX_VAL(CP(DSS_DATA16), (IDIS | PTD | DIS | M0)); // DSS_DATA16
MUX_VAL(CP(DSS_DATA17), (IDIS | PTD | DIS | M0)); // DSS_DATA17
MUX_VAL(CP(DSS_DATA18), (IDIS | PTD | DIS | M0)); // DSS_DATA18
MUX_VAL(CP(DSS_DATA19), (IDIS | PTD | DIS | M0)); // DSS_DATA19
MUX_VAL(CP(DSS_DATA20), (IDIS | PTD | DIS | M0)); // DSS_DATA20
MUX_VAL(CP(DSS_DATA21), (IDIS | PTD | DIS | M0)); // DSS_DATA21
MUX_VAL(CP(DSS_DATA22), (IDIS | PTD | DIS | M0)); // DSS_DATA22
MUX_VAL(CP(DSS_DATA23), (IDIS | PTD | DIS | M0)); // DSS_DATA23
/*
* Camera
*
*/
MUX_VAL(CP(CAM_HS), (IEN | PTU | EN | M0)); // CAM_HS
MUX_VAL(CP(CAM_VS), (IEN | PTU | EN | M0)); // CAM_VS
MUX_VAL(CP(CAM_XCLKA), (IDIS | PTD | DIS | M0)); // CAM_XCLKA
MUX_VAL(CP(CAM_PCLK), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(CAM_FLD), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(CAM_D0), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(CAM_D1), (IEN | PTD | DIS | M0)); // CAM_D1
MUX_VAL(CP(CAM_D2), (IDIS | PTD | DIS | M7)); // Unused
// Assign CAM_D3 to GPIO_102 used as a push-pull, active high
// WL_IRQ interrupt input from the TI WL1270 wireless Ethernet.
MUX_VAL(CP(CAM_D3), (IEN | PTD | DIS | M4)); // 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.
MUX_VAL(CP(CAM_D4), (IDIS | PTD | DIS | M4)); // GPIO_103
// Assign CAM_D5 to GPIO_104 used as a push-pull, active high
// enable output to the backplate 3.3v supply.
MUX_VAL(CP(CAM_D5), (IDIS | PTD | DIS | M4)); // GPIO_104
MUX_VAL(CP(CAM_D7), (IEN | PTD | DIS | M7)); // Unused
MUX_VAL(CP(CAM_D8), (IEN | PTD | DIS | M7)); // Unused
MUX_VAL(CP(CAM_XCLKB), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(CAM_WEN), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(CAM_STROBE), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(CSI2_DX0), (IEN | PTD | DIS | M0)); // CSI2_DX0
MUX_VAL(CP(CSI2_DY0), (IEN | PTD | DIS | M0)); // CSI2_DY0
MUX_VAL(CP(CSI2_DX1), (IEN | PTD | DIS | M0)); // CSI2_DX1
MUX_VAL(CP(CSI2_DY1), (IEN | PTD | DIS | M0)); // CSI2_DY1
/*
* Multimedia Card (MMC)
*
* Channel 1: Secure Digital (SD) Slot
* Channel 2: Texas Instruments WL1270 802.11 b/g/n Wireless Ethernet
*/
MUX_VAL(CP(MMC1_CLK), (IDIS | PTU | EN | M0)); // MMC1_CLK
MUX_VAL(CP(MMC1_CMD), (IEN | PTU | EN | M0)); // MMC1_CMD
MUX_VAL(CP(MMC1_DAT0), (IEN | PTU | EN | M0)); // MMC1_DAT0
MUX_VAL(CP(MMC1_DAT1), (IEN | PTU | EN | M0)); // MMC1_DAT1
MUX_VAL(CP(MMC1_DAT2), (IEN | PTU | EN | M0)); // MMC1_DAT2
MUX_VAL(CP(MMC1_DAT3), (IEN | PTU | EN | M0)); // MMC1_DAT3
MUX_VAL(CP(MMC1_DAT4), (IEN | PTU | EN | M0)); // MMC1_DAT4
MUX_VAL(CP(MMC1_DAT5), (IEN | PTU | EN | M0)); // MMC1_DAT5
MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)); // MMC1_DAT6
MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)); // MMC1_DAT7
MUX_VAL(CP(MMC2_CLK), (IEN | PTD | DIS | M0)); // MMC2_CLK
MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)); // MMC2_CMD
MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)); // MMC2_DAT0
MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)); // MMC2_DAT1
MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)); // MMC2_DAT2
MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)); // MMC2_DAT3
MUX_VAL(CP(MMC2_DAT4), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(MMC2_DAT5), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(MMC2_DAT6), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(MMC2_DAT7), (IDIS | PTD | DIS | M7)); // Unused
/*
* Universal Asynchronous Receiver / Transmitter (UART)
*
*/
MUX_VAL(CP(UART1_TX), (IDIS | PTD | DIS | M0)); // UART1_TX
/* The MSP430 does not use HW flow control */
MUX_VAL(CP(UART1_RTS), (IEN | PTD | EN | M7)); // Unused
MUX_VAL(CP(UART1_CTS), (IEN | PTU | EN | M7)); // Unused
MUX_VAL(CP(UART1_RX), (IEN | PTD | DIS | M0)); // UART1_RX
MUX_VAL(CP(UART2_CTS), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(UART2_RTS), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(UART2_RX), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(UART3_CTS_RCTX), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(UART3_RTS_SD), (IDIS | PTD | DIS | M0)); // UART3_RTS_SD
MUX_VAL(CP(UART3_RX_IRRX), (IEN | PTD | DIS | M0)); // UART3_RX_IRRX
MUX_VAL(CP(UART3_TX_IRTX), (IDIS | PTD | DIS | M0)); // UART3_TX_IRTX
/*
* Multi-channel Buffered Serial Port (MCBSP)
*
*/
MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTD | DIS | M0)); // MCBSP1_CLKR
MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M0)); // MCBSP1_DR
MUX_VAL(CP(MCBSP_CLKS), (IEN | PTD | DIS | M0)); // MCBSP_CLKS
MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(MCBSP2_FSX), (IEN | PTD | DIS | M0)); // MCBSP2_FSX
MUX_VAL(CP(MCBSP2_CLKX), (IEN | PTD | DIS | M0)); // MCBSP2_CLKX
MUX_VAL(CP(MCBSP2_DR), (IEN | PTD | DIS | M0)); // MCBSP2_DR
MUX_VAL(CP(MCBSP2_DX), (IDIS | PTD | DIS | M0)); // MCBSP2_DX
// Assign MCBSP3 as UART2 (Mode 1) for communication with the
// ZigBee module.
MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)); // UART2_CTS
MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)); // UART2_RTS
MUX_VAL(CP(MCBSP3_CLKX), (IDIS | PTD | DIS | M1)); // UART2_TX
MUX_VAL(CP(MCBSP3_FSX), (IEN | PTD | DIS | M1)); // UART2_RX
// MCBSP4 is unavailable on the DM3730CUS package. Place all of
// the associated pins in safe mode (Mode 7).
MUX_VAL(CP(MCBSP4_CLKX), (IDIS | PTD | DIS | M7)); // Unavailable
MUX_VAL(CP(MCBSP4_DR), (IDIS | PTD | DIS | M7)); // Unavailable
MUX_VAL(CP(MCBSP4_DX), (IDIS | PTD | DIS | M7)); // Unavailable
MUX_VAL(CP(MCBSP4_FSX), (IDIS | PTD | DIS | M7)); // Unavailable
/*
* Universal Serial Bus (USB)
*
*/
MUX_VAL(CP(HSUSB0_CLK), (IEN | PTD | DIS | M0)); // HSUSB0_CLK
MUX_VAL(CP(HSUSB0_STP), (IDIS | PTU | EN | M0)); // HSUSB0_STP
MUX_VAL(CP(HSUSB0_DIR), (IEN | PTD | DIS | M0)); // HSUSB0_DIR
MUX_VAL(CP(HSUSB0_NXT), (IEN | PTD | DIS | M0)); // HSUSB0_NXT
MUX_VAL(CP(HSUSB0_DATA0), (IEN | PTD | DIS | M0)); // HSUSB0_DATA0
MUX_VAL(CP(HSUSB0_DATA1), (IEN | PTD | DIS | M0)); // HSUSB0_DATA1
MUX_VAL(CP(HSUSB0_DATA2), (IEN | PTD | DIS | M0)); // HSUSB0_DATA2
MUX_VAL(CP(HSUSB0_DATA3), (IEN | PTD | DIS | M0)); // HSUSB0_DATA3
MUX_VAL(CP(HSUSB0_DATA4), (IEN | PTD | DIS | M0)); // HSUSB0_DATA4
MUX_VAL(CP(HSUSB0_DATA5), (IEN | PTD | DIS | M0)); // HSUSB0_DATA5
MUX_VAL(CP(HSUSB0_DATA6), (IEN | PTD | DIS | M0)); // HSUSB0_DATA6
MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)); // HSUSB0_DATA7
/*
* I2C
*
* Channel 1:
* - Texas Instruments TPS65921 Power Management Unit (PMU)
*
* Channel 2:
* - Silicon Labs 143 Proximity / Ambient Light Sensor
*
* Channel 3:
* - Unused
*
* Channel 4:
* - Texas Instruments TPS65921 Power Management Unit (PMU)
*/
MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)); // I2C1_SCL
MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)); // I2C1_SDA
MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)); // I2C2_SCL
MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)); // I2C2_SDA
MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M7)); // I2C3_SCL
MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M7)); // I2C3_SDA
MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)); // I2C4_SCL
MUX_VAL(CP(I2C4_SDA), (IEN | PTU | EN | M0)); // I2C4_SDA
MUX_VAL(CP(HDQ_SIO), (IEN | PTU | EN | M0)); // HDQ_SIO
/*
* Multi-channel Serial Peripheral Interface (MCSPI)
*
* Channel 1:
* - Largely unused or unavailable on the DM3730CUS package,
* aside from chip select 3, used as a backplate USB PHY
* signal (Prototype + EVT).
* - Used for input/output to/from the SPI interface of the
* Tianma TM025ZDZ01 LCD display panel (DVT)
*
* Channel 2:
* - Used for output only to drive the SPI interface of the
* Samsung LMS350DF0[13] LCD display panel (Prototype + EVT).
* - The remaining signals are assigned as GPIOs.
*/
// MCSPI1_CS[12] are unavailable in the DM3730CUS package. Place the
// associated pins in safe mode (Mode 7).
MUX_VAL(CP(MCSPI1_CS1), (IDIS | PTD | DIS | M7)); // Unavailable
MUX_VAL(CP(MCSPI1_CS2), (IDIS | PTD | DIS | M7)); // Unavailable
// Assign MCSPI1_CS3 to MM2_TXDAT USB FS/LS Host (Mode 5).
MUX_VAL(CP(MCSPI1_CS3), (IEN | PTD | EN | M5)); // MM2_TXDAT
// Assign MCSPI2_SOMI to GPT10_PWM_EVT used as a push-pull pulse width
// modulated (PWM) signal for the Samsung LMS350DF0[13] backlight
// control.
MUX_VAL(CP(MCSPI2_SOMI), (IDIS | PTD | DIS | M1)); // GPT10_PWM_EVT
// Assign MCSPI2_CS2 to MM2_TXEN_N USB FS/LS Host (Mode 5).
MUX_VAL(CP(MCSPI2_CS1), (IEN | PTD | EN | M5)); // MM2_TXEN_N
/*
* Control and Debug
*
*/
MUX_VAL(CP(SYS_32K), (IEN | PTD | DIS | M0)); // SYS_32K
MUX_VAL(CP(SYS_CLKREQ), (IEN | PTD | DIS | M0)); // SYS_CLKREQ
MUX_VAL(CP(SYS_NIRQ), (IEN | PTU | EN | M0)); // SYS_nIRQ
MUX_VAL(CP(SYS_BOOT0), (IEN | PTD | DIS | M0)); // SYS_BOOT0
MUX_VAL(CP(SYS_BOOT1), (IEN | PTD | DIS | M0)); // SYS_BOOT1
MUX_VAL(CP(SYS_BOOT2), (IEN | PTD | DIS | M0)); // SYS_BOOT2
MUX_VAL(CP(SYS_BOOT3), (IEN | PTD | DIS | M0)); // SYS_BOOT3
MUX_VAL(CP(SYS_BOOT4), (IEN | PTD | DIS | M0)); // SYS_BOOT4
MUX_VAL(CP(SYS_BOOT5), (IEN | PTD | DIS | M0)); // SYS_BOOT5
MUX_VAL(CP(SYS_BOOT6), (IEN | PTD | DIS | M0)); // SYS_BOOT6
MUX_VAL(CP(SYS_OFF_MODE), (IEN | PTD | DIS | M0)); // SYS_OFF_MODE
MUX_VAL(CP(SYS_CLKOUT1), (IDIS | PTU | EN | M0)); // SYS_CLKOUT1
MUX_VAL(CP(SYS_CLKOUT2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(JTAG_nTRST), (IEN | PTD | DIS | M0)); // JTAG_nTRST
MUX_VAL(CP(JTAG_TCK), (IEN | PTD | DIS | M0)); // JTAG_TCK
MUX_VAL(CP(JTAG_TMS), (IEN | PTD | DIS | M0)); // JTAG_TMS
MUX_VAL(CP(JTAG_TDI), (IEN | PTD | DIS | M0)); // JTAG_TDI
MUX_VAL(CP(JTAG_EMU0), (IEN | PTD | DIS | M0)); // JTAG_EMU0
MUX_VAL(CP(JTAG_EMU1), (IEN | PTD | DIS | M0)); // JTAG_EMU1
MUX_VAL(CP(ETK_CLK_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_CTL_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D0_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D1_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D2_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D3_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D4_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D5_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D6_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D7_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D8_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D9_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D10_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D11_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D12_ES2), (IDIS | PTD | DIS | M7)); // Unused
MUX_VAL(CP(ETK_D13_ES2), (IDIS | PTD | DIS | M7)); // Unused
// Assign ETK_D1[45] as MM2_RXRCV and MM2_TXSE0 USB FS/LS Host
// (Mode 5)
MUX_VAL(CP(ETK_D14_ES2), (IEN | PTD | DIS | M5)); // MM2_RXRCV
MUX_VAL(CP(ETK_D15_ES2), (IEN | PTD | DIS | M5)); // MM2_TXSE0
/*
* Die-to-Die
*
*/
MUX_VAL(CP(D2D_MCAD1), (IEN | PTD | EN | M0)); // D2D_MCAD1
MUX_VAL(CP(D2D_MCAD2), (IEN | PTD | EN | M0)); // D2D_MCAD2
MUX_VAL(CP(D2D_MCAD3), (IEN | PTD | EN | M0)); // D2D_MCAD3
MUX_VAL(CP(D2D_MCAD4), (IEN | PTD | EN | M0)); // D2D_MCAD4
MUX_VAL(CP(D2D_MCAD5), (IEN | PTD | EN | M0)); // D2D_MCAD5
MUX_VAL(CP(D2D_MCAD6), (IEN | PTD | EN | M0)); // D2D_MCAD6
MUX_VAL(CP(D2D_MCAD7), (IEN | PTD | EN | M0)); // D2D_MCAD7
MUX_VAL(CP(D2D_MCAD8), (IEN | PTD | EN | M0)); // D2D_MCAD8
MUX_VAL(CP(D2D_MCAD9), (IEN | PTD | EN | M0)); // D2D_MCAD9
MUX_VAL(CP(D2D_MCAD10), (IEN | PTD | EN | M0)); // D2D_MCAD10
MUX_VAL(CP(D2D_MCAD11), (IEN | PTD | EN | M0)); // D2D_MCAD11
MUX_VAL(CP(D2D_MCAD12), (IEN | PTD | EN | M0)); // D2D_MCAD12
MUX_VAL(CP(D2D_MCAD13), (IEN | PTD | EN | M0)); // D2D_MCAD13
MUX_VAL(CP(D2D_MCAD14), (IEN | PTD | EN | M0)); // D2D_MCAD14
MUX_VAL(CP(D2D_MCAD15), (IEN | PTD | EN | M0)); // D2D_MCAD15
MUX_VAL(CP(D2D_MCAD16), (IEN | PTD | EN | M0)); // D2D_MCAD16
MUX_VAL(CP(D2D_MCAD17), (IEN | PTD | EN | M0)); // D2D_MCAD17
MUX_VAL(CP(D2D_MCAD18), (IEN | PTD | EN | M0)); // D2D_MCAD18
MUX_VAL(CP(D2D_MCAD19), (IEN | PTD | EN | M0)); // D2D_MCAD19
MUX_VAL(CP(D2D_MCAD20), (IEN | PTD | EN | M0)); // D2D_MCAD20
MUX_VAL(CP(D2D_MCAD21), (IEN | PTD | EN | M0)); // D2D_MCAD21
MUX_VAL(CP(D2D_MCAD22), (IEN | PTD | EN | M0)); // D2D_MCAD22
MUX_VAL(CP(D2D_MCAD23), (IEN | PTD | EN | M0)); // D2D_MCAD23
MUX_VAL(CP(D2D_MCAD24), (IEN | PTD | EN | M0)); // D2D_MCAD24
MUX_VAL(CP(D2D_MCAD25), (IEN | PTD | EN | M0)); // D2D_MCAD25
MUX_VAL(CP(D2D_MCAD26), (IEN | PTD | EN | M0)); // D2D_MCAD26
MUX_VAL(CP(D2D_MCAD27), (IEN | PTD | EN | M0)); // D2D_MCAD27
MUX_VAL(CP(D2D_MCAD28), (IEN | PTD | EN | M0)); // D2D_MCAD28
MUX_VAL(CP(D2D_MCAD29), (IEN | PTD | EN | M0)); // D2D_MCAD29
MUX_VAL(CP(D2D_MCAD30), (IEN | PTD | EN | M0)); // D2D_MCAD30
MUX_VAL(CP(D2D_MCAD31), (IEN | PTD | EN | M0)); // D2D_MCAD31
MUX_VAL(CP(D2D_MCAD32), (IEN | PTD | EN | M0)); // D2D_MCAD32
MUX_VAL(CP(D2D_MCAD33), (IEN | PTD | EN | M0)); // D2D_MCAD33
MUX_VAL(CP(D2D_MCAD34), (IEN | PTD | EN | M0)); // D2D_MCAD34
MUX_VAL(CP(D2D_MCAD35), (IEN | PTD | EN | M0)); // D2D_MCAD35
MUX_VAL(CP(D2D_MCAD36), (IEN | PTD | EN | M0)); // D2D_MCAD36
MUX_VAL(CP(D2D_CLK26MI), (IEN | PTD | DIS | M0)); // D2D_CLK26MI
MUX_VAL(CP(D2D_NRESPWRON), (IEN | PTD | EN | M0)); // D2D_NRESPWRON
MUX_VAL(CP(D2D_NRESWARM), (IEN | PTU | EN | M0)); // D2D_NRESWARM
MUX_VAL(CP(D2D_ARM9NIRQ), (IEN | PTD | DIS | M0)); // D2D_ARM9NIRQ
MUX_VAL(CP(D2D_UMA2P6FIQ), (IEN | PTD | DIS | M0)); // D2D_UMA2P6FIQ
MUX_VAL(CP(D2D_SPINT), (IEN | PTD | EN | M0)); // D2D_SPINT
MUX_VAL(CP(D2D_FRINT), (IEN | PTD | EN | M0)); // D2D_FRINT
MUX_VAL(CP(D2D_DMAREQ0), (IEN | PTD | DIS | M0)); // D2D_DMAREQ0
MUX_VAL(CP(D2D_DMAREQ1), (IEN | PTD | DIS | M0)); // D2D_DMAREQ1
MUX_VAL(CP(D2D_DMAREQ2), (IEN | PTD | DIS | M0)); // D2D_DMAREQ2
MUX_VAL(CP(D2D_DMAREQ3), (IEN | PTD | DIS | M0)); // D2D_DMAREQ3
MUX_VAL(CP(D2D_N3GTRST), (IEN | PTD | DIS | M0)); // D2D_N3GTRST
MUX_VAL(CP(D2D_N3GTDI), (IEN | PTD | DIS | M0)); // D2D_N3GTDI
MUX_VAL(CP(D2D_N3GTDO), (IEN | PTD | DIS | M0)); // D2D_N3GTDO
MUX_VAL(CP(D2D_N3GTMS), (IEN | PTD | DIS | M0)); // D2D_N3GTMS
MUX_VAL(CP(D2D_N3GTCK), (IEN | PTD | DIS | M0)); // D2D_N3GTCK
MUX_VAL(CP(D2D_N3GRTCK), (IEN | PTD | DIS | M0)); // D2D_N3GRTCK
MUX_VAL(CP(D2D_MSTDBY), (IEN | PTU | EN | M0)); // D2D_MSTDBY
MUX_VAL(CP(D2D_SWAKEUP), (IEN | PTD | EN | M0)); // D2D_SWAKEUP
MUX_VAL(CP(D2D_IDLEREQ), (IEN | PTD | DIS | M0)); // D2D_IDLEREQ
MUX_VAL(CP(D2D_IDLEACK), (IEN | PTU | EN | M0)); // D2D_IDLEACK
MUX_VAL(CP(D2D_MWRITE), (IEN | PTD | DIS | M0)); // D2D_MWRITE
MUX_VAL(CP(D2D_SWRITE), (IEN | PTD | DIS | M0)); // D2D_SWRITE
MUX_VAL(CP(D2D_MREAD), (IEN | PTD | DIS | M0)); // D2D_MREAD
MUX_VAL(CP(D2D_SREAD), (IEN | PTD | DIS | M0)); // D2D_SREAD
MUX_VAL(CP(D2D_MBUSFLAG), (IEN | PTD | DIS | M0)); // D2D_MBUSFLAG
MUX_VAL(CP(D2D_SBUSFLAG), (IEN | PTD | DIS | M0)); // D2D_SBUSFLAG
}