Commit 0b3dc0e9 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'omap-fixes-for-linus' of...

Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6

* 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6:
  omap4: Fix UART4 platform data on omap4
  omap4: Allow omap_serial_early_init() for OMAP4430 board
  omap3: PM: enable UART3 module wakeups
  omap2: Fix console serial port number for n8x0
  omap2: Fix detection of n8x0
  omap1: Fix DSP public peripherals support for ams-delta
  omap1: Fix redundant UARTs pin muxing that can break other hardware support
  omap: iommu: fix wrong condition check for SUPERSECTION
  omap: SDMA: Fix omap_stop_dma() API for channel linking
  omap: Fix omap-keypad by restoring old keypad.h without breaking omap2 boards that use matrix_keypad
parents 59f41227 54341c9b
...@@ -304,7 +304,7 @@ CONFIG_ALIGNMENT_TRAP=y ...@@ -304,7 +304,7 @@ CONFIG_ALIGNMENT_TRAP=y
CONFIG_ZBOOT_ROM_TEXT=0x10C08000 CONFIG_ZBOOT_ROM_TEXT=0x10C08000
CONFIG_ZBOOT_ROM_BSS=0x10200000 CONFIG_ZBOOT_ROM_BSS=0x10200000
# CONFIG_ZBOOT_ROM is not set # CONFIG_ZBOOT_ROM is not set
CONFIG_CMDLINE="root=1f03 rootfstype=jffs2 console=ttyS0,115200n8" CONFIG_CMDLINE="root=1f03 rootfstype=jffs2 console=ttyS2,115200n8"
# CONFIG_XIP_KERNEL is not set # CONFIG_XIP_KERNEL is not set
# CONFIG_KEXEC is not set # CONFIG_KEXEC is not set
......
...@@ -219,6 +219,10 @@ static struct platform_device *ams_delta_devices[] __initdata = { ...@@ -219,6 +219,10 @@ static struct platform_device *ams_delta_devices[] __initdata = {
static void __init ams_delta_init(void) static void __init ams_delta_init(void)
{ {
/* mux pins for uarts */
omap_cfg_reg(UART1_TX);
omap_cfg_reg(UART1_RTS);
iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc)); iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc));
omap_board_config = ams_delta_config; omap_board_config = ams_delta_config;
...@@ -231,6 +235,8 @@ static void __init ams_delta_init(void) ...@@ -231,6 +235,8 @@ static void __init ams_delta_init(void)
omap_usb_init(&ams_delta_usb_config); omap_usb_init(&ams_delta_usb_config);
platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices)); platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices));
omap_writew(omap_readw(ARM_RSTCT1) | 0x0004, ARM_RSTCT1);
} }
static struct plat_serial8250_port ams_delta_modem_ports[] = { static struct plat_serial8250_port ams_delta_modem_ports[] = {
......
...@@ -64,6 +64,14 @@ static void __init omap_generic_init(void) ...@@ -64,6 +64,14 @@ static void __init omap_generic_init(void)
{ {
#ifdef CONFIG_ARCH_OMAP15XX #ifdef CONFIG_ARCH_OMAP15XX
if (cpu_is_omap15xx()) { if (cpu_is_omap15xx()) {
/* mux pins for uarts */
omap_cfg_reg(UART1_TX);
omap_cfg_reg(UART1_RTS);
omap_cfg_reg(UART2_TX);
omap_cfg_reg(UART2_RTS);
omap_cfg_reg(UART3_TX);
omap_cfg_reg(UART3_RX);
omap_usb_init(&generic1510_usb_config); omap_usb_init(&generic1510_usb_config);
} }
#endif #endif
......
...@@ -376,6 +376,26 @@ static void __init innovator_init(void) ...@@ -376,6 +376,26 @@ static void __init innovator_init(void)
{ {
#ifdef CONFIG_ARCH_OMAP15XX #ifdef CONFIG_ARCH_OMAP15XX
if (cpu_is_omap1510()) { if (cpu_is_omap1510()) {
unsigned char reg;
/* mux pins for uarts */
omap_cfg_reg(UART1_TX);
omap_cfg_reg(UART1_RTS);
omap_cfg_reg(UART2_TX);
omap_cfg_reg(UART2_RTS);
omap_cfg_reg(UART3_TX);
omap_cfg_reg(UART3_RX);
reg = fpga_read(OMAP1510_FPGA_POWER);
reg |= OMAP1510_FPGA_PCR_COM1_EN;
fpga_write(reg, OMAP1510_FPGA_POWER);
udelay(10);
reg = fpga_read(OMAP1510_FPGA_POWER);
reg |= OMAP1510_FPGA_PCR_COM2_EN;
fpga_write(reg, OMAP1510_FPGA_POWER);
udelay(10);
platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices)); platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices));
spi_register_board_info(innovator1510_boardinfo, spi_register_board_info(innovator1510_boardinfo,
ARRAY_SIZE(innovator1510_boardinfo)); ARRAY_SIZE(innovator1510_boardinfo));
......
...@@ -342,6 +342,14 @@ static void __init palmte_misc_gpio_setup(void) ...@@ -342,6 +342,14 @@ static void __init palmte_misc_gpio_setup(void)
static void __init omap_palmte_init(void) static void __init omap_palmte_init(void)
{ {
/* mux pins for uarts */
omap_cfg_reg(UART1_TX);
omap_cfg_reg(UART1_RTS);
omap_cfg_reg(UART2_TX);
omap_cfg_reg(UART2_RTS);
omap_cfg_reg(UART3_TX);
omap_cfg_reg(UART3_RX);
omap_board_config = palmte_config; omap_board_config = palmte_config;
omap_board_config_size = ARRAY_SIZE(palmte_config); omap_board_config_size = ARRAY_SIZE(palmte_config);
......
...@@ -289,6 +289,14 @@ static void __init omap_mpu_wdt_mode(int mode) { ...@@ -289,6 +289,14 @@ static void __init omap_mpu_wdt_mode(int mode) {
static void __init omap_palmtt_init(void) static void __init omap_palmtt_init(void)
{ {
/* mux pins for uarts */
omap_cfg_reg(UART1_TX);
omap_cfg_reg(UART1_RTS);
omap_cfg_reg(UART2_TX);
omap_cfg_reg(UART2_RTS);
omap_cfg_reg(UART3_TX);
omap_cfg_reg(UART3_RX);
omap_mpu_wdt_mode(0); omap_mpu_wdt_mode(0);
omap_board_config = palmtt_config; omap_board_config = palmtt_config;
......
...@@ -307,6 +307,14 @@ palmz71_gpio_setup(int early) ...@@ -307,6 +307,14 @@ palmz71_gpio_setup(int early)
static void __init static void __init
omap_palmz71_init(void) omap_palmz71_init(void)
{ {
/* mux pins for uarts */
omap_cfg_reg(UART1_TX);
omap_cfg_reg(UART1_RTS);
omap_cfg_reg(UART2_TX);
omap_cfg_reg(UART2_RTS);
omap_cfg_reg(UART3_TX);
omap_cfg_reg(UART3_RX);
palmz71_gpio_setup(1); palmz71_gpio_setup(1);
omap_mpu_wdt_mode(0); omap_mpu_wdt_mode(0);
......
...@@ -377,6 +377,14 @@ static struct omap_board_config_kernel sx1_config[] __initdata = { ...@@ -377,6 +377,14 @@ static struct omap_board_config_kernel sx1_config[] __initdata = {
static void __init omap_sx1_init(void) static void __init omap_sx1_init(void)
{ {
/* mux pins for uarts */
omap_cfg_reg(UART1_TX);
omap_cfg_reg(UART1_RTS);
omap_cfg_reg(UART2_TX);
omap_cfg_reg(UART2_RTS);
omap_cfg_reg(UART3_TX);
omap_cfg_reg(UART3_RX);
platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices)); platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices));
omap_board_config = sx1_config; omap_board_config = sx1_config;
......
...@@ -152,6 +152,14 @@ static void __init voiceblue_init_irq(void) ...@@ -152,6 +152,14 @@ static void __init voiceblue_init_irq(void)
static void __init voiceblue_init(void) static void __init voiceblue_init(void)
{ {
/* mux pins for uarts */
omap_cfg_reg(UART1_TX);
omap_cfg_reg(UART1_RTS);
omap_cfg_reg(UART2_TX);
omap_cfg_reg(UART2_RTS);
omap_cfg_reg(UART3_TX);
omap_cfg_reg(UART3_RX);
/* Watchdog */ /* Watchdog */
gpio_request(0, "Watchdog"); gpio_request(0, "Watchdog");
/* smc91x reset */ /* smc91x reset */
......
...@@ -131,8 +131,6 @@ void __init omap_serial_init(void) ...@@ -131,8 +131,6 @@ void __init omap_serial_init(void)
} }
for (i = 0; i < OMAP_MAX_NR_PORTS; i++) { for (i = 0; i < OMAP_MAX_NR_PORTS; i++) {
unsigned char reg;
switch (i) { switch (i) {
case 0: case 0:
uart1_ck = clk_get(NULL, "uart1_ck"); uart1_ck = clk_get(NULL, "uart1_ck");
...@@ -143,16 +141,6 @@ void __init omap_serial_init(void) ...@@ -143,16 +141,6 @@ void __init omap_serial_init(void)
if (cpu_is_omap15xx()) if (cpu_is_omap15xx())
clk_set_rate(uart1_ck, 12000000); clk_set_rate(uart1_ck, 12000000);
} }
if (cpu_is_omap15xx()) {
omap_cfg_reg(UART1_TX);
omap_cfg_reg(UART1_RTS);
if (machine_is_omap_innovator()) {
reg = fpga_read(OMAP1510_FPGA_POWER);
reg |= OMAP1510_FPGA_PCR_COM1_EN;
fpga_write(reg, OMAP1510_FPGA_POWER);
udelay(10);
}
}
break; break;
case 1: case 1:
uart2_ck = clk_get(NULL, "uart2_ck"); uart2_ck = clk_get(NULL, "uart2_ck");
...@@ -165,16 +153,6 @@ void __init omap_serial_init(void) ...@@ -165,16 +153,6 @@ void __init omap_serial_init(void)
else else
clk_set_rate(uart2_ck, 48000000); clk_set_rate(uart2_ck, 48000000);
} }
if (cpu_is_omap15xx()) {
omap_cfg_reg(UART2_TX);
omap_cfg_reg(UART2_RTS);
if (machine_is_omap_innovator()) {
reg = fpga_read(OMAP1510_FPGA_POWER);
reg |= OMAP1510_FPGA_PCR_COM2_EN;
fpga_write(reg, OMAP1510_FPGA_POWER);
udelay(10);
}
}
break; break;
case 2: case 2:
uart3_ck = clk_get(NULL, "uart3_ck"); uart3_ck = clk_get(NULL, "uart3_ck");
...@@ -185,10 +163,6 @@ void __init omap_serial_init(void) ...@@ -185,10 +163,6 @@ void __init omap_serial_init(void)
if (cpu_is_omap15xx()) if (cpu_is_omap15xx())
clk_set_rate(uart3_ck, 12000000); clk_set_rate(uart3_ck, 12000000);
} }
if (cpu_is_omap15xx()) {
omap_cfg_reg(UART3_TX);
omap_cfg_reg(UART3_RX);
}
break; break;
} }
omap_serial_reset(&serial_platform_data[i]); omap_serial_reset(&serial_platform_data[i]);
......
...@@ -73,9 +73,21 @@ config MACH_OMAP_3430SDP ...@@ -73,9 +73,21 @@ config MACH_OMAP_3430SDP
bool "OMAP 3430 SDP board" bool "OMAP 3430 SDP board"
depends on ARCH_OMAP3 && ARCH_OMAP34XX depends on ARCH_OMAP3 && ARCH_OMAP34XX
config MACH_NOKIA_N800
bool
config MACH_NOKIA_N810
bool
config MACH_NOKIA_N810_WIMAX
bool
config MACH_NOKIA_N8X0 config MACH_NOKIA_N8X0
bool "Nokia N800/N810" bool "Nokia N800/N810"
depends on ARCH_OMAP2420 depends on ARCH_OMAP2420
select MACH_NOKIA_N800
select MACH_NOKIA_N810
select MACH_NOKIA_N810_WIMAX
config MACH_NOKIA_RX51 config MACH_NOKIA_RX51
bool "Nokia RX-51 board" bool "Nokia RX-51 board"
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/input/matrix_keypad.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/ads7846.h> #include <linux/spi/ads7846.h>
#include <linux/i2c/twl4030.h> #include <linux/i2c/twl4030.h>
...@@ -38,7 +39,6 @@ ...@@ -38,7 +39,6 @@
#include <mach/gpmc.h> #include <mach/gpmc.h>
#include <mach/control.h> #include <mach/control.h>
#include <mach/keypad.h>
#include <mach/gpmc-smc91x.h> #include <mach/gpmc-smc91x.h>
#include "sdram-qimonda-hyb18m512160af-6.h" #include "sdram-qimonda-hyb18m512160af-6.h"
......
...@@ -58,6 +58,8 @@ static void __init gic_init_irq(void) ...@@ -58,6 +58,8 @@ static void __init gic_init_irq(void)
static void __init omap_4430sdp_init_irq(void) static void __init omap_4430sdp_init_irq(void)
{ {
omap_board_config = sdp4430_config;
omap_board_config_size = ARRAY_SIZE(sdp4430_config);
omap2_init_common_hw(NULL, NULL); omap2_init_common_hw(NULL, NULL);
#ifdef CONFIG_OMAP_32K_TIMER #ifdef CONFIG_OMAP_32K_TIMER
omap2_gp_clockevent_set_gptimer(1); omap2_gp_clockevent_set_gptimer(1);
...@@ -70,8 +72,6 @@ static void __init omap_4430sdp_init_irq(void) ...@@ -70,8 +72,6 @@ static void __init omap_4430sdp_init_irq(void)
static void __init omap_4430sdp_init(void) static void __init omap_4430sdp_init(void)
{ {
platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices)); platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices));
omap_board_config = sdp4430_config;
omap_board_config_size = ARRAY_SIZE(sdp4430_config);
omap_serial_init(); omap_serial_init();
} }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/input/matrix_keypad.h>
#include <linux/gpio_keys.h> #include <linux/gpio_keys.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/err.h> #include <linux/err.h>
...@@ -41,7 +42,6 @@ ...@@ -41,7 +42,6 @@
#include <asm/delay.h> #include <asm/delay.h>
#include <mach/control.h> #include <mach/control.h>
#include <mach/usb.h> #include <mach/usb.h>
#include <mach/keypad.h>
#include "mmc-twl4030.h" #include "mmc-twl4030.h"
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/input/matrix_keypad.h>
#include <linux/leds.h> #include <linux/leds.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
...@@ -37,7 +38,6 @@ ...@@ -37,7 +38,6 @@
#include <mach/usb.h> #include <mach/usb.h>
#include <mach/common.h> #include <mach/common.h>
#include <mach/mcspi.h> #include <mach/mcspi.h>
#include <mach/keypad.h>
#include "sdram-micron-mt46h32m32lf-6.h" #include "sdram-micron-mt46h32m32lf-6.h"
#include "mmc-twl4030.h" #include "mmc-twl4030.h"
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/i2c/twl4030.h> #include <linux/i2c/twl4030.h>
#include <linux/leds.h> #include <linux/leds.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/input/matrix_keypad.h>
#include <linux/gpio_keys.h> #include <linux/gpio_keys.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -39,7 +40,6 @@ ...@@ -39,7 +40,6 @@
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/mcspi.h> #include <mach/mcspi.h>
#include <mach/usb.h> #include <mach/usb.h>
#include <mach/keypad.h>
#include <mach/mux.h> #include <mach/mux.h>
#include "sdram-micron-mt46h32m32lf-6.h" #include "sdram-micron-mt46h32m32lf-6.h"
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/input/matrix_keypad.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/i2c/twl4030.h> #include <linux/i2c/twl4030.h>
...@@ -27,7 +28,6 @@ ...@@ -27,7 +28,6 @@
#include <mach/common.h> #include <mach/common.h>
#include <mach/dma.h> #include <mach/dma.h>
#include <mach/gpmc.h> #include <mach/gpmc.h>
#include <mach/keypad.h>
#include <mach/onenand.h> #include <mach/onenand.h>
#include <mach/gpmc-smc91x.h> #include <mach/gpmc-smc91x.h>
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
#include <mach/mux.h> #include <mach/mux.h>
#include <mach/board.h> #include <mach/board.h>
#include <mach/common.h> #include <mach/common.h>
#include <mach/keypad.h>
#include <mach/dma.h> #include <mach/dma.h>
#include <mach/gpmc.h> #include <mach/gpmc.h>
#include <mach/usb.h> #include <mach/usb.h>
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/input/matrix_keypad.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/i2c/twl4030.h> #include <linux/i2c/twl4030.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
...@@ -22,7 +23,6 @@ ...@@ -22,7 +23,6 @@
#include <mach/common.h> #include <mach/common.h>
#include <mach/usb.h> #include <mach/usb.h>
#include <mach/keypad.h>
#include "mmc-twl4030.h" #include "mmc-twl4030.h"
#include "sdram-micron-mt46h32m32lf-6.h" #include "sdram-micron-mt46h32m32lf-6.h"
......
...@@ -302,7 +302,9 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, ...@@ -302,7 +302,9 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
pwrdm_init(powerdomains_omap); pwrdm_init(powerdomains_omap);
clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps); clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps);
omap2_clk_init(); omap2_clk_init();
#endif
omap_serial_early_init(); omap_serial_early_init();
#ifndef CONFIG_ARCH_OMAP4
omap_hwmod_late_init(); omap_hwmod_late_init();
omap_pm_if_init(); omap_pm_if_init();
omap2_sdrc_init(sdrc_cs0, sdrc_cs1); omap2_sdrc_init(sdrc_cs0, sdrc_cs1);
......
...@@ -639,14 +639,15 @@ static void __init prcm_setup_regs(void) ...@@ -639,14 +639,15 @@ static void __init prcm_setup_regs(void)
prm_write_mod_reg(OMAP3430_IO_EN | OMAP3430_WKUP_EN, prm_write_mod_reg(OMAP3430_IO_EN | OMAP3430_WKUP_EN,
OCP_MOD, OMAP3_PRM_IRQENABLE_MPU_OFFSET); OCP_MOD, OMAP3_PRM_IRQENABLE_MPU_OFFSET);
/* Enable GPIO wakeups in PER */ /* Enable wakeups in PER */
prm_write_mod_reg(OMAP3430_EN_GPIO2 | OMAP3430_EN_GPIO3 | prm_write_mod_reg(OMAP3430_EN_GPIO2 | OMAP3430_EN_GPIO3 |
OMAP3430_EN_GPIO4 | OMAP3430_EN_GPIO5 | OMAP3430_EN_GPIO4 | OMAP3430_EN_GPIO5 |
OMAP3430_EN_GPIO6, OMAP3430_PER_MOD, PM_WKEN); OMAP3430_EN_GPIO6 | OMAP3430_EN_UART3,
OMAP3430_PER_MOD, PM_WKEN);
/* and allow them to wake up MPU */ /* and allow them to wake up MPU */
prm_write_mod_reg(OMAP3430_GRPSEL_GPIO2 | OMAP3430_EN_GPIO3 | prm_write_mod_reg(OMAP3430_GRPSEL_GPIO2 | OMAP3430_EN_GPIO3 |
OMAP3430_GRPSEL_GPIO4 | OMAP3430_EN_GPIO5 | OMAP3430_GRPSEL_GPIO4 | OMAP3430_EN_GPIO5 |
OMAP3430_GRPSEL_GPIO6, OMAP3430_GRPSEL_GPIO6 | OMAP3430_EN_UART3,
OMAP3430_PER_MOD, OMAP3430_PM_MPUGRPSEL); OMAP3430_PER_MOD, OMAP3430_PM_MPUGRPSEL);
/* Don't attach IVA interrupts */ /* Don't attach IVA interrupts */
......
...@@ -109,16 +109,6 @@ static struct plat_serial8250_port serial_platform_data2[] = { ...@@ -109,16 +109,6 @@ static struct plat_serial8250_port serial_platform_data2[] = {
.regshift = 2, .regshift = 2,
.uartclk = OMAP24XX_BASE_BAUD * 16, .uartclk = OMAP24XX_BASE_BAUD * 16,
}, { }, {
#ifdef CONFIG_ARCH_OMAP4
.membase = OMAP2_IO_ADDRESS(OMAP_UART4_BASE),
.mapbase = OMAP_UART4_BASE,
.irq = 70,
.flags = UPF_BOOT_AUTOCONF,
.iotype = UPIO_MEM,
.regshift = 2,
.uartclk = OMAP24XX_BASE_BAUD * 16,
}, {
#endif
.flags = 0 .flags = 0
} }
}; };
......
...@@ -978,6 +978,14 @@ void omap_stop_dma(int lch) ...@@ -978,6 +978,14 @@ void omap_stop_dma(int lch)
{ {
u32 l; u32 l;
/* Disable all interrupts on the channel */
if (cpu_class_is_omap1())
dma_write(0, CICR(lch));
l = dma_read(CCR(lch));
l &= ~OMAP_DMA_CCR_EN;
dma_write(l, CCR(lch));
if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) { if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) {
int next_lch, cur_lch = lch; int next_lch, cur_lch = lch;
char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT]; char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT];
...@@ -995,18 +1003,8 @@ void omap_stop_dma(int lch) ...@@ -995,18 +1003,8 @@ void omap_stop_dma(int lch)
next_lch = dma_chan[cur_lch].next_lch; next_lch = dma_chan[cur_lch].next_lch;
cur_lch = next_lch; cur_lch = next_lch;
} while (next_lch != -1); } while (next_lch != -1);
return;
} }
/* Disable all interrupts on the channel */
if (cpu_class_is_omap1())
dma_write(0, CICR(lch));
l = dma_read(CCR(lch));
l &= ~OMAP_DMA_CCR_EN;
dma_write(l, CCR(lch));
dma_chan[lch].flags &= ~OMAP_DMA_ACTIVE; dma_chan[lch].flags &= ~OMAP_DMA_ACTIVE;
} }
EXPORT_SYMBOL(omap_stop_dma); EXPORT_SYMBOL(omap_stop_dma);
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#ifndef ASMARM_ARCH_KEYPAD_H #ifndef ASMARM_ARCH_KEYPAD_H
#define ASMARM_ARCH_KEYPAD_H #define ASMARM_ARCH_KEYPAD_H
#include <linux/input/matrix_keypad.h> #warning: Please update the board to use matrix_keypad.h instead
struct omap_kp_platform_data { struct omap_kp_platform_data {
int rows; int rows;
...@@ -37,6 +37,9 @@ struct omap_kp_platform_data { ...@@ -37,6 +37,9 @@ struct omap_kp_platform_data {
#define KEY_PERSISTENT 0x00800000 #define KEY_PERSISTENT 0x00800000
#define KEYNUM_MASK 0x00EFFFFF #define KEYNUM_MASK 0x00EFFFFF
#define KEY(col, row, val) (((col) << 28) | ((row) << 24) | (val))
#define PERSISTENT_KEY(col, row) (((col) << 28) | ((row) << 24) | \
KEY_PERSISTENT)
#endif #endif
...@@ -664,7 +664,7 @@ static size_t iopgtable_clear_entry_core(struct iommu *obj, u32 da) ...@@ -664,7 +664,7 @@ static size_t iopgtable_clear_entry_core(struct iommu *obj, u32 da)
nent = 1; /* for the next L1 entry */ nent = 1; /* for the next L1 entry */
} else { } else {
bytes = IOPGD_SIZE; bytes = IOPGD_SIZE;
if (*iopgd & IOPGD_SUPER) { if ((*iopgd & IOPGD_SUPER) == IOPGD_SUPER) {
nent *= 16; nent *= 16;
/* rewind to the 1st entry */ /* rewind to the 1st entry */
iopgd = (u32 *)((u32)iopgd & IOSUPER_MASK); iopgd = (u32 *)((u32)iopgd & IOSUPER_MASK);
......
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