Commit bb13b5fd authored by Tony Lindgren's avatar Tony Lindgren Committed by Russell King

[PATCH] ARM: 2804/1: OMAP update 9/11: Update OMAP arch files

Patch from Tony Lindgren

This patch by various OMAP developers syncs the OMAP
specific arch files with the linux-omap tree.
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent d48af15e
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/arch/tc.h> #include <asm/arch/tc.h>
extern int clk_init(void);
extern void omap_check_revision(void); extern void omap_check_revision(void);
/* /*
......
...@@ -19,6 +19,19 @@ endchoice ...@@ -19,6 +19,19 @@ endchoice
comment "OMAP Feature Selections" comment "OMAP Feature Selections"
config OMAP_RESET_CLOCKS
bool "Reset unused clocks during boot"
depends on ARCH_OMAP
default n
help
Say Y if you want to reset unused clocks during boot.
This option saves power, but assumes all drivers are
using the clock framework. Broken drivers that do not
yet use clock framework may not work with this option.
If you are booting from another operating system, you
probably do not want this option enabled until your
device drivers work properly.
config OMAP_MUX config OMAP_MUX
bool "OMAP multiplexing support" bool "OMAP multiplexing support"
depends on ARCH_OMAP depends on ARCH_OMAP
......
This diff is collapsed.
...@@ -52,6 +52,8 @@ struct mpu_rate { ...@@ -52,6 +52,8 @@ struct mpu_rate {
#define CLOCK_IN_OMAP16XX 64 #define CLOCK_IN_OMAP16XX 64
#define CLOCK_IN_OMAP1510 128 #define CLOCK_IN_OMAP1510 128
#define CLOCK_IN_OMAP730 256 #define CLOCK_IN_OMAP730 256
#define DSP_DOMAIN_CLOCK 512
#define VIRTUAL_IO_ADDRESS 1024
/* ARM_CKCTL bit shifts */ /* ARM_CKCTL bit shifts */
#define CKCTL_PERDIV_OFFSET 0 #define CKCTL_PERDIV_OFFSET 0
...@@ -63,6 +65,8 @@ struct mpu_rate { ...@@ -63,6 +65,8 @@ struct mpu_rate {
/*#define ARM_TIMXO 12*/ /*#define ARM_TIMXO 12*/
#define EN_DSPCK 13 #define EN_DSPCK 13
/*#define ARM_INTHCK_SEL 14*/ /* Divide-by-2 for mpu inth_ck */ /*#define ARM_INTHCK_SEL 14*/ /* Divide-by-2 for mpu inth_ck */
/* DSP_CKCTL bit shifts */
#define CKCTL_DSPPERDIV_OFFSET 0
/* ARM_IDLECT1 bit shifts */ /* ARM_IDLECT1 bit shifts */
/*#define IDLWDT_ARM 0*/ /*#define IDLWDT_ARM 0*/
...@@ -96,6 +100,9 @@ struct mpu_rate { ...@@ -96,6 +100,9 @@ struct mpu_rate {
#define EN_TC1_CK 2 #define EN_TC1_CK 2
#define EN_TC2_CK 4 #define EN_TC2_CK 4
/* DSP_IDLECT2 bit shifts (0,1,2 are same as for ARM_IDLECT2) */
#define EN_DSPTIMCK 5
/* Various register defines for clock controls scattered around OMAP chip */ /* Various register defines for clock controls scattered around OMAP chip */
#define USB_MCLK_EN_BIT 4 /* In ULPD_CLKC_CTRL */ #define USB_MCLK_EN_BIT 4 /* In ULPD_CLKC_CTRL */
#define USB_HOST_HHC_UHOST_EN 9 /* In MOD_CONF_CTRL_0 */ #define USB_HOST_HHC_UHOST_EN 9 /* In MOD_CONF_CTRL_0 */
...@@ -103,7 +110,8 @@ struct mpu_rate { ...@@ -103,7 +110,8 @@ struct mpu_rate {
#define COM_ULPD_PLL_CLK_REQ 1 /* In COM_CLK_DIV_CTRL_SEL */ #define COM_ULPD_PLL_CLK_REQ 1 /* In COM_CLK_DIV_CTRL_SEL */
#define SWD_CLK_DIV_CTRL_SEL 0xfffe0874 #define SWD_CLK_DIV_CTRL_SEL 0xfffe0874
#define COM_CLK_DIV_CTRL_SEL 0xfffe0878 #define COM_CLK_DIV_CTRL_SEL 0xfffe0878
#define SOFT_REQ_REG 0xfffe0834
#define SOFT_REQ_REG2 0xfffe0880
int clk_register(struct clk *clk); int clk_register(struct clk *clk);
void clk_unregister(struct clk *clk); void clk_unregister(struct clk *clk);
......
...@@ -794,10 +794,6 @@ static void set_b1_regs(void) ...@@ -794,10 +794,6 @@ static void set_b1_regs(void)
w = omap_readw(OMAP1610_DMA_LCD_CTRL); w = omap_readw(OMAP1610_DMA_LCD_CTRL);
/* Always set the source port as SDRAM for now*/ /* Always set the source port as SDRAM for now*/
w &= ~(0x03 << 6); w &= ~(0x03 << 6);
if (lcd_dma.ext_ctrl)
w |= 1 << 8;
else
w &= ~(1 << 8);
if (lcd_dma.callback != NULL) if (lcd_dma.callback != NULL)
w |= 1 << 1; /* Block interrupt enable */ w |= 1 << 1; /* Block interrupt enable */
else else
...@@ -889,9 +885,15 @@ void omap_enable_lcd_dma(void) ...@@ -889,9 +885,15 @@ void omap_enable_lcd_dma(void)
*/ */
if (enable_1510_mode || !lcd_dma.ext_ctrl) if (enable_1510_mode || !lcd_dma.ext_ctrl)
return; return;
w = omap_readw(OMAP1610_DMA_LCD_CTRL);
w |= 1 << 8;
omap_writew(w, OMAP1610_DMA_LCD_CTRL);
w = omap_readw(OMAP1610_DMA_LCD_CCR); w = omap_readw(OMAP1610_DMA_LCD_CCR);
w |= 1 << 7; w |= 1 << 7;
omap_writew(w, OMAP1610_DMA_LCD_CCR); omap_writew(w, OMAP1610_DMA_LCD_CCR);
lcd_dma.active = 1; lcd_dma.active = 1;
} }
...@@ -922,10 +924,19 @@ void omap_setup_lcd_dma(void) ...@@ -922,10 +924,19 @@ void omap_setup_lcd_dma(void)
void omap_stop_lcd_dma(void) void omap_stop_lcd_dma(void)
{ {
u16 w;
lcd_dma.active = 0; lcd_dma.active = 0;
if (!enable_1510_mode && lcd_dma.ext_ctrl) if (enable_1510_mode || !lcd_dma.ext_ctrl)
omap_writew(omap_readw(OMAP1610_DMA_LCD_CCR) & ~(1 << 7), return;
OMAP1610_DMA_LCD_CCR);
w = omap_readw(OMAP1610_DMA_LCD_CCR);
w &= ~(1 << 7);
omap_writew(w, OMAP1610_DMA_LCD_CCR);
w = omap_readw(OMAP1610_DMA_LCD_CTRL);
w &= ~(1 << 8);
omap_writew(w, OMAP1610_DMA_LCD_CTRL);
} }
/* /*
...@@ -972,6 +983,25 @@ dma_addr_t omap_get_dma_dst_pos(int lch) ...@@ -972,6 +983,25 @@ dma_addr_t omap_get_dma_dst_pos(int lch)
(OMAP_DMA_CDSA_U(lch) << 16)); (OMAP_DMA_CDSA_U(lch) << 16));
} }
int omap_dma_running(void)
{
int lch;
/* Check if LCD DMA is running */
if (cpu_is_omap16xx())
if (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN)
return 1;
for (lch = 0; lch < dma_chan_count; lch++) {
u16 w;
w = omap_readw(OMAP_DMA_CCR(lch));
if (w & OMAP_DMA_CCR_EN)
return 1;
}
return 0;
}
static int __init omap_init_dma(void) static int __init omap_init_dma(void)
{ {
int ch, r; int ch, r;
......
...@@ -66,6 +66,7 @@ struct omap_mcbsp { ...@@ -66,6 +66,7 @@ struct omap_mcbsp {
static struct omap_mcbsp mcbsp[OMAP_MAX_MCBSP_COUNT]; static struct omap_mcbsp mcbsp[OMAP_MAX_MCBSP_COUNT];
static struct clk *mcbsp_dsp_ck = 0; static struct clk *mcbsp_dsp_ck = 0;
static struct clk *mcbsp_api_ck = 0; static struct clk *mcbsp_api_ck = 0;
static struct clk *mcbsp_dspxor_ck = 0;
static void omap_mcbsp_dump_reg(u8 id) static void omap_mcbsp_dump_reg(u8 id)
...@@ -175,7 +176,7 @@ static int omap_mcbsp_check(unsigned int id) ...@@ -175,7 +176,7 @@ static int omap_mcbsp_check(unsigned int id)
return 0; return 0;
} }
if (cpu_is_omap1510() || cpu_is_omap1610() || cpu_is_omap1710()) { if (cpu_is_omap1510() || cpu_is_omap16xx()) {
if (id > OMAP_MAX_MCBSP_COUNT) { if (id > OMAP_MAX_MCBSP_COUNT) {
printk(KERN_ERR "OMAP-McBSP: McBSP%d doesn't exist\n", id + 1); printk(KERN_ERR "OMAP-McBSP: McBSP%d doesn't exist\n", id + 1);
return -1; return -1;
...@@ -191,15 +192,12 @@ static int omap_mcbsp_check(unsigned int id) ...@@ -191,15 +192,12 @@ static int omap_mcbsp_check(unsigned int id)
static void omap_mcbsp_dsp_request(void) static void omap_mcbsp_dsp_request(void)
{ {
if (cpu_is_omap1510() || cpu_is_omap1610() || cpu_is_omap1710()) { if (cpu_is_omap1510() || cpu_is_omap16xx()) {
omap_writew((omap_readw(ARM_RSTCT1) | (1 << 1) | (1 << 2)), clk_use(mcbsp_dsp_ck);
ARM_RSTCT1); clk_use(mcbsp_api_ck);
clk_enable(mcbsp_dsp_ck);
clk_enable(mcbsp_api_ck);
/* enable 12MHz clock to mcbsp 1 & 3 */ /* enable 12MHz clock to mcbsp 1 & 3 */
__raw_writew(__raw_readw(DSP_IDLECT2) | (1 << EN_XORPCK), clk_use(mcbsp_dspxor_ck);
DSP_IDLECT2);
__raw_writew(__raw_readw(DSP_RSTCT2) | 1 | 1 << 1, __raw_writew(__raw_readw(DSP_RSTCT2) | 1 | 1 << 1,
DSP_RSTCT2); DSP_RSTCT2);
} }
...@@ -207,10 +205,13 @@ static void omap_mcbsp_dsp_request(void) ...@@ -207,10 +205,13 @@ static void omap_mcbsp_dsp_request(void)
static void omap_mcbsp_dsp_free(void) static void omap_mcbsp_dsp_free(void)
{ {
/* Useless for now */ if (cpu_is_omap1510() || cpu_is_omap16xx()) {
clk_unuse(mcbsp_dspxor_ck);
clk_unuse(mcbsp_dsp_ck);
clk_unuse(mcbsp_api_ck);
}
} }
int omap_mcbsp_request(unsigned int id) int omap_mcbsp_request(unsigned int id)
{ {
int err; int err;
...@@ -350,6 +351,73 @@ void omap_mcbsp_stop(unsigned int id) ...@@ -350,6 +351,73 @@ void omap_mcbsp_stop(unsigned int id)
} }
/* polled mcbsp i/o operations */
int omap_mcbsp_pollwrite(unsigned int id, u16 buf)
{
u32 base = mcbsp[id].io_base;
writew(buf, base + OMAP_MCBSP_REG_DXR1);
/* if frame sync error - clear the error */
if (readw(base + OMAP_MCBSP_REG_SPCR2) & XSYNC_ERR) {
/* clear error */
writew(readw(base + OMAP_MCBSP_REG_SPCR2) & (~XSYNC_ERR),
base + OMAP_MCBSP_REG_SPCR2);
/* resend */
return -1;
} else {
/* wait for transmit confirmation */
int attemps = 0;
while (!(readw(base + OMAP_MCBSP_REG_SPCR2) & XRDY)) {
if (attemps++ > 1000) {
writew(readw(base + OMAP_MCBSP_REG_SPCR2) &
(~XRST),
base + OMAP_MCBSP_REG_SPCR2);
udelay(10);
writew(readw(base + OMAP_MCBSP_REG_SPCR2) |
(XRST),
base + OMAP_MCBSP_REG_SPCR2);
udelay(10);
printk(KERN_ERR
" Could not write to McBSP Register\n");
return -2;
}
}
}
return 0;
}
int omap_mcbsp_pollread(unsigned int id, u16 * buf)
{
u32 base = mcbsp[id].io_base;
/* if frame sync error - clear the error */
if (readw(base + OMAP_MCBSP_REG_SPCR1) & RSYNC_ERR) {
/* clear error */
writew(readw(base + OMAP_MCBSP_REG_SPCR1) & (~RSYNC_ERR),
base + OMAP_MCBSP_REG_SPCR1);
/* resend */
return -1;
} else {
/* wait for recieve confirmation */
int attemps = 0;
while (!(readw(base + OMAP_MCBSP_REG_SPCR1) & RRDY)) {
if (attemps++ > 1000) {
writew(readw(base + OMAP_MCBSP_REG_SPCR1) &
(~RRST),
base + OMAP_MCBSP_REG_SPCR1);
udelay(10);
writew(readw(base + OMAP_MCBSP_REG_SPCR1) |
(RRST),
base + OMAP_MCBSP_REG_SPCR1);
udelay(10);
printk(KERN_ERR
" Could not read from McBSP Register\n");
return -2;
}
}
}
*buf = readw(base + OMAP_MCBSP_REG_DRR1);
return 0;
}
/* /*
* IRQ based word transmission. * IRQ based word transmission.
*/ */
...@@ -625,10 +693,15 @@ static int __init omap_mcbsp_init(void) ...@@ -625,10 +693,15 @@ static int __init omap_mcbsp_init(void)
return PTR_ERR(mcbsp_dsp_ck); return PTR_ERR(mcbsp_dsp_ck);
} }
mcbsp_api_ck = clk_get(0, "api_ck"); mcbsp_api_ck = clk_get(0, "api_ck");
if (IS_ERR(mcbsp_dsp_ck)) { if (IS_ERR(mcbsp_api_ck)) {
printk(KERN_ERR "mcbsp: could not acquire api_ck handle.\n"); printk(KERN_ERR "mcbsp: could not acquire api_ck handle.\n");
return PTR_ERR(mcbsp_api_ck); return PTR_ERR(mcbsp_api_ck);
} }
mcbsp_dspxor_ck = clk_get(0, "dspxor_ck");
if (IS_ERR(mcbsp_dspxor_ck)) {
printk(KERN_ERR "mcbsp: could not acquire dspxor_ck handle.\n");
return PTR_ERR(mcbsp_dspxor_ck);
}
#ifdef CONFIG_ARCH_OMAP730 #ifdef CONFIG_ARCH_OMAP730
if (cpu_is_omap730()) { if (cpu_is_omap730()) {
...@@ -643,7 +716,7 @@ static int __init omap_mcbsp_init(void) ...@@ -643,7 +716,7 @@ static int __init omap_mcbsp_init(void)
} }
#endif #endif
#if defined(CONFIG_ARCH_OMAP16XX) #if defined(CONFIG_ARCH_OMAP16XX)
if (cpu_is_omap1610() || cpu_is_omap1710()) { if (cpu_is_omap16xx()) {
mcbsp_info = mcbsp_1610; mcbsp_info = mcbsp_1610;
mcbsp_count = ARRAY_SIZE(mcbsp_1610); mcbsp_count = ARRAY_SIZE(mcbsp_1610);
} }
......
...@@ -53,19 +53,13 @@ omap_cfg_reg(const reg_cfg_t reg_cfg) ...@@ -53,19 +53,13 @@ omap_cfg_reg(const reg_cfg_t reg_cfg)
return -EINVAL; return -EINVAL;
} }
cfg = &reg_cfg_table[reg_cfg]; cfg = (reg_cfg_set *)&reg_cfg_table[reg_cfg];
/*
* We do a pretty long section here with lock on, but pin muxing
* should only happen on driver init for each driver, so it's not time
* critical.
*/
spin_lock_irqsave(&mux_spin_lock, flags);
/* Check the mux register in question */ /* Check the mux register in question */
if (cfg->mux_reg) { if (cfg->mux_reg) {
unsigned tmp1, tmp2; unsigned tmp1, tmp2;
spin_lock_irqsave(&mux_spin_lock, flags);
reg_orig = omap_readl(cfg->mux_reg); reg_orig = omap_readl(cfg->mux_reg);
/* The mux registers always seem to be 3 bits long */ /* The mux registers always seem to be 3 bits long */
...@@ -80,11 +74,13 @@ omap_cfg_reg(const reg_cfg_t reg_cfg) ...@@ -80,11 +74,13 @@ omap_cfg_reg(const reg_cfg_t reg_cfg)
warn = 1; warn = 1;
omap_writel(reg, cfg->mux_reg); omap_writel(reg, cfg->mux_reg);
spin_unlock_irqrestore(&mux_spin_lock, flags);
} }
/* Check for pull up or pull down selection on 1610 */ /* Check for pull up or pull down selection on 1610 */
if (!cpu_is_omap1510()) { if (!cpu_is_omap1510()) {
if (cfg->pu_pd_reg && cfg->pull_val) { if (cfg->pu_pd_reg && cfg->pull_val) {
spin_lock_irqsave(&mux_spin_lock, flags);
pu_pd_orig = omap_readl(cfg->pu_pd_reg); pu_pd_orig = omap_readl(cfg->pu_pd_reg);
mask = 1 << cfg->pull_bit; mask = 1 << cfg->pull_bit;
...@@ -100,11 +96,13 @@ omap_cfg_reg(const reg_cfg_t reg_cfg) ...@@ -100,11 +96,13 @@ omap_cfg_reg(const reg_cfg_t reg_cfg)
pu_pd = pu_pd_orig & ~mask; pu_pd = pu_pd_orig & ~mask;
} }
omap_writel(pu_pd, cfg->pu_pd_reg); omap_writel(pu_pd, cfg->pu_pd_reg);
spin_unlock_irqrestore(&mux_spin_lock, flags);
} }
} }
/* Check for an associated pull down register */ /* Check for an associated pull down register */
if (cfg->pull_reg) { if (cfg->pull_reg) {
spin_lock_irqsave(&mux_spin_lock, flags);
pull_orig = omap_readl(cfg->pull_reg); pull_orig = omap_readl(cfg->pull_reg);
mask = 1 << cfg->pull_bit; mask = 1 << cfg->pull_bit;
...@@ -121,6 +119,7 @@ omap_cfg_reg(const reg_cfg_t reg_cfg) ...@@ -121,6 +119,7 @@ omap_cfg_reg(const reg_cfg_t reg_cfg)
} }
omap_writel(pull, cfg->pull_reg); omap_writel(pull, cfg->pull_reg);
spin_unlock_irqrestore(&mux_spin_lock, flags);
} }
if (warn) { if (warn) {
...@@ -149,8 +148,6 @@ omap_cfg_reg(const reg_cfg_t reg_cfg) ...@@ -149,8 +148,6 @@ omap_cfg_reg(const reg_cfg_t reg_cfg)
} }
#endif #endif
spin_unlock_irqrestore(&mux_spin_lock, flags);
#ifdef CONFIG_OMAP_MUX_ERRORS #ifdef CONFIG_OMAP_MUX_ERRORS
return warn ? -ETXTBSY : 0; return warn ? -ETXTBSY : 0;
#else #else
......
...@@ -326,7 +326,7 @@ static u64 ohci_dmamask = ~(u32)0; ...@@ -326,7 +326,7 @@ static u64 ohci_dmamask = ~(u32)0;
static struct resource ohci_resources[] = { static struct resource ohci_resources[] = {
{ {
.start = OMAP_OHCI_BASE, .start = OMAP_OHCI_BASE,
.end = OMAP_OHCI_BASE + 4096, .end = OMAP_OHCI_BASE + 4096 - 1,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
{ {
......
...@@ -241,6 +241,7 @@ extern void omap_dma_unlink_lch (int lch_head, int lch_queue); ...@@ -241,6 +241,7 @@ extern void omap_dma_unlink_lch (int lch_head, int lch_queue);
extern dma_addr_t omap_get_dma_src_pos(int lch); extern dma_addr_t omap_get_dma_src_pos(int lch);
extern dma_addr_t omap_get_dma_dst_pos(int lch); extern dma_addr_t omap_get_dma_dst_pos(int lch);
extern void omap_clear_dma(int lch); extern void omap_clear_dma(int lch);
extern int omap_dma_running(void);
/* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */ /* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */
extern int omap_dma_in_1510_mode(void); extern int omap_dma_in_1510_mode(void);
......
...@@ -231,7 +231,7 @@ typedef enum { ...@@ -231,7 +231,7 @@ typedef enum {
J19_1610_ETM_D6, J19_1610_ETM_D6,
J18_1610_ETM_D7, J18_1610_ETM_D7,
/* OMAP-1610 GPIO */ /* OMAP16XX GPIO */
P20_1610_GPIO4, P20_1610_GPIO4,
V9_1610_GPIO7, V9_1610_GPIO7,
W8_1610_GPIO9, W8_1610_GPIO9,
...@@ -241,6 +241,9 @@ typedef enum { ...@@ -241,6 +241,9 @@ typedef enum {
AA20_1610_GPIO_41, AA20_1610_GPIO_41,
W19_1610_GPIO48, W19_1610_GPIO48,
M7_1610_GPIO62, M7_1610_GPIO62,
V14_16XX_GPIO37,
R9_16XX_GPIO18,
L14_16XX_GPIO49,
/* OMAP-1610 uWire */ /* OMAP-1610 uWire */
V19_1610_UWIRE_SCLK, V19_1610_UWIRE_SCLK,
...@@ -285,12 +288,13 @@ typedef enum { ...@@ -285,12 +288,13 @@ typedef enum {
V6_USB2_TXD, V6_USB2_TXD,
W5_USB2_SE0, W5_USB2_SE0,
/* UART1 1610 */ /* 16XX UART */
R13_1610_UART1_TX, R13_1610_UART1_TX,
V14_1610_UART1_RX, V14_16XX_UART1_RX,
R14_1610_UART1_CTS, R14_1610_UART1_CTS,
AA15_1610_UART1_RTS, AA15_1610_UART1_RTS,
R9_16XX_UART2_RX,
L14_16XX_UART3_RX,
/* I2C OMAP-1610 */ /* I2C OMAP-1610 */
I2C_SCL, I2C_SCL,
...@@ -332,7 +336,7 @@ typedef enum { ...@@ -332,7 +336,7 @@ typedef enum {
* Table of various FUNC_MUX and PULL_DWN combinations for each device. * Table of various FUNC_MUX and PULL_DWN combinations for each device.
* See also reg_cfg_t above for the lookup table. * See also reg_cfg_t above for the lookup table.
*/ */
static reg_cfg_set __initdata_or_module static const reg_cfg_set __initdata_or_module
reg_cfg_table[] = { reg_cfg_table[] = {
/* /*
* description mux mode mux pull pull pull pu_pd pu dbg * description mux mode mux pull pull pull pu_pd pu dbg
...@@ -455,7 +459,7 @@ MUX_CFG("L19_1610_ETM_D0", 5, 18, 1, 0, 26, 0, 0, 0, 1) ...@@ -455,7 +459,7 @@ MUX_CFG("L19_1610_ETM_D0", 5, 18, 1, 0, 26, 0, 0, 0, 1)
MUX_CFG("J19_1610_ETM_D6", 5, 0, 1, 0, 20, 0, 0, 0, 1) MUX_CFG("J19_1610_ETM_D6", 5, 0, 1, 0, 20, 0, 0, 0, 1)
MUX_CFG("J18_1610_ETM_D7", 5, 27, 1, 0, 19, 0, 0, 0, 1) MUX_CFG("J18_1610_ETM_D7", 5, 27, 1, 0, 19, 0, 0, 0, 1)
/* OMAP-1610 GPIO */ /* OMAP16XX GPIO */
MUX_CFG("P20_1610_GPIO4", 6, 27, 0, 1, 7, 0, 1, 1, 1) MUX_CFG("P20_1610_GPIO4", 6, 27, 0, 1, 7, 0, 1, 1, 1)
MUX_CFG("V9_1610_GPIO7", B, 12, 1, 2, 20, 0, 2, 1, 1) MUX_CFG("V9_1610_GPIO7", B, 12, 1, 2, 20, 0, 2, 1, 1)
MUX_CFG("W8_1610_GPIO9", B, 21, 0, 2, 23, 0, 2, 1, 1) MUX_CFG("W8_1610_GPIO9", B, 21, 0, 2, 23, 0, 2, 1, 1)
...@@ -465,6 +469,9 @@ MUX_CFG("V5_1610_GPIO24", B, 15, 7, 2, 21, 0, 2, 1, 1) ...@@ -465,6 +469,9 @@ MUX_CFG("V5_1610_GPIO24", B, 15, 7, 2, 21, 0, 2, 1, 1)
MUX_CFG("AA20_1610_GPIO_41", 9, 9, 7, 1, 31, 0, 1, 1, 1) MUX_CFG("AA20_1610_GPIO_41", 9, 9, 7, 1, 31, 0, 1, 1, 1)
MUX_CFG("W19_1610_GPIO48", 8, 15, 7, 1, 23, 1, 1, 0, 1) MUX_CFG("W19_1610_GPIO48", 8, 15, 7, 1, 23, 1, 1, 0, 1)
MUX_CFG("M7_1610_GPIO62", 10, 0, 0, 4, 24, 0, 4, 0, 1) MUX_CFG("M7_1610_GPIO62", 10, 0, 0, 4, 24, 0, 4, 0, 1)
MUX_CFG("V14_16XX_GPIO37", 9, 18, 7, 2, 2, 0, 2, 2, 0)
MUX_CFG("R9_16XX_GPIO18", C, 18, 7, 3, 0, 0, 3, 0, 0)
MUX_CFG("L14_16XX_GPIO49", 6, 3, 7, 0, 31, 0, 0, 31, 0)
/* OMAP-1610 uWire */ /* OMAP-1610 uWire */
MUX_CFG("V19_1610_UWIRE_SCLK", 8, 6, 0, 1, 20, 0, 1, 1, 1) MUX_CFG("V19_1610_UWIRE_SCLK", 8, 6, 0, 1, 20, 0, 1, 1, 1)
...@@ -503,16 +510,17 @@ MUX_CFG("Y10_USB0_SUSP", B, 3, 5, 2, 17, 0, 2, 0, 1) ...@@ -503,16 +510,17 @@ MUX_CFG("Y10_USB0_SUSP", B, 3, 5, 2, 17, 0, 2, 0, 1)
MUX_CFG("W9_USB2_TXEN", B, 9, 1, NA, 0, 0, NA, 0, 1) MUX_CFG("W9_USB2_TXEN", B, 9, 1, NA, 0, 0, NA, 0, 1)
MUX_CFG("AA9_USB2_VP", B, 6, 1, NA, 0, 0, NA, 0, 1) MUX_CFG("AA9_USB2_VP", B, 6, 1, NA, 0, 0, NA, 0, 1)
MUX_CFG("Y5_USB2_RCV", C, 21, 1, NA, 0, 0, NA, 0, 1) MUX_CFG("Y5_USB2_RCV", C, 21, 1, NA, 0, 0, NA, 0, 1)
MUX_CFG("R8_USB2_VM", C, 18, 1, NA, 0, 0, NA, 0, 1) MUX_CFG("R9_USB2_VM", C, 18, 1, NA, 0, 0, NA, 0, 1)
MUX_CFG("V6_USB2_TXD", C, 27, 2, NA, 0, 0, NA, 0, 1) MUX_CFG("V6_USB2_TXD", C, 27, 2, NA, 0, 0, NA, 0, 1)
MUX_CFG("W5_USB2_SE0", C, 24, 2, NA, 0, 0, NA, 0, 1) MUX_CFG("W5_USB2_SE0", C, 24, 2, NA, 0, 0, NA, 0, 1)
/* 16XX UART */
/* UART1 */
MUX_CFG("R13_1610_UART1_TX", A, 12, 6, 2, 10, 0, 2, 10, 1) MUX_CFG("R13_1610_UART1_TX", A, 12, 6, 2, 10, 0, 2, 10, 1)
MUX_CFG("V14_1610_UART1_RX", 9, 18, 0, 2, 2, 0, 2, 2, 1) MUX_CFG("V14_16XX_UART1_RX", 9, 18, 0, 2, 2, 0, 2, 2, 1)
MUX_CFG("R14_1610_UART1_CTS", 9, 15, 0, 2, 1, 0, 2, 1, 1) MUX_CFG("R14_1610_UART1_CTS", 9, 15, 0, 2, 1, 0, 2, 1, 1)
MUX_CFG("AA15_1610_UART1_RTS", 9, 12, 1, 2, 0, 0, 2, 0, 1) MUX_CFG("AA15_1610_UART1_RTS", 9, 12, 1, 2, 0, 0, 2, 0, 1)
MUX_CFG("R9_16XX_UART2_RX", C, 18, 0, 3, 0, 0, 3, 0, 1)
MUX_CFG("L14_16XX_UART3_RX", 6, 3, 0, 0, 31, 0, 0, 31, 1)
/* I2C interface */ /* I2C interface */
MUX_CFG("I2C_SCL", 7, 24, 0, NA, 0, 0, NA, 0, 0) MUX_CFG("I2C_SCL", 7, 24, 0, NA, 0, 0, NA, 0, 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment