Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * TI DA830/OMAP L137 chip specific setup
0004  *
0005  * Author: Mark A. Greer <mgreer@mvista.com>
0006  *
0007  * 2009 (c) MontaVista Software, Inc.
0008  */
0009 #include <linux/clk-provider.h>
0010 #include <linux/clk/davinci.h>
0011 #include <linux/gpio.h>
0012 #include <linux/init.h>
0013 #include <linux/io.h>
0014 #include <linux/irqchip/irq-davinci-cp-intc.h>
0015 #include <linux/platform_data/gpio-davinci.h>
0016 
0017 #include <clocksource/timer-davinci.h>
0018 
0019 #include <asm/mach/map.h>
0020 
0021 #include "common.h"
0022 #include "cputype.h"
0023 #include "da8xx.h"
0024 #include "irqs.h"
0025 #include "mux.h"
0026 
0027 /* Offsets of the 8 compare registers on the da830 */
0028 #define DA830_CMP12_0       0x60
0029 #define DA830_CMP12_1       0x64
0030 #define DA830_CMP12_2       0x68
0031 #define DA830_CMP12_3       0x6c
0032 #define DA830_CMP12_4       0x70
0033 #define DA830_CMP12_5       0x74
0034 #define DA830_CMP12_6       0x78
0035 #define DA830_CMP12_7       0x7c
0036 
0037 #define DA830_REF_FREQ      24000000
0038 
0039 /*
0040  * Device specific mux setup
0041  *
0042  *       soc      description   mux    mode    mode   mux   dbg
0043  *                  reg   offset   mask   mode
0044  */
0045 static const struct mux_config da830_pins[] = {
0046 #ifdef CONFIG_DAVINCI_MUX
0047     MUX_CFG(DA830, GPIO7_14,    0,  0,  0xf,    1,  false)
0048     MUX_CFG(DA830, RTCK,        0,  0,  0xf,    8,  false)
0049     MUX_CFG(DA830, GPIO7_15,    0,  4,  0xf,    1,  false)
0050     MUX_CFG(DA830, EMU_0,       0,  4,  0xf,    8,  false)
0051     MUX_CFG(DA830, EMB_SDCKE,   0,  8,  0xf,    1,  false)
0052     MUX_CFG(DA830, EMB_CLK_GLUE,    0,  12, 0xf,    1,  false)
0053     MUX_CFG(DA830, EMB_CLK,     0,  12, 0xf,    2,  false)
0054     MUX_CFG(DA830, NEMB_CS_0,   0,  16, 0xf,    1,  false)
0055     MUX_CFG(DA830, NEMB_CAS,    0,  20, 0xf,    1,  false)
0056     MUX_CFG(DA830, NEMB_RAS,    0,  24, 0xf,    1,  false)
0057     MUX_CFG(DA830, NEMB_WE,     0,  28, 0xf,    1,  false)
0058     MUX_CFG(DA830, EMB_BA_1,    1,  0,  0xf,    1,  false)
0059     MUX_CFG(DA830, EMB_BA_0,    1,  4,  0xf,    1,  false)
0060     MUX_CFG(DA830, EMB_A_0,     1,  8,  0xf,    1,  false)
0061     MUX_CFG(DA830, EMB_A_1,     1,  12, 0xf,    1,  false)
0062     MUX_CFG(DA830, EMB_A_2,     1,  16, 0xf,    1,  false)
0063     MUX_CFG(DA830, EMB_A_3,     1,  20, 0xf,    1,  false)
0064     MUX_CFG(DA830, EMB_A_4,     1,  24, 0xf,    1,  false)
0065     MUX_CFG(DA830, EMB_A_5,     1,  28, 0xf,    1,  false)
0066     MUX_CFG(DA830, GPIO7_0,     1,  0,  0xf,    8,  false)
0067     MUX_CFG(DA830, GPIO7_1,     1,  4,  0xf,    8,  false)
0068     MUX_CFG(DA830, GPIO7_2,     1,  8,  0xf,    8,  false)
0069     MUX_CFG(DA830, GPIO7_3,     1,  12, 0xf,    8,  false)
0070     MUX_CFG(DA830, GPIO7_4,     1,  16, 0xf,    8,  false)
0071     MUX_CFG(DA830, GPIO7_5,     1,  20, 0xf,    8,  false)
0072     MUX_CFG(DA830, GPIO7_6,     1,  24, 0xf,    8,  false)
0073     MUX_CFG(DA830, GPIO7_7,     1,  28, 0xf,    8,  false)
0074     MUX_CFG(DA830, EMB_A_6,     2,  0,  0xf,    1,  false)
0075     MUX_CFG(DA830, EMB_A_7,     2,  4,  0xf,    1,  false)
0076     MUX_CFG(DA830, EMB_A_8,     2,  8,  0xf,    1,  false)
0077     MUX_CFG(DA830, EMB_A_9,     2,  12, 0xf,    1,  false)
0078     MUX_CFG(DA830, EMB_A_10,    2,  16, 0xf,    1,  false)
0079     MUX_CFG(DA830, EMB_A_11,    2,  20, 0xf,    1,  false)
0080     MUX_CFG(DA830, EMB_A_12,    2,  24, 0xf,    1,  false)
0081     MUX_CFG(DA830, EMB_D_31,    2,  28, 0xf,    1,  false)
0082     MUX_CFG(DA830, GPIO7_8,     2,  0,  0xf,    8,  false)
0083     MUX_CFG(DA830, GPIO7_9,     2,  4,  0xf,    8,  false)
0084     MUX_CFG(DA830, GPIO7_10,    2,  8,  0xf,    8,  false)
0085     MUX_CFG(DA830, GPIO7_11,    2,  12, 0xf,    8,  false)
0086     MUX_CFG(DA830, GPIO7_12,    2,  16, 0xf,    8,  false)
0087     MUX_CFG(DA830, GPIO7_13,    2,  20, 0xf,    8,  false)
0088     MUX_CFG(DA830, GPIO3_13,    2,  24, 0xf,    8,  false)
0089     MUX_CFG(DA830, EMB_D_30,    3,  0,  0xf,    1,  false)
0090     MUX_CFG(DA830, EMB_D_29,    3,  4,  0xf,    1,  false)
0091     MUX_CFG(DA830, EMB_D_28,    3,  8,  0xf,    1,  false)
0092     MUX_CFG(DA830, EMB_D_27,    3,  12, 0xf,    1,  false)
0093     MUX_CFG(DA830, EMB_D_26,    3,  16, 0xf,    1,  false)
0094     MUX_CFG(DA830, EMB_D_25,    3,  20, 0xf,    1,  false)
0095     MUX_CFG(DA830, EMB_D_24,    3,  24, 0xf,    1,  false)
0096     MUX_CFG(DA830, EMB_D_23,    3,  28, 0xf,    1,  false)
0097     MUX_CFG(DA830, EMB_D_22,    4,  0,  0xf,    1,  false)
0098     MUX_CFG(DA830, EMB_D_21,    4,  4,  0xf,    1,  false)
0099     MUX_CFG(DA830, EMB_D_20,    4,  8,  0xf,    1,  false)
0100     MUX_CFG(DA830, EMB_D_19,    4,  12, 0xf,    1,  false)
0101     MUX_CFG(DA830, EMB_D_18,    4,  16, 0xf,    1,  false)
0102     MUX_CFG(DA830, EMB_D_17,    4,  20, 0xf,    1,  false)
0103     MUX_CFG(DA830, EMB_D_16,    4,  24, 0xf,    1,  false)
0104     MUX_CFG(DA830, NEMB_WE_DQM_3,   4,  28, 0xf,    1,  false)
0105     MUX_CFG(DA830, NEMB_WE_DQM_2,   5,  0,  0xf,    1,  false)
0106     MUX_CFG(DA830, EMB_D_0,     5,  4,  0xf,    1,  false)
0107     MUX_CFG(DA830, EMB_D_1,     5,  8,  0xf,    1,  false)
0108     MUX_CFG(DA830, EMB_D_2,     5,  12, 0xf,    1,  false)
0109     MUX_CFG(DA830, EMB_D_3,     5,  16, 0xf,    1,  false)
0110     MUX_CFG(DA830, EMB_D_4,     5,  20, 0xf,    1,  false)
0111     MUX_CFG(DA830, EMB_D_5,     5,  24, 0xf,    1,  false)
0112     MUX_CFG(DA830, EMB_D_6,     5,  28, 0xf,    1,  false)
0113     MUX_CFG(DA830, GPIO6_0,     5,  4,  0xf,    8,  false)
0114     MUX_CFG(DA830, GPIO6_1,     5,  8,  0xf,    8,  false)
0115     MUX_CFG(DA830, GPIO6_2,     5,  12, 0xf,    8,  false)
0116     MUX_CFG(DA830, GPIO6_3,     5,  16, 0xf,    8,  false)
0117     MUX_CFG(DA830, GPIO6_4,     5,  20, 0xf,    8,  false)
0118     MUX_CFG(DA830, GPIO6_5,     5,  24, 0xf,    8,  false)
0119     MUX_CFG(DA830, GPIO6_6,     5,  28, 0xf,    8,  false)
0120     MUX_CFG(DA830, EMB_D_7,     6,  0,  0xf,    1,  false)
0121     MUX_CFG(DA830, EMB_D_8,     6,  4,  0xf,    1,  false)
0122     MUX_CFG(DA830, EMB_D_9,     6,  8,  0xf,    1,  false)
0123     MUX_CFG(DA830, EMB_D_10,    6,  12, 0xf,    1,  false)
0124     MUX_CFG(DA830, EMB_D_11,    6,  16, 0xf,    1,  false)
0125     MUX_CFG(DA830, EMB_D_12,    6,  20, 0xf,    1,  false)
0126     MUX_CFG(DA830, EMB_D_13,    6,  24, 0xf,    1,  false)
0127     MUX_CFG(DA830, EMB_D_14,    6,  28, 0xf,    1,  false)
0128     MUX_CFG(DA830, GPIO6_7,     6,  0,  0xf,    8,  false)
0129     MUX_CFG(DA830, GPIO6_8,     6,  4,  0xf,    8,  false)
0130     MUX_CFG(DA830, GPIO6_9,     6,  8,  0xf,    8,  false)
0131     MUX_CFG(DA830, GPIO6_10,    6,  12, 0xf,    8,  false)
0132     MUX_CFG(DA830, GPIO6_11,    6,  16, 0xf,    8,  false)
0133     MUX_CFG(DA830, GPIO6_12,    6,  20, 0xf,    8,  false)
0134     MUX_CFG(DA830, GPIO6_13,    6,  24, 0xf,    8,  false)
0135     MUX_CFG(DA830, GPIO6_14,    6,  28, 0xf,    8,  false)
0136     MUX_CFG(DA830, EMB_D_15,    7,  0,  0xf,    1,  false)
0137     MUX_CFG(DA830, NEMB_WE_DQM_1,   7,  4,  0xf,    1,  false)
0138     MUX_CFG(DA830, NEMB_WE_DQM_0,   7,  8,  0xf,    1,  false)
0139     MUX_CFG(DA830, SPI0_SOMI_0, 7,  12, 0xf,    1,  false)
0140     MUX_CFG(DA830, SPI0_SIMO_0, 7,  16, 0xf,    1,  false)
0141     MUX_CFG(DA830, SPI0_CLK,    7,  20, 0xf,    1,  false)
0142     MUX_CFG(DA830, NSPI0_ENA,   7,  24, 0xf,    1,  false)
0143     MUX_CFG(DA830, NSPI0_SCS_0, 7,  28, 0xf,    1,  false)
0144     MUX_CFG(DA830, EQEP0I,      7,  12, 0xf,    2,  false)
0145     MUX_CFG(DA830, EQEP0S,      7,  16, 0xf,    2,  false)
0146     MUX_CFG(DA830, EQEP1I,      7,  20, 0xf,    2,  false)
0147     MUX_CFG(DA830, NUART0_CTS,  7,  24, 0xf,    2,  false)
0148     MUX_CFG(DA830, NUART0_RTS,  7,  28, 0xf,    2,  false)
0149     MUX_CFG(DA830, EQEP0A,      7,  24, 0xf,    4,  false)
0150     MUX_CFG(DA830, EQEP0B,      7,  28, 0xf,    4,  false)
0151     MUX_CFG(DA830, GPIO6_15,    7,  0,  0xf,    8,  false)
0152     MUX_CFG(DA830, GPIO5_14,    7,  4,  0xf,    8,  false)
0153     MUX_CFG(DA830, GPIO5_15,    7,  8,  0xf,    8,  false)
0154     MUX_CFG(DA830, GPIO5_0,     7,  12, 0xf,    8,  false)
0155     MUX_CFG(DA830, GPIO5_1,     7,  16, 0xf,    8,  false)
0156     MUX_CFG(DA830, GPIO5_2,     7,  20, 0xf,    8,  false)
0157     MUX_CFG(DA830, GPIO5_3,     7,  24, 0xf,    8,  false)
0158     MUX_CFG(DA830, GPIO5_4,     7,  28, 0xf,    8,  false)
0159     MUX_CFG(DA830, SPI1_SOMI_0, 8,  0,  0xf,    1,  false)
0160     MUX_CFG(DA830, SPI1_SIMO_0, 8,  4,  0xf,    1,  false)
0161     MUX_CFG(DA830, SPI1_CLK,    8,  8,  0xf,    1,  false)
0162     MUX_CFG(DA830, UART0_RXD,   8,  12, 0xf,    1,  false)
0163     MUX_CFG(DA830, UART0_TXD,   8,  16, 0xf,    1,  false)
0164     MUX_CFG(DA830, AXR1_10,     8,  20, 0xf,    1,  false)
0165     MUX_CFG(DA830, AXR1_11,     8,  24, 0xf,    1,  false)
0166     MUX_CFG(DA830, NSPI1_ENA,   8,  28, 0xf,    1,  false)
0167     MUX_CFG(DA830, I2C1_SCL,    8,  0,  0xf,    2,  false)
0168     MUX_CFG(DA830, I2C1_SDA,    8,  4,  0xf,    2,  false)
0169     MUX_CFG(DA830, EQEP1S,      8,  8,  0xf,    2,  false)
0170     MUX_CFG(DA830, I2C0_SDA,    8,  12, 0xf,    2,  false)
0171     MUX_CFG(DA830, I2C0_SCL,    8,  16, 0xf,    2,  false)
0172     MUX_CFG(DA830, UART2_RXD,   8,  28, 0xf,    2,  false)
0173     MUX_CFG(DA830, TM64P0_IN12, 8,  12, 0xf,    4,  false)
0174     MUX_CFG(DA830, TM64P0_OUT12,    8,  16, 0xf,    4,  false)
0175     MUX_CFG(DA830, GPIO5_5,     8,  0,  0xf,    8,  false)
0176     MUX_CFG(DA830, GPIO5_6,     8,  4,  0xf,    8,  false)
0177     MUX_CFG(DA830, GPIO5_7,     8,  8,  0xf,    8,  false)
0178     MUX_CFG(DA830, GPIO5_8,     8,  12, 0xf,    8,  false)
0179     MUX_CFG(DA830, GPIO5_9,     8,  16, 0xf,    8,  false)
0180     MUX_CFG(DA830, GPIO5_10,    8,  20, 0xf,    8,  false)
0181     MUX_CFG(DA830, GPIO5_11,    8,  24, 0xf,    8,  false)
0182     MUX_CFG(DA830, GPIO5_12,    8,  28, 0xf,    8,  false)
0183     MUX_CFG(DA830, NSPI1_SCS_0, 9,  0,  0xf,    1,  false)
0184     MUX_CFG(DA830, USB0_DRVVBUS,    9,  4,  0xf,    1,  false)
0185     MUX_CFG(DA830, AHCLKX0,     9,  8,  0xf,    1,  false)
0186     MUX_CFG(DA830, ACLKX0,      9,  12, 0xf,    1,  false)
0187     MUX_CFG(DA830, AFSX0,       9,  16, 0xf,    1,  false)
0188     MUX_CFG(DA830, AHCLKR0,     9,  20, 0xf,    1,  false)
0189     MUX_CFG(DA830, ACLKR0,      9,  24, 0xf,    1,  false)
0190     MUX_CFG(DA830, AFSR0,       9,  28, 0xf,    1,  false)
0191     MUX_CFG(DA830, UART2_TXD,   9,  0,  0xf,    2,  false)
0192     MUX_CFG(DA830, AHCLKX2,     9,  8,  0xf,    2,  false)
0193     MUX_CFG(DA830, ECAP0_APWM0, 9,  12, 0xf,    2,  false)
0194     MUX_CFG(DA830, RMII_MHZ_50_CLK, 9,  20, 0xf,    2,  false)
0195     MUX_CFG(DA830, ECAP1_APWM1, 9,  24, 0xf,    2,  false)
0196     MUX_CFG(DA830, USB_REFCLKIN,    9,  8,  0xf,    4,  false)
0197     MUX_CFG(DA830, GPIO5_13,    9,  0,  0xf,    8,  false)
0198     MUX_CFG(DA830, GPIO4_15,    9,  4,  0xf,    8,  false)
0199     MUX_CFG(DA830, GPIO2_11,    9,  8,  0xf,    8,  false)
0200     MUX_CFG(DA830, GPIO2_12,    9,  12, 0xf,    8,  false)
0201     MUX_CFG(DA830, GPIO2_13,    9,  16, 0xf,    8,  false)
0202     MUX_CFG(DA830, GPIO2_14,    9,  20, 0xf,    8,  false)
0203     MUX_CFG(DA830, GPIO2_15,    9,  24, 0xf,    8,  false)
0204     MUX_CFG(DA830, GPIO3_12,    9,  28, 0xf,    8,  false)
0205     MUX_CFG(DA830, AMUTE0,      10, 0,  0xf,    1,  false)
0206     MUX_CFG(DA830, AXR0_0,      10, 4,  0xf,    1,  false)
0207     MUX_CFG(DA830, AXR0_1,      10, 8,  0xf,    1,  false)
0208     MUX_CFG(DA830, AXR0_2,      10, 12, 0xf,    1,  false)
0209     MUX_CFG(DA830, AXR0_3,      10, 16, 0xf,    1,  false)
0210     MUX_CFG(DA830, AXR0_4,      10, 20, 0xf,    1,  false)
0211     MUX_CFG(DA830, AXR0_5,      10, 24, 0xf,    1,  false)
0212     MUX_CFG(DA830, AXR0_6,      10, 28, 0xf,    1,  false)
0213     MUX_CFG(DA830, RMII_TXD_0,  10, 4,  0xf,    2,  false)
0214     MUX_CFG(DA830, RMII_TXD_1,  10, 8,  0xf,    2,  false)
0215     MUX_CFG(DA830, RMII_TXEN,   10, 12, 0xf,    2,  false)
0216     MUX_CFG(DA830, RMII_CRS_DV, 10, 16, 0xf,    2,  false)
0217     MUX_CFG(DA830, RMII_RXD_0,  10, 20, 0xf,    2,  false)
0218     MUX_CFG(DA830, RMII_RXD_1,  10, 24, 0xf,    2,  false)
0219     MUX_CFG(DA830, RMII_RXER,   10, 28, 0xf,    2,  false)
0220     MUX_CFG(DA830, AFSR2,       10, 4,  0xf,    4,  false)
0221     MUX_CFG(DA830, ACLKX2,      10, 8,  0xf,    4,  false)
0222     MUX_CFG(DA830, AXR2_3,      10, 12, 0xf,    4,  false)
0223     MUX_CFG(DA830, AXR2_2,      10, 16, 0xf,    4,  false)
0224     MUX_CFG(DA830, AXR2_1,      10, 20, 0xf,    4,  false)
0225     MUX_CFG(DA830, AFSX2,       10, 24, 0xf,    4,  false)
0226     MUX_CFG(DA830, ACLKR2,      10, 28, 0xf,    4,  false)
0227     MUX_CFG(DA830, NRESETOUT,   10, 0,  0xf,    8,  false)
0228     MUX_CFG(DA830, GPIO3_0,     10, 4,  0xf,    8,  false)
0229     MUX_CFG(DA830, GPIO3_1,     10, 8,  0xf,    8,  false)
0230     MUX_CFG(DA830, GPIO3_2,     10, 12, 0xf,    8,  false)
0231     MUX_CFG(DA830, GPIO3_3,     10, 16, 0xf,    8,  false)
0232     MUX_CFG(DA830, GPIO3_4,     10, 20, 0xf,    8,  false)
0233     MUX_CFG(DA830, GPIO3_5,     10, 24, 0xf,    8,  false)
0234     MUX_CFG(DA830, GPIO3_6,     10, 28, 0xf,    8,  false)
0235     MUX_CFG(DA830, AXR0_7,      11, 0,  0xf,    1,  false)
0236     MUX_CFG(DA830, AXR0_8,      11, 4,  0xf,    1,  false)
0237     MUX_CFG(DA830, UART1_RXD,   11, 8,  0xf,    1,  false)
0238     MUX_CFG(DA830, UART1_TXD,   11, 12, 0xf,    1,  false)
0239     MUX_CFG(DA830, AXR0_11,     11, 16, 0xf,    1,  false)
0240     MUX_CFG(DA830, AHCLKX1,     11, 20, 0xf,    1,  false)
0241     MUX_CFG(DA830, ACLKX1,      11, 24, 0xf,    1,  false)
0242     MUX_CFG(DA830, AFSX1,       11, 28, 0xf,    1,  false)
0243     MUX_CFG(DA830, MDIO_CLK,    11, 0,  0xf,    2,  false)
0244     MUX_CFG(DA830, MDIO_D,      11, 4,  0xf,    2,  false)
0245     MUX_CFG(DA830, AXR0_9,      11, 8,  0xf,    2,  false)
0246     MUX_CFG(DA830, AXR0_10,     11, 12, 0xf,    2,  false)
0247     MUX_CFG(DA830, EPWM0B,      11, 20, 0xf,    2,  false)
0248     MUX_CFG(DA830, EPWM0A,      11, 24, 0xf,    2,  false)
0249     MUX_CFG(DA830, EPWMSYNCI,   11, 28, 0xf,    2,  false)
0250     MUX_CFG(DA830, AXR2_0,      11, 16, 0xf,    4,  false)
0251     MUX_CFG(DA830, EPWMSYNC0,   11, 28, 0xf,    4,  false)
0252     MUX_CFG(DA830, GPIO3_7,     11, 0,  0xf,    8,  false)
0253     MUX_CFG(DA830, GPIO3_8,     11, 4,  0xf,    8,  false)
0254     MUX_CFG(DA830, GPIO3_9,     11, 8,  0xf,    8,  false)
0255     MUX_CFG(DA830, GPIO3_10,    11, 12, 0xf,    8,  false)
0256     MUX_CFG(DA830, GPIO3_11,    11, 16, 0xf,    8,  false)
0257     MUX_CFG(DA830, GPIO3_14,    11, 20, 0xf,    8,  false)
0258     MUX_CFG(DA830, GPIO3_15,    11, 24, 0xf,    8,  false)
0259     MUX_CFG(DA830, GPIO4_10,    11, 28, 0xf,    8,  false)
0260     MUX_CFG(DA830, AHCLKR1,     12, 0,  0xf,    1,  false)
0261     MUX_CFG(DA830, ACLKR1,      12, 4,  0xf,    1,  false)
0262     MUX_CFG(DA830, AFSR1,       12, 8,  0xf,    1,  false)
0263     MUX_CFG(DA830, AMUTE1,      12, 12, 0xf,    1,  false)
0264     MUX_CFG(DA830, AXR1_0,      12, 16, 0xf,    1,  false)
0265     MUX_CFG(DA830, AXR1_1,      12, 20, 0xf,    1,  false)
0266     MUX_CFG(DA830, AXR1_2,      12, 24, 0xf,    1,  false)
0267     MUX_CFG(DA830, AXR1_3,      12, 28, 0xf,    1,  false)
0268     MUX_CFG(DA830, ECAP2_APWM2, 12, 4,  0xf,    2,  false)
0269     MUX_CFG(DA830, EHRPWMGLUETZ,    12, 12, 0xf,    2,  false)
0270     MUX_CFG(DA830, EQEP1A,      12, 28, 0xf,    2,  false)
0271     MUX_CFG(DA830, GPIO4_11,    12, 0,  0xf,    8,  false)
0272     MUX_CFG(DA830, GPIO4_12,    12, 4,  0xf,    8,  false)
0273     MUX_CFG(DA830, GPIO4_13,    12, 8,  0xf,    8,  false)
0274     MUX_CFG(DA830, GPIO4_14,    12, 12, 0xf,    8,  false)
0275     MUX_CFG(DA830, GPIO4_0,     12, 16, 0xf,    8,  false)
0276     MUX_CFG(DA830, GPIO4_1,     12, 20, 0xf,    8,  false)
0277     MUX_CFG(DA830, GPIO4_2,     12, 24, 0xf,    8,  false)
0278     MUX_CFG(DA830, GPIO4_3,     12, 28, 0xf,    8,  false)
0279     MUX_CFG(DA830, AXR1_4,      13, 0,  0xf,    1,  false)
0280     MUX_CFG(DA830, AXR1_5,      13, 4,  0xf,    1,  false)
0281     MUX_CFG(DA830, AXR1_6,      13, 8,  0xf,    1,  false)
0282     MUX_CFG(DA830, AXR1_7,      13, 12, 0xf,    1,  false)
0283     MUX_CFG(DA830, AXR1_8,      13, 16, 0xf,    1,  false)
0284     MUX_CFG(DA830, AXR1_9,      13, 20, 0xf,    1,  false)
0285     MUX_CFG(DA830, EMA_D_0,     13, 24, 0xf,    1,  false)
0286     MUX_CFG(DA830, EMA_D_1,     13, 28, 0xf,    1,  false)
0287     MUX_CFG(DA830, EQEP1B,      13, 0,  0xf,    2,  false)
0288     MUX_CFG(DA830, EPWM2B,      13, 4,  0xf,    2,  false)
0289     MUX_CFG(DA830, EPWM2A,      13, 8,  0xf,    2,  false)
0290     MUX_CFG(DA830, EPWM1B,      13, 12, 0xf,    2,  false)
0291     MUX_CFG(DA830, EPWM1A,      13, 16, 0xf,    2,  false)
0292     MUX_CFG(DA830, MMCSD_DAT_0, 13, 24, 0xf,    2,  false)
0293     MUX_CFG(DA830, MMCSD_DAT_1, 13, 28, 0xf,    2,  false)
0294     MUX_CFG(DA830, UHPI_HD_0,   13, 24, 0xf,    4,  false)
0295     MUX_CFG(DA830, UHPI_HD_1,   13, 28, 0xf,    4,  false)
0296     MUX_CFG(DA830, GPIO4_4,     13, 0,  0xf,    8,  false)
0297     MUX_CFG(DA830, GPIO4_5,     13, 4,  0xf,    8,  false)
0298     MUX_CFG(DA830, GPIO4_6,     13, 8,  0xf,    8,  false)
0299     MUX_CFG(DA830, GPIO4_7,     13, 12, 0xf,    8,  false)
0300     MUX_CFG(DA830, GPIO4_8,     13, 16, 0xf,    8,  false)
0301     MUX_CFG(DA830, GPIO4_9,     13, 20, 0xf,    8,  false)
0302     MUX_CFG(DA830, GPIO0_0,     13, 24, 0xf,    8,  false)
0303     MUX_CFG(DA830, GPIO0_1,     13, 28, 0xf,    8,  false)
0304     MUX_CFG(DA830, EMA_D_2,     14, 0,  0xf,    1,  false)
0305     MUX_CFG(DA830, EMA_D_3,     14, 4,  0xf,    1,  false)
0306     MUX_CFG(DA830, EMA_D_4,     14, 8,  0xf,    1,  false)
0307     MUX_CFG(DA830, EMA_D_5,     14, 12, 0xf,    1,  false)
0308     MUX_CFG(DA830, EMA_D_6,     14, 16, 0xf,    1,  false)
0309     MUX_CFG(DA830, EMA_D_7,     14, 20, 0xf,    1,  false)
0310     MUX_CFG(DA830, EMA_D_8,     14, 24, 0xf,    1,  false)
0311     MUX_CFG(DA830, EMA_D_9,     14, 28, 0xf,    1,  false)
0312     MUX_CFG(DA830, MMCSD_DAT_2, 14, 0,  0xf,    2,  false)
0313     MUX_CFG(DA830, MMCSD_DAT_3, 14, 4,  0xf,    2,  false)
0314     MUX_CFG(DA830, MMCSD_DAT_4, 14, 8,  0xf,    2,  false)
0315     MUX_CFG(DA830, MMCSD_DAT_5, 14, 12, 0xf,    2,  false)
0316     MUX_CFG(DA830, MMCSD_DAT_6, 14, 16, 0xf,    2,  false)
0317     MUX_CFG(DA830, MMCSD_DAT_7, 14, 20, 0xf,    2,  false)
0318     MUX_CFG(DA830, UHPI_HD_8,   14, 24, 0xf,    2,  false)
0319     MUX_CFG(DA830, UHPI_HD_9,   14, 28, 0xf,    2,  false)
0320     MUX_CFG(DA830, UHPI_HD_2,   14, 0,  0xf,    4,  false)
0321     MUX_CFG(DA830, UHPI_HD_3,   14, 4,  0xf,    4,  false)
0322     MUX_CFG(DA830, UHPI_HD_4,   14, 8,  0xf,    4,  false)
0323     MUX_CFG(DA830, UHPI_HD_5,   14, 12, 0xf,    4,  false)
0324     MUX_CFG(DA830, UHPI_HD_6,   14, 16, 0xf,    4,  false)
0325     MUX_CFG(DA830, UHPI_HD_7,   14, 20, 0xf,    4,  false)
0326     MUX_CFG(DA830, LCD_D_8,     14, 24, 0xf,    4,  false)
0327     MUX_CFG(DA830, LCD_D_9,     14, 28, 0xf,    4,  false)
0328     MUX_CFG(DA830, GPIO0_2,     14, 0,  0xf,    8,  false)
0329     MUX_CFG(DA830, GPIO0_3,     14, 4,  0xf,    8,  false)
0330     MUX_CFG(DA830, GPIO0_4,     14, 8,  0xf,    8,  false)
0331     MUX_CFG(DA830, GPIO0_5,     14, 12, 0xf,    8,  false)
0332     MUX_CFG(DA830, GPIO0_6,     14, 16, 0xf,    8,  false)
0333     MUX_CFG(DA830, GPIO0_7,     14, 20, 0xf,    8,  false)
0334     MUX_CFG(DA830, GPIO0_8,     14, 24, 0xf,    8,  false)
0335     MUX_CFG(DA830, GPIO0_9,     14, 28, 0xf,    8,  false)
0336     MUX_CFG(DA830, EMA_D_10,    15, 0,  0xf,    1,  false)
0337     MUX_CFG(DA830, EMA_D_11,    15, 4,  0xf,    1,  false)
0338     MUX_CFG(DA830, EMA_D_12,    15, 8,  0xf,    1,  false)
0339     MUX_CFG(DA830, EMA_D_13,    15, 12, 0xf,    1,  false)
0340     MUX_CFG(DA830, EMA_D_14,    15, 16, 0xf,    1,  false)
0341     MUX_CFG(DA830, EMA_D_15,    15, 20, 0xf,    1,  false)
0342     MUX_CFG(DA830, EMA_A_0,     15, 24, 0xf,    1,  false)
0343     MUX_CFG(DA830, EMA_A_1,     15, 28, 0xf,    1,  false)
0344     MUX_CFG(DA830, UHPI_HD_10,  15, 0,  0xf,    2,  false)
0345     MUX_CFG(DA830, UHPI_HD_11,  15, 4,  0xf,    2,  false)
0346     MUX_CFG(DA830, UHPI_HD_12,  15, 8,  0xf,    2,  false)
0347     MUX_CFG(DA830, UHPI_HD_13,  15, 12, 0xf,    2,  false)
0348     MUX_CFG(DA830, UHPI_HD_14,  15, 16, 0xf,    2,  false)
0349     MUX_CFG(DA830, UHPI_HD_15,  15, 20, 0xf,    2,  false)
0350     MUX_CFG(DA830, LCD_D_7,     15, 24, 0xf,    2,  false)
0351     MUX_CFG(DA830, MMCSD_CLK,   15, 28, 0xf,    2,  false)
0352     MUX_CFG(DA830, LCD_D_10,    15, 0,  0xf,    4,  false)
0353     MUX_CFG(DA830, LCD_D_11,    15, 4,  0xf,    4,  false)
0354     MUX_CFG(DA830, LCD_D_12,    15, 8,  0xf,    4,  false)
0355     MUX_CFG(DA830, LCD_D_13,    15, 12, 0xf,    4,  false)
0356     MUX_CFG(DA830, LCD_D_14,    15, 16, 0xf,    4,  false)
0357     MUX_CFG(DA830, LCD_D_15,    15, 20, 0xf,    4,  false)
0358     MUX_CFG(DA830, UHPI_HCNTL0, 15, 28, 0xf,    4,  false)
0359     MUX_CFG(DA830, GPIO0_10,    15, 0,  0xf,    8,  false)
0360     MUX_CFG(DA830, GPIO0_11,    15, 4,  0xf,    8,  false)
0361     MUX_CFG(DA830, GPIO0_12,    15, 8,  0xf,    8,  false)
0362     MUX_CFG(DA830, GPIO0_13,    15, 12, 0xf,    8,  false)
0363     MUX_CFG(DA830, GPIO0_14,    15, 16, 0xf,    8,  false)
0364     MUX_CFG(DA830, GPIO0_15,    15, 20, 0xf,    8,  false)
0365     MUX_CFG(DA830, GPIO1_0,     15, 24, 0xf,    8,  false)
0366     MUX_CFG(DA830, GPIO1_1,     15, 28, 0xf,    8,  false)
0367     MUX_CFG(DA830, EMA_A_2,     16, 0,  0xf,    1,  false)
0368     MUX_CFG(DA830, EMA_A_3,     16, 4,  0xf,    1,  false)
0369     MUX_CFG(DA830, EMA_A_4,     16, 8,  0xf,    1,  false)
0370     MUX_CFG(DA830, EMA_A_5,     16, 12, 0xf,    1,  false)
0371     MUX_CFG(DA830, EMA_A_6,     16, 16, 0xf,    1,  false)
0372     MUX_CFG(DA830, EMA_A_7,     16, 20, 0xf,    1,  false)
0373     MUX_CFG(DA830, EMA_A_8,     16, 24, 0xf,    1,  false)
0374     MUX_CFG(DA830, EMA_A_9,     16, 28, 0xf,    1,  false)
0375     MUX_CFG(DA830, MMCSD_CMD,   16, 0,  0xf,    2,  false)
0376     MUX_CFG(DA830, LCD_D_6,     16, 4,  0xf,    2,  false)
0377     MUX_CFG(DA830, LCD_D_3,     16, 8,  0xf,    2,  false)
0378     MUX_CFG(DA830, LCD_D_2,     16, 12, 0xf,    2,  false)
0379     MUX_CFG(DA830, LCD_D_1,     16, 16, 0xf,    2,  false)
0380     MUX_CFG(DA830, LCD_D_0,     16, 20, 0xf,    2,  false)
0381     MUX_CFG(DA830, LCD_PCLK,    16, 24, 0xf,    2,  false)
0382     MUX_CFG(DA830, LCD_HSYNC,   16, 28, 0xf,    2,  false)
0383     MUX_CFG(DA830, UHPI_HCNTL1, 16, 0,  0xf,    4,  false)
0384     MUX_CFG(DA830, GPIO1_2,     16, 0,  0xf,    8,  false)
0385     MUX_CFG(DA830, GPIO1_3,     16, 4,  0xf,    8,  false)
0386     MUX_CFG(DA830, GPIO1_4,     16, 8,  0xf,    8,  false)
0387     MUX_CFG(DA830, GPIO1_5,     16, 12, 0xf,    8,  false)
0388     MUX_CFG(DA830, GPIO1_6,     16, 16, 0xf,    8,  false)
0389     MUX_CFG(DA830, GPIO1_7,     16, 20, 0xf,    8,  false)
0390     MUX_CFG(DA830, GPIO1_8,     16, 24, 0xf,    8,  false)
0391     MUX_CFG(DA830, GPIO1_9,     16, 28, 0xf,    8,  false)
0392     MUX_CFG(DA830, EMA_A_10,    17, 0,  0xf,    1,  false)
0393     MUX_CFG(DA830, EMA_A_11,    17, 4,  0xf,    1,  false)
0394     MUX_CFG(DA830, EMA_A_12,    17, 8,  0xf,    1,  false)
0395     MUX_CFG(DA830, EMA_BA_1,    17, 12, 0xf,    1,  false)
0396     MUX_CFG(DA830, EMA_BA_0,    17, 16, 0xf,    1,  false)
0397     MUX_CFG(DA830, EMA_CLK,     17, 20, 0xf,    1,  false)
0398     MUX_CFG(DA830, EMA_SDCKE,   17, 24, 0xf,    1,  false)
0399     MUX_CFG(DA830, NEMA_CAS,    17, 28, 0xf,    1,  false)
0400     MUX_CFG(DA830, LCD_VSYNC,   17, 0,  0xf,    2,  false)
0401     MUX_CFG(DA830, NLCD_AC_ENB_CS,  17, 4,  0xf,    2,  false)
0402     MUX_CFG(DA830, LCD_MCLK,    17, 8,  0xf,    2,  false)
0403     MUX_CFG(DA830, LCD_D_5,     17, 12, 0xf,    2,  false)
0404     MUX_CFG(DA830, LCD_D_4,     17, 16, 0xf,    2,  false)
0405     MUX_CFG(DA830, OBSCLK,      17, 20, 0xf,    2,  false)
0406     MUX_CFG(DA830, NEMA_CS_4,   17, 28, 0xf,    2,  false)
0407     MUX_CFG(DA830, UHPI_HHWIL,  17, 12, 0xf,    4,  false)
0408     MUX_CFG(DA830, AHCLKR2,     17, 20, 0xf,    4,  false)
0409     MUX_CFG(DA830, GPIO1_10,    17, 0,  0xf,    8,  false)
0410     MUX_CFG(DA830, GPIO1_11,    17, 4,  0xf,    8,  false)
0411     MUX_CFG(DA830, GPIO1_12,    17, 8,  0xf,    8,  false)
0412     MUX_CFG(DA830, GPIO1_13,    17, 12, 0xf,    8,  false)
0413     MUX_CFG(DA830, GPIO1_14,    17, 16, 0xf,    8,  false)
0414     MUX_CFG(DA830, GPIO1_15,    17, 20, 0xf,    8,  false)
0415     MUX_CFG(DA830, GPIO2_0,     17, 24, 0xf,    8,  false)
0416     MUX_CFG(DA830, GPIO2_1,     17, 28, 0xf,    8,  false)
0417     MUX_CFG(DA830, NEMA_RAS,    18, 0,  0xf,    1,  false)
0418     MUX_CFG(DA830, NEMA_WE,     18, 4,  0xf,    1,  false)
0419     MUX_CFG(DA830, NEMA_CS_0,   18, 8,  0xf,    1,  false)
0420     MUX_CFG(DA830, NEMA_CS_2,   18, 12, 0xf,    1,  false)
0421     MUX_CFG(DA830, NEMA_CS_3,   18, 16, 0xf,    1,  false)
0422     MUX_CFG(DA830, NEMA_OE,     18, 20, 0xf,    1,  false)
0423     MUX_CFG(DA830, NEMA_WE_DQM_1,   18, 24, 0xf,    1,  false)
0424     MUX_CFG(DA830, NEMA_WE_DQM_0,   18, 28, 0xf,    1,  false)
0425     MUX_CFG(DA830, NEMA_CS_5,   18, 0,  0xf,    2,  false)
0426     MUX_CFG(DA830, UHPI_HRNW,   18, 4,  0xf,    2,  false)
0427     MUX_CFG(DA830, NUHPI_HAS,   18, 8,  0xf,    2,  false)
0428     MUX_CFG(DA830, NUHPI_HCS,   18, 12, 0xf,    2,  false)
0429     MUX_CFG(DA830, NUHPI_HDS1,  18, 20, 0xf,    2,  false)
0430     MUX_CFG(DA830, NUHPI_HDS2,  18, 24, 0xf,    2,  false)
0431     MUX_CFG(DA830, NUHPI_HINT,  18, 28, 0xf,    2,  false)
0432     MUX_CFG(DA830, AXR0_12,     18, 4,  0xf,    4,  false)
0433     MUX_CFG(DA830, AMUTE2,      18, 16, 0xf,    4,  false)
0434     MUX_CFG(DA830, AXR0_13,     18, 20, 0xf,    4,  false)
0435     MUX_CFG(DA830, AXR0_14,     18, 24, 0xf,    4,  false)
0436     MUX_CFG(DA830, AXR0_15,     18, 28, 0xf,    4,  false)
0437     MUX_CFG(DA830, GPIO2_2,     18, 0,  0xf,    8,  false)
0438     MUX_CFG(DA830, GPIO2_3,     18, 4,  0xf,    8,  false)
0439     MUX_CFG(DA830, GPIO2_4,     18, 8,  0xf,    8,  false)
0440     MUX_CFG(DA830, GPIO2_5,     18, 12, 0xf,    8,  false)
0441     MUX_CFG(DA830, GPIO2_6,     18, 16, 0xf,    8,  false)
0442     MUX_CFG(DA830, GPIO2_7,     18, 20, 0xf,    8,  false)
0443     MUX_CFG(DA830, GPIO2_8,     18, 24, 0xf,    8,  false)
0444     MUX_CFG(DA830, GPIO2_9,     18, 28, 0xf,    8,  false)
0445     MUX_CFG(DA830, EMA_WAIT_0,  19, 0,  0xf,    1,  false)
0446     MUX_CFG(DA830, NUHPI_HRDY,  19, 0,  0xf,    2,  false)
0447     MUX_CFG(DA830, GPIO2_10,    19, 0,  0xf,    8,  false)
0448 #endif
0449 };
0450 
0451 const short da830_emif25_pins[] __initconst = {
0452     DA830_EMA_D_0, DA830_EMA_D_1, DA830_EMA_D_2, DA830_EMA_D_3,
0453     DA830_EMA_D_4, DA830_EMA_D_5, DA830_EMA_D_6, DA830_EMA_D_7,
0454     DA830_EMA_D_8, DA830_EMA_D_9, DA830_EMA_D_10, DA830_EMA_D_11,
0455     DA830_EMA_D_12, DA830_EMA_D_13, DA830_EMA_D_14, DA830_EMA_D_15,
0456     DA830_EMA_A_0, DA830_EMA_A_1, DA830_EMA_A_2, DA830_EMA_A_3,
0457     DA830_EMA_A_4, DA830_EMA_A_5, DA830_EMA_A_6, DA830_EMA_A_7,
0458     DA830_EMA_A_8, DA830_EMA_A_9, DA830_EMA_A_10, DA830_EMA_A_11,
0459     DA830_EMA_A_12, DA830_EMA_BA_0, DA830_EMA_BA_1, DA830_EMA_CLK,
0460     DA830_EMA_SDCKE, DA830_NEMA_CS_4, DA830_NEMA_CS_5, DA830_NEMA_WE,
0461     DA830_NEMA_CS_0, DA830_NEMA_CS_2, DA830_NEMA_CS_3, DA830_NEMA_OE,
0462     DA830_NEMA_WE_DQM_1, DA830_NEMA_WE_DQM_0, DA830_EMA_WAIT_0,
0463     -1
0464 };
0465 
0466 const short da830_spi0_pins[] __initconst = {
0467     DA830_SPI0_SOMI_0, DA830_SPI0_SIMO_0, DA830_SPI0_CLK, DA830_NSPI0_ENA,
0468     DA830_NSPI0_SCS_0,
0469     -1
0470 };
0471 
0472 const short da830_spi1_pins[] __initconst = {
0473     DA830_SPI1_SOMI_0, DA830_SPI1_SIMO_0, DA830_SPI1_CLK, DA830_NSPI1_ENA,
0474     DA830_NSPI1_SCS_0,
0475     -1
0476 };
0477 
0478 const short da830_mmc_sd_pins[] __initconst = {
0479     DA830_MMCSD_DAT_0, DA830_MMCSD_DAT_1, DA830_MMCSD_DAT_2,
0480     DA830_MMCSD_DAT_3, DA830_MMCSD_DAT_4, DA830_MMCSD_DAT_5,
0481     DA830_MMCSD_DAT_6, DA830_MMCSD_DAT_7, DA830_MMCSD_CLK,
0482     DA830_MMCSD_CMD,
0483     -1
0484 };
0485 
0486 const short da830_uart0_pins[] __initconst = {
0487     DA830_NUART0_CTS, DA830_NUART0_RTS, DA830_UART0_RXD, DA830_UART0_TXD,
0488     -1
0489 };
0490 
0491 const short da830_uart1_pins[] __initconst = {
0492     DA830_UART1_RXD, DA830_UART1_TXD,
0493     -1
0494 };
0495 
0496 const short da830_uart2_pins[] __initconst = {
0497     DA830_UART2_RXD, DA830_UART2_TXD,
0498     -1
0499 };
0500 
0501 const short da830_usb20_pins[] __initconst = {
0502     DA830_USB0_DRVVBUS, DA830_USB_REFCLKIN,
0503     -1
0504 };
0505 
0506 const short da830_usb11_pins[] __initconst = {
0507     DA830_USB_REFCLKIN,
0508     -1
0509 };
0510 
0511 const short da830_uhpi_pins[] __initconst = {
0512     DA830_UHPI_HD_0, DA830_UHPI_HD_1, DA830_UHPI_HD_2, DA830_UHPI_HD_3,
0513     DA830_UHPI_HD_4, DA830_UHPI_HD_5, DA830_UHPI_HD_6, DA830_UHPI_HD_7,
0514     DA830_UHPI_HD_8, DA830_UHPI_HD_9, DA830_UHPI_HD_10, DA830_UHPI_HD_11,
0515     DA830_UHPI_HD_12, DA830_UHPI_HD_13, DA830_UHPI_HD_14, DA830_UHPI_HD_15,
0516     DA830_UHPI_HCNTL0, DA830_UHPI_HCNTL1, DA830_UHPI_HHWIL, DA830_UHPI_HRNW,
0517     DA830_NUHPI_HAS, DA830_NUHPI_HCS, DA830_NUHPI_HDS1, DA830_NUHPI_HDS2,
0518     DA830_NUHPI_HINT, DA830_NUHPI_HRDY,
0519     -1
0520 };
0521 
0522 const short da830_cpgmac_pins[] __initconst = {
0523     DA830_RMII_TXD_0, DA830_RMII_TXD_1, DA830_RMII_TXEN, DA830_RMII_CRS_DV,
0524     DA830_RMII_RXD_0, DA830_RMII_RXD_1, DA830_RMII_RXER, DA830_MDIO_CLK,
0525     DA830_MDIO_D,
0526     -1
0527 };
0528 
0529 const short da830_emif3c_pins[] __initconst = {
0530     DA830_EMB_SDCKE, DA830_EMB_CLK_GLUE, DA830_EMB_CLK, DA830_NEMB_CS_0,
0531     DA830_NEMB_CAS, DA830_NEMB_RAS, DA830_NEMB_WE, DA830_EMB_BA_1,
0532     DA830_EMB_BA_0, DA830_EMB_A_0, DA830_EMB_A_1, DA830_EMB_A_2,
0533     DA830_EMB_A_3, DA830_EMB_A_4, DA830_EMB_A_5, DA830_EMB_A_6,
0534     DA830_EMB_A_7, DA830_EMB_A_8, DA830_EMB_A_9, DA830_EMB_A_10,
0535     DA830_EMB_A_11, DA830_EMB_A_12, DA830_NEMB_WE_DQM_3,
0536     DA830_NEMB_WE_DQM_2, DA830_EMB_D_0, DA830_EMB_D_1, DA830_EMB_D_2,
0537     DA830_EMB_D_3, DA830_EMB_D_4, DA830_EMB_D_5, DA830_EMB_D_6,
0538     DA830_EMB_D_7, DA830_EMB_D_8, DA830_EMB_D_9, DA830_EMB_D_10,
0539     DA830_EMB_D_11, DA830_EMB_D_12, DA830_EMB_D_13, DA830_EMB_D_14,
0540     DA830_EMB_D_15, DA830_EMB_D_16, DA830_EMB_D_17, DA830_EMB_D_18,
0541     DA830_EMB_D_19, DA830_EMB_D_20, DA830_EMB_D_21, DA830_EMB_D_22,
0542     DA830_EMB_D_23, DA830_EMB_D_24, DA830_EMB_D_25, DA830_EMB_D_26,
0543     DA830_EMB_D_27, DA830_EMB_D_28, DA830_EMB_D_29, DA830_EMB_D_30,
0544     DA830_EMB_D_31, DA830_NEMB_WE_DQM_1, DA830_NEMB_WE_DQM_0,
0545     -1
0546 };
0547 
0548 const short da830_mcasp0_pins[] __initconst = {
0549     DA830_AHCLKX0, DA830_ACLKX0, DA830_AFSX0,
0550     DA830_AHCLKR0, DA830_ACLKR0, DA830_AFSR0, DA830_AMUTE0,
0551     DA830_AXR0_0, DA830_AXR0_1, DA830_AXR0_2, DA830_AXR0_3,
0552     DA830_AXR0_4, DA830_AXR0_5, DA830_AXR0_6, DA830_AXR0_7,
0553     DA830_AXR0_8, DA830_AXR0_9, DA830_AXR0_10, DA830_AXR0_11,
0554     DA830_AXR0_12, DA830_AXR0_13, DA830_AXR0_14, DA830_AXR0_15,
0555     -1
0556 };
0557 
0558 const short da830_mcasp1_pins[] __initconst = {
0559     DA830_AHCLKX1, DA830_ACLKX1, DA830_AFSX1,
0560     DA830_AHCLKR1, DA830_ACLKR1, DA830_AFSR1, DA830_AMUTE1,
0561     DA830_AXR1_0, DA830_AXR1_1, DA830_AXR1_2, DA830_AXR1_3,
0562     DA830_AXR1_4, DA830_AXR1_5, DA830_AXR1_6, DA830_AXR1_7,
0563     DA830_AXR1_8, DA830_AXR1_9, DA830_AXR1_10, DA830_AXR1_11,
0564     -1
0565 };
0566 
0567 const short da830_mcasp2_pins[] __initconst = {
0568     DA830_AHCLKX2, DA830_ACLKX2, DA830_AFSX2,
0569     DA830_AHCLKR2, DA830_ACLKR2, DA830_AFSR2, DA830_AMUTE2,
0570     DA830_AXR2_0, DA830_AXR2_1, DA830_AXR2_2, DA830_AXR2_3,
0571     -1
0572 };
0573 
0574 const short da830_i2c0_pins[] __initconst = {
0575     DA830_I2C0_SDA, DA830_I2C0_SCL,
0576     -1
0577 };
0578 
0579 const short da830_i2c1_pins[] __initconst = {
0580     DA830_I2C1_SCL, DA830_I2C1_SDA,
0581     -1
0582 };
0583 
0584 const short da830_lcdcntl_pins[] __initconst = {
0585     DA830_LCD_D_0, DA830_LCD_D_1, DA830_LCD_D_2, DA830_LCD_D_3,
0586     DA830_LCD_D_4, DA830_LCD_D_5, DA830_LCD_D_6, DA830_LCD_D_7,
0587     DA830_LCD_D_8, DA830_LCD_D_9, DA830_LCD_D_10, DA830_LCD_D_11,
0588     DA830_LCD_D_12, DA830_LCD_D_13, DA830_LCD_D_14, DA830_LCD_D_15,
0589     DA830_LCD_PCLK, DA830_LCD_HSYNC, DA830_LCD_VSYNC, DA830_NLCD_AC_ENB_CS,
0590     DA830_LCD_MCLK,
0591     -1
0592 };
0593 
0594 const short da830_pwm_pins[] __initconst = {
0595     DA830_ECAP0_APWM0, DA830_ECAP1_APWM1, DA830_EPWM0B, DA830_EPWM0A,
0596     DA830_EPWMSYNCI, DA830_EPWMSYNC0, DA830_ECAP2_APWM2, DA830_EHRPWMGLUETZ,
0597     DA830_EPWM2B, DA830_EPWM2A, DA830_EPWM1B, DA830_EPWM1A,
0598     -1
0599 };
0600 
0601 const short da830_ecap0_pins[] __initconst = {
0602     DA830_ECAP0_APWM0,
0603     -1
0604 };
0605 
0606 const short da830_ecap1_pins[] __initconst = {
0607     DA830_ECAP1_APWM1,
0608     -1
0609 };
0610 
0611 const short da830_ecap2_pins[] __initconst = {
0612     DA830_ECAP2_APWM2,
0613     -1
0614 };
0615 
0616 const short da830_eqep0_pins[] __initconst = {
0617     DA830_EQEP0I, DA830_EQEP0S, DA830_EQEP0A, DA830_EQEP0B,
0618     -1
0619 };
0620 
0621 const short da830_eqep1_pins[] __initconst = {
0622     DA830_EQEP1I, DA830_EQEP1S, DA830_EQEP1A, DA830_EQEP1B,
0623     -1
0624 };
0625 
0626 static struct map_desc da830_io_desc[] = {
0627     {
0628         .virtual    = IO_VIRT,
0629         .pfn        = __phys_to_pfn(IO_PHYS),
0630         .length     = IO_SIZE,
0631         .type       = MT_DEVICE
0632     },
0633     {
0634         .virtual    = DA8XX_CP_INTC_VIRT,
0635         .pfn        = __phys_to_pfn(DA8XX_CP_INTC_BASE),
0636         .length     = DA8XX_CP_INTC_SIZE,
0637         .type       = MT_DEVICE
0638     },
0639 };
0640 
0641 /* Contents of JTAG ID register used to identify exact cpu type */
0642 static struct davinci_id da830_ids[] = {
0643     {
0644         .variant    = 0x0,
0645         .part_no    = 0xb7df,
0646         .manufacturer   = 0x017,    /* 0x02f >> 1 */
0647         .cpu_id     = DAVINCI_CPU_ID_DA830,
0648         .name       = "da830/omap-l137 rev1.0",
0649     },
0650     {
0651         .variant    = 0x8,
0652         .part_no    = 0xb7df,
0653         .manufacturer   = 0x017,
0654         .cpu_id     = DAVINCI_CPU_ID_DA830,
0655         .name       = "da830/omap-l137 rev1.1",
0656     },
0657     {
0658         .variant    = 0x9,
0659         .part_no    = 0xb7df,
0660         .manufacturer   = 0x017,
0661         .cpu_id     = DAVINCI_CPU_ID_DA830,
0662         .name       = "da830/omap-l137 rev2.0",
0663     },
0664 };
0665 
0666 static struct davinci_gpio_platform_data da830_gpio_platform_data = {
0667     .no_auto_base   = true,
0668     .base       = 0,
0669     .ngpio      = 128,
0670 };
0671 
0672 int __init da830_register_gpio(void)
0673 {
0674     return da8xx_register_gpio(&da830_gpio_platform_data);
0675 }
0676 
0677 /*
0678  * Bottom half of timer0 is used both for clock even and clocksource.
0679  * Top half is used by DSP.
0680  */
0681 static const struct davinci_timer_cfg da830_timer_cfg = {
0682     .reg = DEFINE_RES_IO(DA8XX_TIMER64P0_BASE, SZ_4K),
0683     .irq = {
0684         DEFINE_RES_IRQ(DAVINCI_INTC_IRQ(IRQ_DA830_T12CMPINT0_0)),
0685         DEFINE_RES_IRQ(DAVINCI_INTC_IRQ(IRQ_DA8XX_TINT12_0)),
0686     },
0687     .cmp_off = DA830_CMP12_0,
0688 };
0689 
0690 static const struct davinci_soc_info davinci_soc_info_da830 = {
0691     .io_desc        = da830_io_desc,
0692     .io_desc_num        = ARRAY_SIZE(da830_io_desc),
0693     .jtag_id_reg        = DA8XX_SYSCFG0_BASE + DA8XX_JTAG_ID_REG,
0694     .ids            = da830_ids,
0695     .ids_num        = ARRAY_SIZE(da830_ids),
0696     .pinmux_base        = DA8XX_SYSCFG0_BASE + 0x120,
0697     .pinmux_pins        = da830_pins,
0698     .pinmux_pins_num    = ARRAY_SIZE(da830_pins),
0699     .emac_pdata     = &da8xx_emac_pdata,
0700 };
0701 
0702 void __init da830_init(void)
0703 {
0704     davinci_common_init(&davinci_soc_info_da830);
0705 
0706     da8xx_syscfg0_base = ioremap(DA8XX_SYSCFG0_BASE, SZ_4K);
0707     WARN(!da8xx_syscfg0_base, "Unable to map syscfg0 module");
0708 }
0709 
0710 static const struct davinci_cp_intc_config da830_cp_intc_config = {
0711     .reg = {
0712         .start      = DA8XX_CP_INTC_BASE,
0713         .end        = DA8XX_CP_INTC_BASE + SZ_8K - 1,
0714         .flags      = IORESOURCE_MEM,
0715     },
0716     .num_irqs       = DA830_N_CP_INTC_IRQ,
0717 };
0718 
0719 void __init da830_init_irq(void)
0720 {
0721     davinci_cp_intc_init(&da830_cp_intc_config);
0722 }
0723 
0724 void __init da830_init_time(void)
0725 {
0726     void __iomem *pll;
0727     struct clk *clk;
0728     int rv;
0729 
0730     clk_register_fixed_rate(NULL, "ref_clk", NULL, 0, DA830_REF_FREQ);
0731 
0732     pll = ioremap(DA8XX_PLL0_BASE, SZ_4K);
0733 
0734     da830_pll_init(NULL, pll, NULL);
0735 
0736     clk = clk_get(NULL, "timer0");
0737     if (WARN_ON(IS_ERR(clk))) {
0738         pr_err("Unable to get the timer clock\n");
0739         return;
0740     }
0741 
0742     rv = davinci_timer_register(clk, &da830_timer_cfg);
0743     WARN(rv, "Unable to register the timer: %d\n", rv);
0744 }
0745 
0746 static struct resource da830_psc0_resources[] = {
0747     {
0748         .start  = DA8XX_PSC0_BASE,
0749         .end    = DA8XX_PSC0_BASE + SZ_4K - 1,
0750         .flags  = IORESOURCE_MEM,
0751     },
0752 };
0753 
0754 static struct platform_device da830_psc0_device = {
0755     .name       = "da830-psc0",
0756     .id     = -1,
0757     .resource   = da830_psc0_resources,
0758     .num_resources  = ARRAY_SIZE(da830_psc0_resources),
0759 };
0760 
0761 static struct resource da830_psc1_resources[] = {
0762     {
0763         .start  = DA8XX_PSC1_BASE,
0764         .end    = DA8XX_PSC1_BASE + SZ_4K - 1,
0765         .flags  = IORESOURCE_MEM,
0766     },
0767 };
0768 
0769 static struct platform_device da830_psc1_device = {
0770     .name       = "da830-psc1",
0771     .id     = -1,
0772     .resource   = da830_psc1_resources,
0773     .num_resources  = ARRAY_SIZE(da830_psc1_resources),
0774 };
0775 
0776 void __init da830_register_clocks(void)
0777 {
0778     /* PLL is registered in da830_init_time() */
0779     platform_device_register(&da830_psc0_device);
0780     platform_device_register(&da830_psc1_device);
0781 }