Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 1 | /* |
Peter De Schrijver | 57be3bd | 2011-12-14 17:03:21 +0200 | [diff] [blame] | 2 | * linux/arch/arm/mach-tegra/pinmux-tegra20-tables.c |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 3 | * |
Peter De Schrijver | 57be3bd | 2011-12-14 17:03:21 +0200 | [diff] [blame] | 4 | * Common pinmux configurations for Tegra20 SoCs |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 5 | * |
| 6 | * Copyright (C) 2010 NVIDIA Corporation |
| 7 | * |
| 8 | * This program is free software; you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License as published by |
| 10 | * the Free Software Foundation; either version 2 of the License, or |
| 11 | * (at your option) any later version. |
| 12 | * |
| 13 | * This program is distributed in the hope that it will be useful, but WITHOUT |
| 14 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| 15 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 16 | * more details. |
| 17 | * |
| 18 | * You should have received a copy of the GNU General Public License along |
| 19 | * with this program; if not, write to the Free Software Foundation, Inc., |
| 20 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
| 21 | */ |
| 22 | |
| 23 | #include <linux/kernel.h> |
| 24 | #include <linux/errno.h> |
| 25 | #include <linux/spinlock.h> |
| 26 | #include <linux/io.h> |
| 27 | #include <linux/init.h> |
| 28 | #include <linux/string.h> |
| 29 | |
| 30 | #include <mach/iomap.h> |
| 31 | #include <mach/pinmux.h> |
Peter De Schrijver | 57be3bd | 2011-12-14 17:03:21 +0200 | [diff] [blame] | 32 | #include <mach/pinmux-tegra20.h> |
Colin Cross | 2ea67fd | 2010-10-04 08:49:49 -0700 | [diff] [blame] | 33 | #include <mach/suspend.h> |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 34 | |
Stephen Warren | 48f2ece | 2011-10-12 09:54:27 -0600 | [diff] [blame] | 35 | #define TRISTATE_REG_A 0x14 |
| 36 | #define PIN_MUX_CTL_REG_A 0x80 |
| 37 | #define PULLUPDOWN_REG_A 0xa0 |
| 38 | #define PINGROUP_REG_A 0x868 |
| 39 | |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 40 | #define DRIVE_PINGROUP(pg_name, r) \ |
| 41 | [TEGRA_DRIVE_PINGROUP_ ## pg_name] = { \ |
| 42 | .name = #pg_name, \ |
Stephen Warren | 48f2ece | 2011-10-12 09:54:27 -0600 | [diff] [blame] | 43 | .reg_bank = 3, \ |
| 44 | .reg = ((r) - PINGROUP_REG_A) \ |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 45 | } |
| 46 | |
Peter De Schrijver | 6996e08 | 2011-12-14 17:03:22 +0200 | [diff] [blame] | 47 | static const struct tegra_drive_pingroup_desc tegra_soc_drive_pingroups[TEGRA_MAX_DRIVE_PINGROUP] = { |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 48 | DRIVE_PINGROUP(AO1, 0x868), |
| 49 | DRIVE_PINGROUP(AO2, 0x86c), |
| 50 | DRIVE_PINGROUP(AT1, 0x870), |
| 51 | DRIVE_PINGROUP(AT2, 0x874), |
| 52 | DRIVE_PINGROUP(CDEV1, 0x878), |
| 53 | DRIVE_PINGROUP(CDEV2, 0x87c), |
| 54 | DRIVE_PINGROUP(CSUS, 0x880), |
| 55 | DRIVE_PINGROUP(DAP1, 0x884), |
| 56 | DRIVE_PINGROUP(DAP2, 0x888), |
| 57 | DRIVE_PINGROUP(DAP3, 0x88c), |
| 58 | DRIVE_PINGROUP(DAP4, 0x890), |
| 59 | DRIVE_PINGROUP(DBG, 0x894), |
| 60 | DRIVE_PINGROUP(LCD1, 0x898), |
| 61 | DRIVE_PINGROUP(LCD2, 0x89c), |
| 62 | DRIVE_PINGROUP(SDMMC2, 0x8a0), |
| 63 | DRIVE_PINGROUP(SDMMC3, 0x8a4), |
| 64 | DRIVE_PINGROUP(SPI, 0x8a8), |
| 65 | DRIVE_PINGROUP(UAA, 0x8ac), |
| 66 | DRIVE_PINGROUP(UAB, 0x8b0), |
| 67 | DRIVE_PINGROUP(UART2, 0x8b4), |
| 68 | DRIVE_PINGROUP(UART3, 0x8b8), |
| 69 | DRIVE_PINGROUP(VI1, 0x8bc), |
| 70 | DRIVE_PINGROUP(VI2, 0x8c0), |
| 71 | DRIVE_PINGROUP(XM2A, 0x8c4), |
| 72 | DRIVE_PINGROUP(XM2C, 0x8c8), |
| 73 | DRIVE_PINGROUP(XM2D, 0x8cc), |
| 74 | DRIVE_PINGROUP(XM2CLK, 0x8d0), |
| 75 | DRIVE_PINGROUP(MEMCOMP, 0x8d4), |
Gary King | 3c3895b | 2010-08-18 00:19:58 -0700 | [diff] [blame] | 76 | DRIVE_PINGROUP(SDIO1, 0x8e0), |
| 77 | DRIVE_PINGROUP(CRT, 0x8ec), |
| 78 | DRIVE_PINGROUP(DDC, 0x8f0), |
| 79 | DRIVE_PINGROUP(GMA, 0x8f4), |
| 80 | DRIVE_PINGROUP(GMB, 0x8f8), |
| 81 | DRIVE_PINGROUP(GMC, 0x8fc), |
| 82 | DRIVE_PINGROUP(GMD, 0x900), |
| 83 | DRIVE_PINGROUP(GME, 0x904), |
| 84 | DRIVE_PINGROUP(OWR, 0x908), |
| 85 | DRIVE_PINGROUP(UAD, 0x90c), |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 86 | }; |
| 87 | |
| 88 | #define PINGROUP(pg_name, vdd, f0, f1, f2, f3, f_safe, \ |
| 89 | tri_r, tri_b, mux_r, mux_b, pupd_r, pupd_b) \ |
| 90 | [TEGRA_PINGROUP_ ## pg_name] = { \ |
| 91 | .name = #pg_name, \ |
| 92 | .vddio = TEGRA_VDDIO_ ## vdd, \ |
| 93 | .funcs = { \ |
| 94 | TEGRA_MUX_ ## f0, \ |
| 95 | TEGRA_MUX_ ## f1, \ |
| 96 | TEGRA_MUX_ ## f2, \ |
| 97 | TEGRA_MUX_ ## f3, \ |
| 98 | }, \ |
| 99 | .func_safe = TEGRA_MUX_ ## f_safe, \ |
Stephen Warren | 48f2ece | 2011-10-12 09:54:27 -0600 | [diff] [blame] | 100 | .tri_bank = 0, \ |
| 101 | .tri_reg = ((tri_r) - TRISTATE_REG_A), \ |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 102 | .tri_bit = tri_b, \ |
Stephen Warren | 48f2ece | 2011-10-12 09:54:27 -0600 | [diff] [blame] | 103 | .mux_bank = 1, \ |
| 104 | .mux_reg = ((mux_r) - PIN_MUX_CTL_REG_A), \ |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 105 | .mux_bit = mux_b, \ |
Stephen Warren | 48f2ece | 2011-10-12 09:54:27 -0600 | [diff] [blame] | 106 | .pupd_bank = 2, \ |
| 107 | .pupd_reg = ((pupd_r) - PULLUPDOWN_REG_A), \ |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 108 | .pupd_bit = pupd_b, \ |
Peter De Schrijver | 31e37a1 | 2011-12-14 17:03:23 +0200 | [diff] [blame] | 109 | .lock_bit = -1, \ |
| 110 | .od_bit = -1, \ |
| 111 | .ioreset_bit = -1, \ |
| 112 | .io_default = -1, \ |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 113 | } |
| 114 | |
Peter De Schrijver | 6996e08 | 2011-12-14 17:03:22 +0200 | [diff] [blame] | 115 | static const struct tegra_pingroup_desc tegra_soc_pingroups[TEGRA_MAX_PINGROUP] = { |
Colin Cross | c5f04b8 | 2010-07-09 15:13:52 -0700 | [diff] [blame] | 116 | PINGROUP(ATA, NAND, IDE, NAND, GMI, RSVD, IDE, 0x14, 0, 0x80, 24, 0xA0, 0), |
| 117 | PINGROUP(ATB, NAND, IDE, NAND, GMI, SDIO4, IDE, 0x14, 1, 0x80, 16, 0xA0, 2), |
| 118 | PINGROUP(ATC, NAND, IDE, NAND, GMI, SDIO4, IDE, 0x14, 2, 0x80, 22, 0xA0, 4), |
| 119 | PINGROUP(ATD, NAND, IDE, NAND, GMI, SDIO4, IDE, 0x14, 3, 0x80, 20, 0xA0, 6), |
| 120 | PINGROUP(ATE, NAND, IDE, NAND, GMI, RSVD, IDE, 0x18, 25, 0x80, 12, 0xA0, 8), |
| 121 | PINGROUP(CDEV1, AUDIO, OSC, PLLA_OUT, PLLM_OUT1, AUDIO_SYNC, OSC, 0x14, 4, 0x88, 2, 0xA8, 0), |
| 122 | PINGROUP(CDEV2, AUDIO, OSC, AHB_CLK, APB_CLK, PLLP_OUT4, OSC, 0x14, 5, 0x88, 4, 0xA8, 2), |
| 123 | PINGROUP(CRTP, LCD, CRT, RSVD, RSVD, RSVD, RSVD, 0x20, 14, 0x98, 20, 0xA4, 24), |
| 124 | PINGROUP(CSUS, VI, PLLC_OUT1, PLLP_OUT2, PLLP_OUT3, VI_SENSOR_CLK, PLLC_OUT1, 0x14, 6, 0x88, 6, 0xAC, 24), |
| 125 | PINGROUP(DAP1, AUDIO, DAP1, RSVD, GMI, SDIO2, DAP1, 0x14, 7, 0x88, 20, 0xA0, 10), |
| 126 | PINGROUP(DAP2, AUDIO, DAP2, TWC, RSVD, GMI, DAP2, 0x14, 8, 0x88, 22, 0xA0, 12), |
| 127 | PINGROUP(DAP3, BB, DAP3, RSVD, RSVD, RSVD, DAP3, 0x14, 9, 0x88, 24, 0xA0, 14), |
| 128 | PINGROUP(DAP4, UART, DAP4, RSVD, GMI, RSVD, DAP4, 0x14, 10, 0x88, 26, 0xA0, 16), |
| 129 | PINGROUP(DDC, LCD, I2C2, RSVD, RSVD, RSVD, RSVD4, 0x18, 31, 0x88, 0, 0xB0, 28), |
| 130 | PINGROUP(DTA, VI, RSVD, SDIO2, VI, RSVD, RSVD4, 0x14, 11, 0x84, 20, 0xA0, 18), |
| 131 | PINGROUP(DTB, VI, RSVD, RSVD, VI, SPI1, RSVD1, 0x14, 12, 0x84, 22, 0xA0, 20), |
| 132 | PINGROUP(DTC, VI, RSVD, RSVD, VI, RSVD, RSVD1, 0x14, 13, 0x84, 26, 0xA0, 22), |
| 133 | PINGROUP(DTD, VI, RSVD, SDIO2, VI, RSVD, RSVD1, 0x14, 14, 0x84, 28, 0xA0, 24), |
| 134 | PINGROUP(DTE, VI, RSVD, RSVD, VI, SPI1, RSVD1, 0x14, 15, 0x84, 30, 0xA0, 26), |
| 135 | PINGROUP(DTF, VI, I2C3, RSVD, VI, RSVD, RSVD4, 0x20, 12, 0x98, 30, 0xA0, 28), |
| 136 | PINGROUP(GMA, NAND, UARTE, SPI3, GMI, SDIO4, SPI3, 0x14, 28, 0x84, 0, 0xB0, 20), |
| 137 | PINGROUP(GMB, NAND, IDE, NAND, GMI, GMI_INT, GMI, 0x18, 29, 0x88, 28, 0xB0, 22), |
| 138 | PINGROUP(GMC, NAND, UARTD, SPI4, GMI, SFLASH, SPI4, 0x14, 29, 0x84, 2, 0xB0, 24), |
| 139 | PINGROUP(GMD, NAND, RSVD, NAND, GMI, SFLASH, GMI, 0x18, 30, 0x88, 30, 0xB0, 26), |
| 140 | PINGROUP(GME, NAND, RSVD, DAP5, GMI, SDIO4, GMI, 0x18, 0, 0x8C, 0, 0xA8, 24), |
| 141 | PINGROUP(GPU, UART, PWM, UARTA, GMI, RSVD, RSVD4, 0x14, 16, 0x8C, 4, 0xA4, 20), |
| 142 | PINGROUP(GPU7, SYS, RTCK, RSVD, RSVD, RSVD, RTCK, 0x20, 11, 0x98, 28, 0xA4, 6), |
| 143 | PINGROUP(GPV, SD, PCIE, RSVD, RSVD, RSVD, PCIE, 0x14, 17, 0x8C, 2, 0xA0, 30), |
| 144 | PINGROUP(HDINT, LCD, HDMI, RSVD, RSVD, RSVD, HDMI, 0x1C, 23, 0x84, 4, 0xAC, 22), |
| 145 | PINGROUP(I2CP, SYS, I2C, RSVD, RSVD, RSVD, RSVD4, 0x14, 18, 0x88, 8, 0xA4, 2), |
| 146 | PINGROUP(IRRX, UART, UARTA, UARTB, GMI, SPI4, UARTB, 0x14, 20, 0x88, 18, 0xA8, 22), |
| 147 | PINGROUP(IRTX, UART, UARTA, UARTB, GMI, SPI4, UARTB, 0x14, 19, 0x88, 16, 0xA8, 20), |
| 148 | PINGROUP(KBCA, SYS, KBC, NAND, SDIO2, EMC_TEST0_DLL, KBC, 0x14, 22, 0x88, 10, 0xA4, 8), |
| 149 | PINGROUP(KBCB, SYS, KBC, NAND, SDIO2, MIO, KBC, 0x14, 21, 0x88, 12, 0xA4, 10), |
| 150 | PINGROUP(KBCC, SYS, KBC, NAND, TRACE, EMC_TEST1_DLL, KBC, 0x18, 26, 0x88, 14, 0xA4, 12), |
| 151 | PINGROUP(KBCD, SYS, KBC, NAND, SDIO2, MIO, KBC, 0x20, 10, 0x98, 26, 0xA4, 14), |
| 152 | PINGROUP(KBCE, SYS, KBC, NAND, OWR, RSVD, KBC, 0x14, 26, 0x80, 28, 0xB0, 2), |
| 153 | PINGROUP(KBCF, SYS, KBC, NAND, TRACE, MIO, KBC, 0x14, 27, 0x80, 26, 0xB0, 0), |
| 154 | PINGROUP(LCSN, LCD, DISPLAYA, DISPLAYB, SPI3, RSVD, RSVD4, 0x1C, 31, 0x90, 12, 0xAC, 20), |
| 155 | PINGROUP(LD0, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 0, 0x94, 0, 0xAC, 12), |
| 156 | PINGROUP(LD1, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 1, 0x94, 2, 0xAC, 12), |
| 157 | PINGROUP(LD10, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 10, 0x94, 20, 0xAC, 12), |
| 158 | PINGROUP(LD11, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 11, 0x94, 22, 0xAC, 12), |
| 159 | PINGROUP(LD12, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 12, 0x94, 24, 0xAC, 12), |
| 160 | PINGROUP(LD13, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 13, 0x94, 26, 0xAC, 12), |
| 161 | PINGROUP(LD14, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 14, 0x94, 28, 0xAC, 12), |
| 162 | PINGROUP(LD15, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 15, 0x94, 30, 0xAC, 12), |
| 163 | PINGROUP(LD16, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 16, 0x98, 0, 0xAC, 12), |
| 164 | PINGROUP(LD17, LCD, DISPLAYA, DISPLAYB, RSVD, RSVD, RSVD4, 0x1C, 17, 0x98, 2, 0xAC, 12), |
| 165 | PINGROUP(LD2, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 2, 0x94, 4, 0xAC, 12), |
| 166 | PINGROUP(LD3, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 3, 0x94, 6, 0xAC, 12), |
| 167 | PINGROUP(LD4, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 4, 0x94, 8, 0xAC, 12), |
| 168 | PINGROUP(LD5, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 5, 0x94, 10, 0xAC, 12), |
| 169 | PINGROUP(LD6, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 6, 0x94, 12, 0xAC, 12), |
| 170 | PINGROUP(LD7, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 7, 0x94, 14, 0xAC, 12), |
| 171 | PINGROUP(LD8, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 8, 0x94, 16, 0xAC, 12), |
| 172 | PINGROUP(LD9, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 9, 0x94, 18, 0xAC, 12), |
| 173 | PINGROUP(LDC, LCD, DISPLAYA, DISPLAYB, RSVD, RSVD, RSVD4, 0x1C, 30, 0x90, 14, 0xAC, 20), |
| 174 | PINGROUP(LDI, LCD, DISPLAYA, DISPLAYB, RSVD, RSVD, RSVD4, 0x20, 6, 0x98, 16, 0xAC, 18), |
| 175 | PINGROUP(LHP0, LCD, DISPLAYA, DISPLAYB, RSVD, RSVD, RSVD4, 0x1C, 18, 0x98, 10, 0xAC, 16), |
| 176 | PINGROUP(LHP1, LCD, DISPLAYA, DISPLAYB, RSVD, RSVD, RSVD4, 0x1C, 19, 0x98, 4, 0xAC, 14), |
| 177 | PINGROUP(LHP2, LCD, DISPLAYA, DISPLAYB, RSVD, RSVD, RSVD4, 0x1C, 20, 0x98, 6, 0xAC, 14), |
| 178 | PINGROUP(LHS, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x20, 7, 0x90, 22, 0xAC, 22), |
| 179 | PINGROUP(LM0, LCD, DISPLAYA, DISPLAYB, SPI3, RSVD, RSVD4, 0x1C, 24, 0x90, 26, 0xAC, 22), |
| 180 | PINGROUP(LM1, LCD, DISPLAYA, DISPLAYB, RSVD, CRT, RSVD3, 0x1C, 25, 0x90, 28, 0xAC, 22), |
| 181 | PINGROUP(LPP, LCD, DISPLAYA, DISPLAYB, RSVD, RSVD, RSVD4, 0x20, 8, 0x98, 14, 0xAC, 18), |
| 182 | PINGROUP(LPW0, LCD, DISPLAYA, DISPLAYB, SPI3, HDMI, DISPLAYA, 0x20, 3, 0x90, 0, 0xAC, 20), |
| 183 | PINGROUP(LPW1, LCD, DISPLAYA, DISPLAYB, RSVD, RSVD, RSVD4, 0x20, 4, 0x90, 2, 0xAC, 20), |
| 184 | PINGROUP(LPW2, LCD, DISPLAYA, DISPLAYB, SPI3, HDMI, DISPLAYA, 0x20, 5, 0x90, 4, 0xAC, 20), |
| 185 | PINGROUP(LSC0, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 27, 0x90, 18, 0xAC, 22), |
| 186 | PINGROUP(LSC1, LCD, DISPLAYA, DISPLAYB, SPI3, HDMI, DISPLAYA, 0x1C, 28, 0x90, 20, 0xAC, 20), |
| 187 | PINGROUP(LSCK, LCD, DISPLAYA, DISPLAYB, SPI3, HDMI, DISPLAYA, 0x1C, 29, 0x90, 16, 0xAC, 20), |
| 188 | PINGROUP(LSDA, LCD, DISPLAYA, DISPLAYB, SPI3, HDMI, DISPLAYA, 0x20, 1, 0x90, 8, 0xAC, 20), |
| 189 | PINGROUP(LSDI, LCD, DISPLAYA, DISPLAYB, SPI3, RSVD, DISPLAYA, 0x20, 2, 0x90, 6, 0xAC, 20), |
| 190 | PINGROUP(LSPI, LCD, DISPLAYA, DISPLAYB, XIO, HDMI, DISPLAYA, 0x20, 0, 0x90, 10, 0xAC, 22), |
| 191 | PINGROUP(LVP0, LCD, DISPLAYA, DISPLAYB, RSVD, RSVD, RSVD4, 0x1C, 21, 0x90, 30, 0xAC, 22), |
| 192 | PINGROUP(LVP1, LCD, DISPLAYA, DISPLAYB, RSVD, RSVD, RSVD4, 0x1C, 22, 0x98, 8, 0xAC, 16), |
| 193 | PINGROUP(LVS, LCD, DISPLAYA, DISPLAYB, XIO, RSVD, RSVD4, 0x1C, 26, 0x90, 24, 0xAC, 22), |
| 194 | PINGROUP(OWC, SYS, OWR, RSVD, RSVD, RSVD, OWR, 0x14, 31, 0x84, 8, 0xB0, 30), |
| 195 | PINGROUP(PMC, SYS, PWR_ON, PWR_INTR, RSVD, RSVD, PWR_ON, 0x14, 23, 0x98, 18, -1, -1), |
| 196 | PINGROUP(PTA, NAND, I2C2, HDMI, GMI, RSVD, RSVD4, 0x14, 24, 0x98, 22, 0xA4, 4), |
| 197 | PINGROUP(RM, UART, I2C, RSVD, RSVD, RSVD, RSVD4, 0x14, 25, 0x80, 14, 0xA4, 0), |
| 198 | PINGROUP(SDB, SD, UARTA, PWM, SDIO3, SPI2, PWM, 0x20, 15, 0x8C, 10, -1, -1), |
| 199 | PINGROUP(SDC, SD, PWM, TWC, SDIO3, SPI3, TWC, 0x18, 1, 0x8C, 12, 0xAC, 28), |
| 200 | PINGROUP(SDD, SD, UARTA, PWM, SDIO3, SPI3, PWM, 0x18, 2, 0x8C, 14, 0xAC, 30), |
| 201 | PINGROUP(SDIO1, BB, SDIO1, RSVD, UARTE, UARTA, RSVD2, 0x14, 30, 0x80, 30, 0xB0, 18), |
| 202 | PINGROUP(SLXA, SD, PCIE, SPI4, SDIO3, SPI2, PCIE, 0x18, 3, 0x84, 6, 0xA4, 22), |
| 203 | PINGROUP(SLXC, SD, SPDIF, SPI4, SDIO3, SPI2, SPI4, 0x18, 5, 0x84, 10, 0xA4, 26), |
| 204 | PINGROUP(SLXD, SD, SPDIF, SPI4, SDIO3, SPI2, SPI4, 0x18, 6, 0x84, 12, 0xA4, 28), |
| 205 | PINGROUP(SLXK, SD, PCIE, SPI4, SDIO3, SPI2, PCIE, 0x18, 7, 0x84, 14, 0xA4, 30), |
| 206 | PINGROUP(SPDI, AUDIO, SPDIF, RSVD, I2C, SDIO2, RSVD2, 0x18, 8, 0x8C, 8, 0xA4, 16), |
| 207 | PINGROUP(SPDO, AUDIO, SPDIF, RSVD, I2C, SDIO2, RSVD2, 0x18, 9, 0x8C, 6, 0xA4, 18), |
| 208 | PINGROUP(SPIA, AUDIO, SPI1, SPI2, SPI3, GMI, GMI, 0x18, 10, 0x8C, 30, 0xA8, 4), |
| 209 | PINGROUP(SPIB, AUDIO, SPI1, SPI2, SPI3, GMI, GMI, 0x18, 11, 0x8C, 28, 0xA8, 6), |
| 210 | PINGROUP(SPIC, AUDIO, SPI1, SPI2, SPI3, GMI, GMI, 0x18, 12, 0x8C, 26, 0xA8, 8), |
| 211 | PINGROUP(SPID, AUDIO, SPI2, SPI1, SPI2_ALT, GMI, GMI, 0x18, 13, 0x8C, 24, 0xA8, 10), |
| 212 | PINGROUP(SPIE, AUDIO, SPI2, SPI1, SPI2_ALT, GMI, GMI, 0x18, 14, 0x8C, 22, 0xA8, 12), |
| 213 | PINGROUP(SPIF, AUDIO, SPI3, SPI1, SPI2, RSVD, RSVD4, 0x18, 15, 0x8C, 20, 0xA8, 14), |
| 214 | PINGROUP(SPIG, AUDIO, SPI3, SPI2, SPI2_ALT, I2C, SPI2_ALT, 0x18, 16, 0x8C, 18, 0xA8, 16), |
| 215 | PINGROUP(SPIH, AUDIO, SPI3, SPI2, SPI2_ALT, I2C, SPI2_ALT, 0x18, 17, 0x8C, 16, 0xA8, 18), |
| 216 | PINGROUP(UAA, BB, SPI3, MIPI_HS, UARTA, ULPI, MIPI_HS, 0x18, 18, 0x80, 0, 0xAC, 0), |
| 217 | PINGROUP(UAB, BB, SPI2, MIPI_HS, UARTA, ULPI, MIPI_HS, 0x18, 19, 0x80, 2, 0xAC, 2), |
| 218 | PINGROUP(UAC, BB, OWR, RSVD, RSVD, RSVD, RSVD4, 0x18, 20, 0x80, 4, 0xAC, 4), |
| 219 | PINGROUP(UAD, UART, IRDA, SPDIF, UARTA, SPI4, SPDIF, 0x18, 21, 0x80, 6, 0xAC, 6), |
| 220 | PINGROUP(UCA, UART, UARTC, RSVD, GMI, RSVD, RSVD4, 0x18, 22, 0x84, 16, 0xAC, 8), |
| 221 | PINGROUP(UCB, UART, UARTC, PWM, GMI, RSVD, RSVD4, 0x18, 23, 0x84, 18, 0xAC, 10), |
| 222 | PINGROUP(UDA, BB, SPI1, RSVD, UARTD, ULPI, RSVD2, 0x20, 13, 0x80, 8, 0xB0, 16), |
| 223 | /* these pin groups only have pullup and pull down control */ |
| 224 | PINGROUP(CK32, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, -1, -1, -1, -1, 0xB0, 14), |
| 225 | PINGROUP(DDRC, DDR, RSVD, RSVD, RSVD, RSVD, RSVD, -1, -1, -1, -1, 0xAC, 26), |
| 226 | PINGROUP(PMCA, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, -1, -1, -1, -1, 0xB0, 4), |
| 227 | PINGROUP(PMCB, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, -1, -1, -1, -1, 0xB0, 6), |
| 228 | PINGROUP(PMCC, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, -1, -1, -1, -1, 0xB0, 8), |
| 229 | PINGROUP(PMCD, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, -1, -1, -1, -1, 0xB0, 10), |
| 230 | PINGROUP(PMCE, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, -1, -1, -1, -1, 0xB0, 12), |
| 231 | PINGROUP(XM2C, DDR, RSVD, RSVD, RSVD, RSVD, RSVD, -1, -1, -1, -1, 0xA8, 30), |
| 232 | PINGROUP(XM2D, DDR, RSVD, RSVD, RSVD, RSVD, RSVD, -1, -1, -1, -1, 0xA8, 28), |
| 233 | }; |
Peter De Schrijver | 6996e08 | 2011-12-14 17:03:22 +0200 | [diff] [blame] | 234 | |
Stephen Warren | ba4ba3b | 2011-12-19 11:01:57 -0700 | [diff] [blame] | 235 | void __devinit tegra20_pinmux_init(const struct tegra_pingroup_desc **pg, |
Peter De Schrijver | 6996e08 | 2011-12-14 17:03:22 +0200 | [diff] [blame] | 236 | int *pg_max, const struct tegra_drive_pingroup_desc **pgdrive, |
| 237 | int *pgdrive_max) |
| 238 | { |
| 239 | *pg = tegra_soc_pingroups; |
| 240 | *pg_max = TEGRA_MAX_PINGROUP; |
| 241 | *pgdrive = tegra_soc_drive_pingroups; |
| 242 | *pgdrive_max = TEGRA_MAX_DRIVE_PINGROUP; |
| 243 | } |
| 244 | |