Commit c44efbaa authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc

* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc: (32 commits)
  ARM: mmp: Change the way we use timer 0 as clockevent timer.
  ARM: mmp: Switch to using timer 1 as clocksource timer.
  ARM: mmp: Also start timer 1 on boot.
  ARM: pxa168/gplugd: free correct GPIO
  ARM: pxa168/gplugd: get rid of mfp-gplugd.h
  ARM: pxa: fix logic error in PJ4 iWMMXt handling
  mach-sa1100: fix PCI build problem
  omap: timer: Set dmtimer used as clocksource in autoreload mode
  OMAP3: am3517crane: remove NULL board_mux from board file
  arm: mach-omap2: mux: use kstrdup()
  arch:arm:plat-omap:iovmm: remove unused variable 'va'
  Update Nook Color machine 3284 to common Encore name
  am3505/3517: Various platform defines for UART4
  OMAP: hwmod: fix build break on non-OMAP4 multi-OMAP2 builds
  OMAP: Fix linking error in twl-common.c for OMAP2/3/4 only builds
  iMX: Fix build for iMX53
  ARM: mx5: board-cpuimx51.c fixup irq_to_gpio() usage
  OMAP2+: PM: SmartReflex: use put_sync_suspend for IRQ-safe disabling
  OMAP3: beagle: don't touch omap_device internals
  OMAP1: enable GENERIC_IRQ_CHIP
  ...
parents ce8a84ef 696314cf
...@@ -195,10 +195,10 @@ ENTRY(iwmmxt_task_disable) ...@@ -195,10 +195,10 @@ ENTRY(iwmmxt_task_disable)
@ enable access to CP0 and CP1 @ enable access to CP0 and CP1
XSC(mrc p15, 0, r4, c15, c1, 0) XSC(mrc p15, 0, r4, c15, c1, 0)
XSC(orr r4, r4, #0xf) XSC(orr r4, r4, #0x3)
XSC(mcr p15, 0, r4, c15, c1, 0) XSC(mcr p15, 0, r4, c15, c1, 0)
PJ4(mrc p15, 0, r4, c1, c0, 2) PJ4(mrc p15, 0, r4, c1, c0, 2)
PJ4(orr r4, r4, #0x3) PJ4(orr r4, r4, #0xf)
PJ4(mcr p15, 0, r4, c1, c0, 2) PJ4(mcr p15, 0, r4, c1, c0, 2)
mov r0, #0 @ nothing to load mov r0, #0 @ nothing to load
...@@ -313,7 +313,7 @@ ENTRY(iwmmxt_task_switch) ...@@ -313,7 +313,7 @@ ENTRY(iwmmxt_task_switch)
teq r2, r3 @ next task owns it? teq r2, r3 @ next task owns it?
movne pc, lr @ no: leave Concan disabled movne pc, lr @ no: leave Concan disabled
1: @ flip Conan access 1: @ flip Concan access
XSC(eor r1, r1, #0x3) XSC(eor r1, r1, #0x3)
XSC(mcr p15, 0, r1, c15, c1, 0) XSC(mcr p15, 0, r1, c15, c1, 0)
PJ4(eor r1, r1, #0xf) PJ4(eor r1, r1, #0xf)
......
...@@ -331,6 +331,9 @@ int __init mx25_clocks_init(void) ...@@ -331,6 +331,9 @@ int __init mx25_clocks_init(void)
__raw_writel(__raw_readl(CRM_BASE+0x64) | (1 << 7) | (1 << 0), __raw_writel(__raw_readl(CRM_BASE+0x64) | (1 << 7) | (1 << 0),
CRM_BASE + 0x64); CRM_BASE + 0x64);
/* Clock source for gpt is ahb_div */
__raw_writel(__raw_readl(CRM_BASE+0x64) & ~(1 << 5), CRM_BASE + 0x64);
mxc_timer_init(&gpt_clk, MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), 54); mxc_timer_init(&gpt_clk, MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), 54);
return 0; return 0;
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <linux/input.h> #include <linux/input.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <sound/tlv320aic32x4.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
...@@ -196,6 +197,17 @@ static struct pca953x_platform_data visstrim_m10_pca9555_pdata = { ...@@ -196,6 +197,17 @@ static struct pca953x_platform_data visstrim_m10_pca9555_pdata = {
.invert = 0, .invert = 0,
}; };
static struct aic32x4_pdata visstrim_m10_aic32x4_pdata = {
.power_cfg = AIC32X4_PWR_MICBIAS_2075_LDOIN |
AIC32X4_PWR_AVDD_DVDD_WEAK_DISABLE |
AIC32X4_PWR_AIC32X4_LDO_ENABLE |
AIC32X4_PWR_CMMODE_LDOIN_RANGE_18_36 |
AIC32X4_PWR_CMMODE_HP_LDOIN_POWERED,
.micpga_routing = AIC32X4_MICPGA_ROUTE_LMIC_IN2R_10K |
AIC32X4_MICPGA_ROUTE_RMIC_IN1L_10K,
.swapdacs = false,
};
static struct i2c_board_info visstrim_m10_i2c_devices[] = { static struct i2c_board_info visstrim_m10_i2c_devices[] = {
{ {
I2C_BOARD_INFO("pca9555", 0x20), I2C_BOARD_INFO("pca9555", 0x20),
...@@ -203,6 +215,7 @@ static struct i2c_board_info visstrim_m10_i2c_devices[] = { ...@@ -203,6 +215,7 @@ static struct i2c_board_info visstrim_m10_i2c_devices[] = {
}, },
{ {
I2C_BOARD_INFO("tlv320aic32x4", 0x18), I2C_BOARD_INFO("tlv320aic32x4", 0x18),
.platform_data = &visstrim_m10_aic32x4_pdata,
} }
}; };
......
...@@ -468,7 +468,7 @@ static struct i2c_board_info __initdata mx31ads_i2c1_devices[] = { ...@@ -468,7 +468,7 @@ static struct i2c_board_info __initdata mx31ads_i2c1_devices[] = {
#endif #endif
}; };
static void mxc_init_i2c(void) static void __init mxc_init_i2c(void)
{ {
i2c_register_board_info(1, mx31ads_i2c1_devices, i2c_register_board_info(1, mx31ads_i2c1_devices,
ARRAY_SIZE(mx31ads_i2c1_devices)); ARRAY_SIZE(mx31ads_i2c1_devices));
...@@ -486,7 +486,7 @@ static unsigned int ssi_pins[] = { ...@@ -486,7 +486,7 @@ static unsigned int ssi_pins[] = {
MX31_PIN_STXD5__STXD5, MX31_PIN_STXD5__STXD5,
}; };
static void mxc_init_audio(void) static void __init mxc_init_audio(void)
{ {
imx31_add_imx_ssi(0, NULL); imx31_add_imx_ssi(0, NULL);
mxc_iomux_setup_multiple_pins(ssi_pins, ARRAY_SIZE(ssi_pins), "ssi"); mxc_iomux_setup_multiple_pins(ssi_pins, ARRAY_SIZE(ssi_pins), "ssi");
......
...@@ -192,7 +192,7 @@ static struct mxc_usbh_platform_data usbh2_pdata __initdata = { ...@@ -192,7 +192,7 @@ static struct mxc_usbh_platform_data usbh2_pdata __initdata = {
.portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT, .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT,
}; };
static void lilly1131_usb_init(void) static void __init lilly1131_usb_init(void)
{ {
imx31_add_mxc_ehci_hs(1, &usbh1_pdata); imx31_add_mxc_ehci_hs(1, &usbh1_pdata);
......
...@@ -16,16 +16,18 @@ ...@@ -16,16 +16,18 @@
#include <mach/gpio.h> #include <mach/gpio.h>
#include <mach/pxa168.h> #include <mach/pxa168.h>
#include <mach/mfp-pxa168.h> #include <mach/mfp-pxa168.h>
#include <mach/mfp-gplugd.h>
#include "common.h" #include "common.h"
static unsigned long gplugd_pin_config[] __initdata = { static unsigned long gplugd_pin_config[] __initdata = {
/* UART3 */ /* UART3 */
GPIO8_UART3_SOUT, GPIO8_UART3_TXD,
GPIO9_UART3_SIN, GPIO9_UART3_RXD,
GPI1O_UART3_CTS, GPIO1O_UART3_CTS,
GPI11_UART3_RTS, GPIO11_UART3_RTS,
/* USB OTG PEN */
GPIO18_GPIO,
/* MMC2 */ /* MMC2 */
GPIO28_MMC2_CMD, GPIO28_MMC2_CMD,
...@@ -109,6 +111,12 @@ static unsigned long gplugd_pin_config[] __initdata = { ...@@ -109,6 +111,12 @@ static unsigned long gplugd_pin_config[] __initdata = {
GPIO105_CI2C_SDA, GPIO105_CI2C_SDA,
GPIO106_CI2C_SCL, GPIO106_CI2C_SCL,
/* SPI NOR Flash on SSP2 */
GPIO107_SSP2_RXD,
GPIO108_SSP2_TXD,
GPIO110_GPIO, /* SPI_CSn */
GPIO111_SSP2_CLK,
/* Select JTAG */ /* Select JTAG */
GPIO109_GPIO, GPIO109_GPIO,
...@@ -154,7 +162,7 @@ static void __init select_disp_freq(void) ...@@ -154,7 +162,7 @@ static void __init select_disp_freq(void)
"frequency\n"); "frequency\n");
} else { } else {
gpio_direction_output(35, 1); gpio_direction_output(35, 1);
gpio_free(104); gpio_free(35);
} }
if (unlikely(gpio_request(85, "DISP_FREQ_SEL_2"))) { if (unlikely(gpio_request(85, "DISP_FREQ_SEL_2"))) {
...@@ -162,7 +170,7 @@ static void __init select_disp_freq(void) ...@@ -162,7 +170,7 @@ static void __init select_disp_freq(void)
"frequency\n"); "frequency\n");
} else { } else {
gpio_direction_output(85, 0); gpio_direction_output(85, 0);
gpio_free(104); gpio_free(85);
} }
} }
......
/*
* linux/arch/arm/mach-mmp/include/mach/mfp-gplugd.h
*
* MFP definitions used in gplugD
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef __MACH_MFP_GPLUGD_H
#define __MACH_MFP_GPLUGD_H
#include <plat/mfp.h>
#include <mach/mfp.h>
/* UART3 */
#define GPIO8_UART3_SOUT MFP_CFG(GPIO8, AF2)
#define GPIO9_UART3_SIN MFP_CFG(GPIO9, AF2)
#define GPI1O_UART3_CTS MFP_CFG(GPIO10, AF2)
#define GPI11_UART3_RTS MFP_CFG(GPIO11, AF2)
/* MMC2 */
#define GPIO28_MMC2_CMD MFP_CFG_DRV(GPIO28, AF6, FAST)
#define GPIO29_MMC2_CLK MFP_CFG_DRV(GPIO29, AF6, FAST)
#define GPIO30_MMC2_DAT0 MFP_CFG_DRV(GPIO30, AF6, FAST)
#define GPIO31_MMC2_DAT1 MFP_CFG_DRV(GPIO31, AF6, FAST)
#define GPIO32_MMC2_DAT2 MFP_CFG_DRV(GPIO32, AF6, FAST)
#define GPIO33_MMC2_DAT3 MFP_CFG_DRV(GPIO33, AF6, FAST)
/* I2S */
#undef GPIO114_I2S_FRM
#undef GPIO115_I2S_BCLK
#define GPIO114_I2S_FRM MFP_CFG_DRV(GPIO114, AF1, FAST)
#define GPIO115_I2S_BCLK MFP_CFG_DRV(GPIO115, AF1, FAST)
#define GPIO116_I2S_TXD MFP_CFG_DRV(GPIO116, AF1, FAST)
/* MMC4 */
#define GPIO125_MMC4_DAT3 MFP_CFG_DRV(GPIO125, AF7, FAST)
#define GPIO126_MMC4_DAT2 MFP_CFG_DRV(GPIO126, AF7, FAST)
#define GPIO127_MMC4_DAT1 MFP_CFG_DRV(GPIO127, AF7, FAST)
#define GPIO0_2_MMC4_DAT0 MFP_CFG_DRV(GPIO0_2, AF7, FAST)
#define GPIO1_2_MMC4_CMD MFP_CFG_DRV(GPIO1_2, AF7, FAST)
#define GPIO2_2_MMC4_CLK MFP_CFG_DRV(GPIO2_2, AF7, FAST)
/* OTG GPIO */
#define GPIO_USB_OTG_PEN 18
#define GPIO_USB_OIDIR 20
/* Other GPIOs are 35, 84, 85 */
#endif /* __MACH_MFP_GPLUGD_H */
...@@ -203,6 +203,10 @@ ...@@ -203,6 +203,10 @@
#define GPIO33_CF_nCD2 MFP_CFG(GPIO33, AF3) #define GPIO33_CF_nCD2 MFP_CFG(GPIO33, AF3)
/* UART */ /* UART */
#define GPIO8_UART3_TXD MFP_CFG(GPIO8, AF2)
#define GPIO9_UART3_RXD MFP_CFG(GPIO9, AF2)
#define GPIO1O_UART3_CTS MFP_CFG(GPIO10, AF2)
#define GPIO11_UART3_RTS MFP_CFG(GPIO11, AF2)
#define GPIO88_UART2_TXD MFP_CFG(GPIO88, AF2) #define GPIO88_UART2_TXD MFP_CFG(GPIO88, AF2)
#define GPIO89_UART2_RXD MFP_CFG(GPIO89, AF2) #define GPIO89_UART2_RXD MFP_CFG(GPIO89, AF2)
#define GPIO107_UART1_TXD MFP_CFG_DRV(GPIO107, AF1, FAST) #define GPIO107_UART1_TXD MFP_CFG_DRV(GPIO107, AF1, FAST)
...@@ -232,6 +236,22 @@ ...@@ -232,6 +236,22 @@
#define GPIO53_MMC1_CD MFP_CFG(GPIO53, AF1) #define GPIO53_MMC1_CD MFP_CFG(GPIO53, AF1)
#define GPIO46_MMC1_WP MFP_CFG(GPIO46, AF1) #define GPIO46_MMC1_WP MFP_CFG(GPIO46, AF1)
/* MMC2 */
#define GPIO28_MMC2_CMD MFP_CFG_DRV(GPIO28, AF6, FAST)
#define GPIO29_MMC2_CLK MFP_CFG_DRV(GPIO29, AF6, FAST)
#define GPIO30_MMC2_DAT0 MFP_CFG_DRV(GPIO30, AF6, FAST)
#define GPIO31_MMC2_DAT1 MFP_CFG_DRV(GPIO31, AF6, FAST)
#define GPIO32_MMC2_DAT2 MFP_CFG_DRV(GPIO32, AF6, FAST)
#define GPIO33_MMC2_DAT3 MFP_CFG_DRV(GPIO33, AF6, FAST)
/* MMC4 */
#define GPIO125_MMC4_DAT3 MFP_CFG_DRV(GPIO125, AF7, FAST)
#define GPIO126_MMC4_DAT2 MFP_CFG_DRV(GPIO126, AF7, FAST)
#define GPIO127_MMC4_DAT1 MFP_CFG_DRV(GPIO127, AF7, FAST)
#define GPIO0_2_MMC4_DAT0 MFP_CFG_DRV(GPIO0_2, AF7, FAST)
#define GPIO1_2_MMC4_CMD MFP_CFG_DRV(GPIO1_2, AF7, FAST)
#define GPIO2_2_MMC4_CLK MFP_CFG_DRV(GPIO2_2, AF7, FAST)
/* LCD */ /* LCD */
#define GPIO84_LCD_CS MFP_CFG(GPIO84, AF1) #define GPIO84_LCD_CS MFP_CFG(GPIO84, AF1)
#define GPIO60_LCD_DD0 MFP_CFG(GPIO60, AF1) #define GPIO60_LCD_DD0 MFP_CFG(GPIO60, AF1)
...@@ -269,11 +289,12 @@ ...@@ -269,11 +289,12 @@
#define GPIO106_CI2C_SCL MFP_CFG(GPIO106, AF1) #define GPIO106_CI2C_SCL MFP_CFG(GPIO106, AF1)
/* I2S */ /* I2S */
#define GPIO113_I2S_MCLK MFP_CFG(GPIO113,AF6) #define GPIO113_I2S_MCLK MFP_CFG(GPIO113, AF6)
#define GPIO114_I2S_FRM MFP_CFG(GPIO114,AF1) #define GPIO114_I2S_FRM MFP_CFG(GPIO114, AF1)
#define GPIO115_I2S_BCLK MFP_CFG(GPIO115,AF1) #define GPIO115_I2S_BCLK MFP_CFG(GPIO115, AF1)
#define GPIO116_I2S_RXD MFP_CFG(GPIO116,AF2) #define GPIO116_I2S_RXD MFP_CFG(GPIO116, AF2)
#define GPIO117_I2S_TXD MFP_CFG(GPIO117,AF2) #define GPIO116_I2S_TXD MFP_CFG(GPIO116, AF1)
#define GPIO117_I2S_TXD MFP_CFG(GPIO117, AF2)
/* PWM */ /* PWM */
#define GPIO96_PWM3_OUT MFP_CFG(GPIO96, AF1) #define GPIO96_PWM3_OUT MFP_CFG(GPIO96, AF1)
...@@ -324,4 +345,10 @@ ...@@ -324,4 +345,10 @@
#define GPIO101_MII_MDIO MFP_CFG(GPIO101, AF5) #define GPIO101_MII_MDIO MFP_CFG(GPIO101, AF5)
#define GPIO103_RX_DV MFP_CFG(GPIO103, AF5) #define GPIO103_RX_DV MFP_CFG(GPIO103, AF5)
/* SSP2 */
#define GPIO107_SSP2_RXD MFP_CFG(GPIO107, AF4)
#define GPIO108_SSP2_TXD MFP_CFG(GPIO108, AF4)
#define GPIO111_SSP2_CLK MFP_CFG(GPIO111, AF4)
#define GPIO112_SSP2_FRM MFP_CFG(GPIO112, AF4)
#endif /* __ASM_MACH_MFP_PXA168_H */ #endif /* __ASM_MACH_MFP_PXA168_H */
...@@ -51,12 +51,12 @@ static inline uint32_t timer_read(void) ...@@ -51,12 +51,12 @@ static inline uint32_t timer_read(void)
{ {
int delay = 100; int delay = 100;
__raw_writel(1, TIMERS_VIRT_BASE + TMR_CVWR(0)); __raw_writel(1, TIMERS_VIRT_BASE + TMR_CVWR(1));
while (delay--) while (delay--)
cpu_relax(); cpu_relax();
return __raw_readl(TIMERS_VIRT_BASE + TMR_CVWR(0)); return __raw_readl(TIMERS_VIRT_BASE + TMR_CVWR(1));
} }
unsigned long long notrace sched_clock(void) unsigned long long notrace sched_clock(void)
...@@ -75,28 +75,51 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id) ...@@ -75,28 +75,51 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)
{ {
struct clock_event_device *c = dev_id; struct clock_event_device *c = dev_id;
/* disable and clear pending interrupt status */ /*
__raw_writel(0x0, TIMERS_VIRT_BASE + TMR_IER(0)); * Clear pending interrupt status.
__raw_writel(0x1, TIMERS_VIRT_BASE + TMR_ICR(0)); */
__raw_writel(0x01, TIMERS_VIRT_BASE + TMR_ICR(0));
/*
* Disable timer 0.
*/
__raw_writel(0x02, TIMERS_VIRT_BASE + TMR_CER);
c->event_handler(c); c->event_handler(c);
return IRQ_HANDLED; return IRQ_HANDLED;
} }
static int timer_set_next_event(unsigned long delta, static int timer_set_next_event(unsigned long delta,
struct clock_event_device *dev) struct clock_event_device *dev)
{ {
unsigned long flags, next; unsigned long flags;
local_irq_save(flags); local_irq_save(flags);
/* clear pending interrupt status and enable */ /*
* Disable timer 0.
*/
__raw_writel(0x02, TIMERS_VIRT_BASE + TMR_CER);
/*
* Clear and enable timer match 0 interrupt.
*/
__raw_writel(0x01, TIMERS_VIRT_BASE + TMR_ICR(0)); __raw_writel(0x01, TIMERS_VIRT_BASE + TMR_ICR(0));
__raw_writel(0x01, TIMERS_VIRT_BASE + TMR_IER(0)); __raw_writel(0x01, TIMERS_VIRT_BASE + TMR_IER(0));
next = timer_read() + delta; /*
__raw_writel(next, TIMERS_VIRT_BASE + TMR_TN_MM(0, 0)); * Setup new clockevent timer value.
*/
__raw_writel(delta - 1, TIMERS_VIRT_BASE + TMR_TN_MM(0, 0));
/*
* Enable timer 0.
*/
__raw_writel(0x03, TIMERS_VIRT_BASE + TMR_CER);
local_irq_restore(flags); local_irq_restore(flags);
return 0; return 0;
} }
...@@ -145,23 +168,26 @@ static struct clocksource cksrc = { ...@@ -145,23 +168,26 @@ static struct clocksource cksrc = {
static void __init timer_config(void) static void __init timer_config(void)
{ {
uint32_t ccr = __raw_readl(TIMERS_VIRT_BASE + TMR_CCR); uint32_t ccr = __raw_readl(TIMERS_VIRT_BASE + TMR_CCR);
uint32_t cer = __raw_readl(TIMERS_VIRT_BASE + TMR_CER);
uint32_t cmr = __raw_readl(TIMERS_VIRT_BASE + TMR_CMR);
__raw_writel(cer & ~0x1, TIMERS_VIRT_BASE + TMR_CER); /* disable */ __raw_writel(0x0, TIMERS_VIRT_BASE + TMR_CER); /* disable */
ccr &= (cpu_is_mmp2()) ? TMR_CCR_CS_0(0) : TMR_CCR_CS_0(3); ccr &= (cpu_is_mmp2()) ? (TMR_CCR_CS_0(0) | TMR_CCR_CS_1(0)) :
(TMR_CCR_CS_0(3) | TMR_CCR_CS_1(3));
__raw_writel(ccr, TIMERS_VIRT_BASE + TMR_CCR); __raw_writel(ccr, TIMERS_VIRT_BASE + TMR_CCR);
/* free-running mode */ /* set timer 0 to periodic mode, and timer 1 to free-running mode */
__raw_writel(cmr | 0x01, TIMERS_VIRT_BASE + TMR_CMR); __raw_writel(0x2, TIMERS_VIRT_BASE + TMR_CMR);
__raw_writel(0x0, TIMERS_VIRT_BASE + TMR_PLCR(0)); /* free-running */ __raw_writel(0x1, TIMERS_VIRT_BASE + TMR_PLCR(0)); /* periodic */
__raw_writel(0x7, TIMERS_VIRT_BASE + TMR_ICR(0)); /* clear status */ __raw_writel(0x7, TIMERS_VIRT_BASE + TMR_ICR(0)); /* clear status */
__raw_writel(0x0, TIMERS_VIRT_BASE + TMR_IER(0)); __raw_writel(0x0, TIMERS_VIRT_BASE + TMR_IER(0));
/* enable timer counter */ __raw_writel(0x0, TIMERS_VIRT_BASE + TMR_PLCR(1)); /* free-running */
__raw_writel(cer | 0x01, TIMERS_VIRT_BASE + TMR_CER); __raw_writel(0x7, TIMERS_VIRT_BASE + TMR_ICR(1)); /* clear status */
__raw_writel(0x0, TIMERS_VIRT_BASE + TMR_IER(1));
/* enable timer 1 counter */
__raw_writel(0x2, TIMERS_VIRT_BASE + TMR_CER);
} }
static struct irqaction timer_irq = { static struct irqaction timer_irq = {
......
...@@ -81,7 +81,7 @@ static struct plat_serial8250_port serial_platform_data[] = { ...@@ -81,7 +81,7 @@ static struct plat_serial8250_port serial_platform_data[] = {
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_IOREMAP, .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_IOREMAP,
}, { }, {
.mapbase = (unsigned long)(MX51_CS1_BASE_ADDR + 0x2000000), .mapbase = (unsigned long)(MX51_CS1_BASE_ADDR + 0x2000000),
.irq = irq_to_gpio(CPUIMX51_QUARTD_GPIO), .irq = gpio_to_irq(CPUIMX51_QUARTD_GPIO),
.irqflags = IRQF_TRIGGER_HIGH, .irqflags = IRQF_TRIGGER_HIGH,
.uartclk = CPUIMX51_QUART_XTAL, .uartclk = CPUIMX51_QUART_XTAL,
.regshift = CPUIMX51_QUART_REGSHIFT, .regshift = CPUIMX51_QUART_REGSHIFT,
......
...@@ -369,7 +369,7 @@ static void __init mx51_babbage_init(void) ...@@ -369,7 +369,7 @@ static void __init mx51_babbage_init(void)
ARRAY_SIZE(mx51babbage_pads)); ARRAY_SIZE(mx51babbage_pads));
imx51_add_imx_uart(0, &uart_pdata); imx51_add_imx_uart(0, &uart_pdata);
imx51_add_imx_uart(1, &uart_pdata); imx51_add_imx_uart(1, NULL);
imx51_add_imx_uart(2, &uart_pdata); imx51_add_imx_uart(2, &uart_pdata);
babbage_fec_reset(); babbage_fec_reset();
......
...@@ -108,9 +108,9 @@ static void __init mx51_efikamx_board_id(void) ...@@ -108,9 +108,9 @@ static void __init mx51_efikamx_board_id(void)
gpio_request(EFIKAMX_PCBID2, "pcbid2"); gpio_request(EFIKAMX_PCBID2, "pcbid2");
gpio_direction_input(EFIKAMX_PCBID2); gpio_direction_input(EFIKAMX_PCBID2);
id = gpio_get_value(EFIKAMX_PCBID0); id = gpio_get_value(EFIKAMX_PCBID0) ? 1 : 0;
id |= gpio_get_value(EFIKAMX_PCBID1) << 1; id |= (gpio_get_value(EFIKAMX_PCBID1) ? 1 : 0) << 1;
id |= gpio_get_value(EFIKAMX_PCBID2) << 2; id |= (gpio_get_value(EFIKAMX_PCBID2) ? 1 : 0) << 2;
switch (id) { switch (id) {
case 7: case 7:
......
...@@ -156,23 +156,24 @@ static struct gpio_keys_button mx51_efikasb_keys[] = { ...@@ -156,23 +156,24 @@ static struct gpio_keys_button mx51_efikasb_keys[] = {
{ {
.code = KEY_POWER, .code = KEY_POWER,
.gpio = EFIKASB_PWRKEY, .gpio = EFIKASB_PWRKEY,
.type = EV_PWR, .type = EV_KEY,
.desc = "Power Button", .desc = "Power Button",
.wakeup = 1, .wakeup = 1,
.debounce_interval = 10, /* ms */ .active_low = 1,
}, },
{ {
.code = SW_LID, .code = SW_LID,
.gpio = EFIKASB_LID, .gpio = EFIKASB_LID,
.type = EV_SW, .type = EV_SW,
.desc = "Lid Switch", .desc = "Lid Switch",
.active_low = 1,
}, },
{ {
/* SW_RFKILLALL vs KEY_RFKILL ? */ .code = KEY_RFKILL,
.code = SW_RFKILL_ALL,
.gpio = EFIKASB_RFKILL, .gpio = EFIKASB_RFKILL,
.type = EV_SW, .type = EV_KEY,
.desc = "rfkill", .desc = "rfkill",
.active_low = 1,
}, },
}; };
...@@ -224,8 +225,8 @@ static void __init mx51_efikasb_board_id(void) ...@@ -224,8 +225,8 @@ static void __init mx51_efikasb_board_id(void)
gpio_request(EFIKASB_PCBID1, "pcb id1"); gpio_request(EFIKASB_PCBID1, "pcb id1");
gpio_direction_input(EFIKASB_PCBID1); gpio_direction_input(EFIKASB_PCBID1);
id = gpio_get_value(EFIKASB_PCBID0); id = gpio_get_value(EFIKASB_PCBID0) ? 1 : 0;
id |= gpio_get_value(EFIKASB_PCBID1) << 1; id |= (gpio_get_value(EFIKASB_PCBID1) ? 1 : 0) << 1;
switch (id) { switch (id) {
default: default:
......
...@@ -271,7 +271,11 @@ static int _clk_pll_enable(struct clk *clk) ...@@ -271,7 +271,11 @@ static int _clk_pll_enable(struct clk *clk)
int i = 0; int i = 0;
pllbase = _get_pll_base(clk); pllbase = _get_pll_base(clk);
reg = __raw_readl(pllbase + MXC_PLL_DP_CTL) | MXC_PLL_DP_CTL_UPEN; reg = __raw_readl(pllbase + MXC_PLL_DP_CTL);
if (reg & MXC_PLL_DP_CTL_UPEN)
return 0;
reg |= MXC_PLL_DP_CTL_UPEN;
__raw_writel(reg, pllbase + MXC_PLL_DP_CTL); __raw_writel(reg, pllbase + MXC_PLL_DP_CTL);
/* Wait for lock */ /* Wait for lock */
......
...@@ -186,7 +186,7 @@ static int initialize_usbh1_port(struct platform_device *pdev) ...@@ -186,7 +186,7 @@ static int initialize_usbh1_port(struct platform_device *pdev)
mdelay(10); mdelay(10);
return mx51_initialize_usb_hw(0, MXC_EHCI_ITC_NO_THRESHOLD); return mx51_initialize_usb_hw(pdev->id, MXC_EHCI_ITC_NO_THRESHOLD);
} }
static struct mxc_usbh_platform_data usbh1_config = { static struct mxc_usbh_platform_data usbh1_config = {
......
...@@ -7,7 +7,6 @@ config ARCH_OMAP2PLUS_TYPICAL ...@@ -7,7 +7,6 @@ config ARCH_OMAP2PLUS_TYPICAL
default y default y
select AEABI select AEABI
select REGULATOR select REGULATOR
select PM
select PM_RUNTIME select PM_RUNTIME
select VFP select VFP
select NEON if ARCH_OMAP3 || ARCH_OMAP4 select NEON if ARCH_OMAP3 || ARCH_OMAP4
......
...@@ -45,8 +45,6 @@ static struct omap_board_config_kernel am3517_crane_config[] __initdata = { ...@@ -45,8 +45,6 @@ static struct omap_board_config_kernel am3517_crane_config[] __initdata = {
static struct omap_board_mux board_mux[] __initdata = { static struct omap_board_mux board_mux[] __initdata = {
{ .reg_offset = OMAP_MUX_TERMINATOR }, { .reg_offset = OMAP_MUX_TERMINATOR },
}; };
#else
#define board_mux NULL
#endif #endif
static void __init am3517_crane_init_early(void) static void __init am3517_crane_init_early(void)
......
...@@ -491,23 +491,22 @@ static void __init beagle_opp_init(void) ...@@ -491,23 +491,22 @@ static void __init beagle_opp_init(void)
/* Custom OPP enabled for all xM versions */ /* Custom OPP enabled for all xM versions */
if (cpu_is_omap3630()) { if (cpu_is_omap3630()) {
struct omap_hwmod *mh = omap_hwmod_lookup("mpu"); struct device *mpu_dev, *iva_dev;
struct omap_hwmod *dh = omap_hwmod_lookup("iva");
struct device *dev;
if (!mh || !dh) { mpu_dev = omap2_get_mpuss_device();
iva_dev = omap2_get_iva_device();
if (!mpu_dev || !iva_dev) {
pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n", pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n",
__func__, mh, dh); __func__, mpu_dev, iva_dev);
return; return;
} }
/* Enable MPU 1GHz and lower opps */ /* Enable MPU 1GHz and lower opps */
dev = &mh->od->pdev.dev; r = opp_enable(mpu_dev, 800000000);
r = opp_enable(dev, 800000000);
/* TODO: MPU 1GHz needs SR and ABB */ /* TODO: MPU 1GHz needs SR and ABB */
/* Enable IVA 800MHz and lower opps */ /* Enable IVA 800MHz and lower opps */
dev = &dh->od->pdev.dev; r |= opp_enable(iva_dev, 660000000);
r |= opp_enable(dev, 660000000);
/* TODO: DSP 800MHz needs SR and ABB */ /* TODO: DSP 800MHz needs SR and ABB */
if (r) { if (r) {
pr_err("%s: failed to enable higher opp %d\n", pr_err("%s: failed to enable higher opp %d\n",
...@@ -516,10 +515,8 @@ static void __init beagle_opp_init(void) ...@@ -516,10 +515,8 @@ static void __init beagle_opp_init(void)
* Cleanup - disable the higher freqs - we dont care * Cleanup - disable the higher freqs - we dont care
* about the results * about the results
*/ */
dev = &mh->od->pdev.dev; opp_disable(mpu_dev, 800000000);
opp_disable(dev, 800000000); opp_disable(iva_dev, 660000000);
dev = &dh->od->pdev.dev;
opp_disable(dev, 660000000);
} }
} }
return; return;
......
...@@ -18,13 +18,36 @@ extern void omap4_cminst_clkdm_force_sleep(u8 part, s16 inst, u16 cdoffs); ...@@ -18,13 +18,36 @@ extern void omap4_cminst_clkdm_force_sleep(u8 part, s16 inst, u16 cdoffs);
extern void omap4_cminst_clkdm_force_wakeup(u8 part, s16 inst, u16 cdoffs); extern void omap4_cminst_clkdm_force_wakeup(u8 part, s16 inst, u16 cdoffs);
extern int omap4_cminst_wait_module_ready(u8 part, u16 inst, s16 cdoffs, u16 clkctrl_offs); extern int omap4_cminst_wait_module_ready(u8 part, u16 inst, s16 cdoffs, u16 clkctrl_offs);
extern int omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs, u16 clkctrl_offs);
# ifdef CONFIG_ARCH_OMAP4
extern int omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs,
u16 clkctrl_offs);
extern void omap4_cminst_module_enable(u8 mode, u8 part, u16 inst, s16 cdoffs, extern void omap4_cminst_module_enable(u8 mode, u8 part, u16 inst, s16 cdoffs,
u16 clkctrl_offs); u16 clkctrl_offs);
extern void omap4_cminst_module_disable(u8 part, u16 inst, s16 cdoffs, extern void omap4_cminst_module_disable(u8 part, u16 inst, s16 cdoffs,
u16 clkctrl_offs); u16 clkctrl_offs);
# else
static inline int omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs,
u16 clkctrl_offs)
{
return 0;
}
static inline void omap4_cminst_module_enable(u8 mode, u8 part, u16 inst,
s16 cdoffs, u16 clkctrl_offs)
{
}
static inline void omap4_cminst_module_disable(u8 part, u16 inst, s16 cdoffs,
u16 clkctrl_offs)
{
}
# endif
/* /*
* In an ideal world, we would not export these low-level functions, * In an ideal world, we would not export these low-level functions,
* but this will probably take some time to fix properly * but this will probably take some time to fix properly
......
...@@ -821,11 +821,10 @@ static void __init omap_mux_set_cmdline_signals(void) ...@@ -821,11 +821,10 @@ static void __init omap_mux_set_cmdline_signals(void)
if (!omap_mux_options) if (!omap_mux_options)
return; return;
options = kmalloc(strlen(omap_mux_options) + 1, GFP_KERNEL); options = kstrdup(omap_mux_options, GFP_KERNEL);
if (!options) if (!options)
return; return;
strcpy(options, omap_mux_options);
next_opt = options; next_opt = options;
while ((token = strsep(&next_opt, ",")) != NULL) { while ((token = strsep(&next_opt, ",")) != NULL) {
...@@ -855,24 +854,19 @@ static int __init omap_mux_copy_names(struct omap_mux *src, ...@@ -855,24 +854,19 @@ static int __init omap_mux_copy_names(struct omap_mux *src,
for (i = 0; i < OMAP_MUX_NR_MODES; i++) { for (i = 0; i < OMAP_MUX_NR_MODES; i++) {
if (src->muxnames[i]) { if (src->muxnames[i]) {
dst->muxnames[i] = dst->muxnames[i] = kstrdup(src->muxnames[i],
kmalloc(strlen(src->muxnames[i]) + 1, GFP_KERNEL);
GFP_KERNEL);
if (!dst->muxnames[i]) if (!dst->muxnames[i])
goto free; goto free;
strcpy(dst->muxnames[i], src->muxnames[i]);
} }
} }
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
for (i = 0; i < OMAP_MUX_NR_SIDES; i++) { for (i = 0; i < OMAP_MUX_NR_SIDES; i++) {
if (src->balls[i]) { if (src->balls[i]) {
dst->balls[i] = dst->balls[i] = kstrdup(src->balls[i], GFP_KERNEL);
kmalloc(strlen(src->balls[i]) + 1,
GFP_KERNEL);
if (!dst->balls[i]) if (!dst->balls[i])
goto free; goto free;
strcpy(dst->balls[i], src->balls[i]);
} }
} }
#endif #endif
......
...@@ -621,7 +621,7 @@ void sr_disable(struct voltagedomain *voltdm) ...@@ -621,7 +621,7 @@ void sr_disable(struct voltagedomain *voltdm)
sr_v2_disable(sr); sr_v2_disable(sr);
} }
pm_runtime_put_sync(&sr->pdev->dev); pm_runtime_put_sync_suspend(&sr->pdev->dev);
} }
/** /**
...@@ -860,6 +860,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) ...@@ -860,6 +860,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev);
pm_runtime_irq_safe(&pdev->dev);
sr_info->pdev = pdev; sr_info->pdev = pdev;
sr_info->srid = pdev->id; sr_info->srid = pdev->id;
......
...@@ -293,7 +293,8 @@ static void __init omap2_gp_clocksource_init(int gptimer_id, ...@@ -293,7 +293,8 @@ static void __init omap2_gp_clocksource_init(int gptimer_id,
pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n", pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n",
gptimer_id, clksrc.rate); gptimer_id, clksrc.rate);
__omap_dm_timer_load_start(clksrc.io_base, OMAP_TIMER_CTRL_ST, 0, 1); __omap_dm_timer_load_start(clksrc.io_base,
OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0, 1);
init_sched_clock(&cd, dmtimer_update_sched_clock, 32, clksrc.rate); init_sched_clock(&cd, dmtimer_update_sched_clock, 32, clksrc.rate);
if (clocksource_register_hz(&clocksource_gpt, clksrc.rate)) if (clocksource_register_hz(&clocksource_gpt, clksrc.rate))
......
...@@ -48,14 +48,7 @@ void __init omap_pmic_init(int bus, u32 clkrate, ...@@ -48,14 +48,7 @@ void __init omap_pmic_init(int bus, u32 clkrate,
omap_register_i2c_bus(bus, clkrate, &pmic_i2c_board_info, 1); omap_register_i2c_bus(bus, clkrate, &pmic_i2c_board_info, 1);
} }
static struct twl4030_usb_data omap4_usb_pdata = { #if defined(CONFIG_ARCH_OMAP3)
.phy_init = omap4430_phy_init,
.phy_exit = omap4430_phy_exit,
.phy_power = omap4430_phy_power,
.phy_set_clock = omap4430_phy_set_clk,
.phy_suspend = omap4430_phy_suspend,
};
static struct twl4030_usb_data omap3_usb_pdata = { static struct twl4030_usb_data omap3_usb_pdata = {
.usb_mode = T2_USB_MODE_ULPI, .usb_mode = T2_USB_MODE_ULPI,
}; };
...@@ -122,6 +115,45 @@ static struct regulator_init_data omap3_vpll2_idata = { ...@@ -122,6 +115,45 @@ static struct regulator_init_data omap3_vpll2_idata = {
.consumer_supplies = omap3_vpll2_supplies, .consumer_supplies = omap3_vpll2_supplies,
}; };
void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
u32 pdata_flags, u32 regulators_flags)
{
if (!pmic_data->irq_base)
pmic_data->irq_base = TWL4030_IRQ_BASE;
if (!pmic_data->irq_end)
pmic_data->irq_end = TWL4030_IRQ_END;
/* Common platform data configurations */
if (pdata_flags & TWL_COMMON_PDATA_USB && !pmic_data->usb)
pmic_data->usb = &omap3_usb_pdata;
if (pdata_flags & TWL_COMMON_PDATA_BCI && !pmic_data->bci)
pmic_data->bci = &omap3_bci_pdata;
if (pdata_flags & TWL_COMMON_PDATA_MADC && !pmic_data->madc)
pmic_data->madc = &omap3_madc_pdata;
if (pdata_flags & TWL_COMMON_PDATA_AUDIO && !pmic_data->audio)
pmic_data->audio = &omap3_audio_pdata;
/* Common regulator configurations */
if (regulators_flags & TWL_COMMON_REGULATOR_VDAC && !pmic_data->vdac)
pmic_data->vdac = &omap3_vdac_idata;
if (regulators_flags & TWL_COMMON_REGULATOR_VPLL2 && !pmic_data->vpll2)
pmic_data->vpll2 = &omap3_vpll2_idata;
}
#endif /* CONFIG_ARCH_OMAP3 */
#if defined(CONFIG_ARCH_OMAP4)
static struct twl4030_usb_data omap4_usb_pdata = {
.phy_init = omap4430_phy_init,
.phy_exit = omap4430_phy_exit,
.phy_power = omap4430_phy_power,
.phy_set_clock = omap4430_phy_set_clk,
.phy_suspend = omap4430_phy_suspend,
};
static struct regulator_init_data omap4_vdac_idata = { static struct regulator_init_data omap4_vdac_idata = {
.constraints = { .constraints = {
.min_uV = 1800000, .min_uV = 1800000,
...@@ -273,32 +305,4 @@ void __init omap4_pmic_get_config(struct twl4030_platform_data *pmic_data, ...@@ -273,32 +305,4 @@ void __init omap4_pmic_get_config(struct twl4030_platform_data *pmic_data,
!pmic_data->clk32kg) !pmic_data->clk32kg)
pmic_data->clk32kg = &omap4_clk32kg_idata; pmic_data->clk32kg = &omap4_clk32kg_idata;
} }
#endif /* CONFIG_ARCH_OMAP4 */
void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
u32 pdata_flags, u32 regulators_flags)
{
if (!pmic_data->irq_base)
pmic_data->irq_base = TWL4030_IRQ_BASE;
if (!pmic_data->irq_end)
pmic_data->irq_end = TWL4030_IRQ_END;
/* Common platform data configurations */
if (pdata_flags & TWL_COMMON_PDATA_USB && !pmic_data->usb)
pmic_data->usb = &omap3_usb_pdata;
if (pdata_flags & TWL_COMMON_PDATA_BCI && !pmic_data->bci)
pmic_data->bci = &omap3_bci_pdata;
if (pdata_flags & TWL_COMMON_PDATA_MADC && !pmic_data->madc)
pmic_data->madc = &omap3_madc_pdata;
if (pdata_flags & TWL_COMMON_PDATA_AUDIO && !pmic_data->audio)
pmic_data->audio = &omap3_audio_pdata;
/* Common regulator configurations */
if (regulators_flags & TWL_COMMON_REGULATOR_VDAC && !pmic_data->vdac)
pmic_data->vdac = &omap3_vdac_idata;
if (regulators_flags & TWL_COMMON_REGULATOR_VPLL2 && !pmic_data->vpll2)
pmic_data->vpll2 = &omap3_vpll2_idata;
}
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <mach/nanoengine.h> #include <mach/nanoengine.h>
#include <mach/hardware.h>
static DEFINE_SPINLOCK(nano_lock); static DEFINE_SPINLOCK(nano_lock);
......
...@@ -44,6 +44,14 @@ ...@@ -44,6 +44,14 @@
#define UART_PADDR MX51_UART1_BASE_ADDR #define UART_PADDR MX51_UART1_BASE_ADDR
#endif #endif
/* iMX50/53 have same addresses, but not iMX51 */
#if defined(CONFIG_SOC_IMX50) || defined(CONFIG_SOC_IMX53)
#ifdef UART_PADDR
#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
#endif
#define UART_PADDR MX53_UART1_BASE_ADDR
#endif
#define UART_VADDR IMX_IO_ADDRESS(UART_PADDR) #define UART_VADDR IMX_IO_ADDRESS(UART_PADDR)
.macro addruart, rp, rv .macro addruart, rp, rv
......
This diff is collapsed.
...@@ -13,6 +13,7 @@ config ARCH_OMAP1 ...@@ -13,6 +13,7 @@ config ARCH_OMAP1
bool "TI OMAP1" bool "TI OMAP1"
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select CLKSRC_MMIO select CLKSRC_MMIO
select GENERIC_IRQ_CHIP
help help
"Systems based on omap7xx, omap15xx or omap16xx" "Systems based on omap7xx, omap15xx or omap16xx"
......
...@@ -195,6 +195,11 @@ ...@@ -195,6 +195,11 @@
#define OMAP36XX_DMA_UART4_TX 81 /* S_DMA_80 */ #define OMAP36XX_DMA_UART4_TX 81 /* S_DMA_80 */
#define OMAP36XX_DMA_UART4_RX 82 /* S_DMA_81 */ #define OMAP36XX_DMA_UART4_RX 82 /* S_DMA_81 */
/* Only for AM35xx */
#define AM35XX_DMA_UART4_TX 54
#define AM35XX_DMA_UART4_RX 55
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
#define OMAP1_DMA_TOUT_IRQ (1 << 0) #define OMAP1_DMA_TOUT_IRQ (1 << 0)
......
...@@ -357,6 +357,7 @@ ...@@ -357,6 +357,7 @@
#define INT_35XX_EMAC_C0_TX_PULSE_IRQ 69 #define INT_35XX_EMAC_C0_TX_PULSE_IRQ 69
#define INT_35XX_EMAC_C0_MISC_PULSE_IRQ 70 #define INT_35XX_EMAC_C0_MISC_PULSE_IRQ 70
#define INT_35XX_USBOTG_IRQ 71 #define INT_35XX_USBOTG_IRQ 71
#define INT_35XX_UART4 84
#define INT_35XX_CCDC_VD0_IRQ 88 #define INT_35XX_CCDC_VD0_IRQ 88
#define INT_35XX_CCDC_VD1_IRQ 92 #define INT_35XX_CCDC_VD1_IRQ 92
#define INT_35XX_CCDC_VD2_IRQ 93 #define INT_35XX_CCDC_VD2_IRQ 93
......
...@@ -56,6 +56,9 @@ ...@@ -56,6 +56,9 @@
#define TI816X_UART2_BASE 0x48022000 #define TI816X_UART2_BASE 0x48022000
#define TI816X_UART3_BASE 0x48024000 #define TI816X_UART3_BASE 0x48024000
/* AM3505/3517 UART4 */
#define AM35XX_UART4_BASE 0x4809E000 /* Only on AM3505/3517 */
/* External port on Zoom2/3 */ /* External port on Zoom2/3 */
#define ZOOM_UART_BASE 0x10000000 #define ZOOM_UART_BASE 0x10000000
#define ZOOM_UART_VIRT 0xfa400000 #define ZOOM_UART_VIRT 0xfa400000
......
...@@ -423,9 +423,6 @@ static void sgtable_fill_kmalloc(struct sg_table *sgt, u32 pa, u32 da, ...@@ -423,9 +423,6 @@ static void sgtable_fill_kmalloc(struct sg_table *sgt, u32 pa, u32 da,
{ {
unsigned int i; unsigned int i;
struct scatterlist *sg; struct scatterlist *sg;
void *va;
va = phys_to_virt(pa);
for_each_sg(sgt->sgl, sg, sgt->nents, i) { for_each_sg(sgt->sgl, sg, sgt->nents, i) {
unsigned bytes; unsigned bytes;
......
...@@ -910,7 +910,7 @@ omapl138_case_a3 MACH_OMAPL138_CASE_A3 OMAPL138_CASE_A3 3280 ...@@ -910,7 +910,7 @@ omapl138_case_a3 MACH_OMAPL138_CASE_A3 OMAPL138_CASE_A3 3280
uemd MACH_UEMD UEMD 3281 uemd MACH_UEMD UEMD 3281
ccwmx51mut MACH_CCWMX51MUT CCWMX51MUT 3282 ccwmx51mut MACH_CCWMX51MUT CCWMX51MUT 3282
rockhopper MACH_ROCKHOPPER ROCKHOPPER 3283 rockhopper MACH_ROCKHOPPER ROCKHOPPER 3283
nookcolor MACH_NOOKCOLOR NOOKCOLOR 3284 encore MACH_ENCORE ENCORE 3284
hkdkc100 MACH_HKDKC100 HKDKC100 3285 hkdkc100 MACH_HKDKC100 HKDKC100 3285
ts42xx MACH_TS42XX TS42XX 3286 ts42xx MACH_TS42XX TS42XX 3286
aebl MACH_AEBL AEBL 3287 aebl MACH_AEBL AEBL 3287
......
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