提交 031fc8f3 编写于 作者: L 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:
  omap3: Decrease cpufreq transition latency
  omap3: update Pandora defconfig
  omap3: 3430sdp: Enable Linux Regulator framework
  omap3: beagle: Fix USB host port power control
  omap3: pandora: Fix keypad keymap
  omap1: Amstrad Delta defconfig fixes
  omap: Fix omapfb/lcdc on OMAP1510 broken when PM set
  omap: Use resource_size
  omap: Fix race condition in omap dma driver
...@@ -55,10 +55,10 @@ CONFIG_BLK_DEV_INITRD=y ...@@ -55,10 +55,10 @@ CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="" CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set CONFIG_EMBEDDED=y
CONFIG_UID16=y CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y # CONFIG_KALLSYMS is not set
# CONFIG_KALLSYMS_ALL is not set # CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y CONFIG_HOTPLUG=y
...@@ -224,7 +224,7 @@ CONFIG_CPU_CP15_MMU=y ...@@ -224,7 +224,7 @@ CONFIG_CPU_CP15_MMU=y
# #
# Processor Features # Processor Features
# #
# CONFIG_ARM_THUMB is not set CONFIG_ARM_THUMB=y
# CONFIG_CPU_ICACHE_DISABLE is not set # CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set # CONFIG_CPU_DCACHE_DISABLE is not set
CONFIG_CPU_DCACHE_WRITETHROUGH=y CONFIG_CPU_DCACHE_WRITETHROUGH=y
...@@ -248,7 +248,7 @@ CONFIG_CPU_DCACHE_WRITETHROUGH=y ...@@ -248,7 +248,7 @@ CONFIG_CPU_DCACHE_WRITETHROUGH=y
# CONFIG_HIGH_RES_TIMERS is not set # CONFIG_HIGH_RES_TIMERS is not set
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
CONFIG_HZ=100 CONFIG_HZ=100
# CONFIG_AEABI is not set CONFIG_AEABI=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM_MANUAL=y
...@@ -299,7 +299,9 @@ CONFIG_BINFMT_ELF=y ...@@ -299,7 +299,9 @@ CONFIG_BINFMT_ELF=y
# #
# Power management options # Power management options
# #
# CONFIG_PM is not set CONFIG_PM=y
# CONFIG_SUSPEND is not set
CONFIG_PM_RUNTIME=y
# #
# Networking # Networking
...@@ -670,7 +672,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 ...@@ -670,7 +672,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set # CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set # CONFIG_INPUT_EVBUG is not set
# #
...@@ -784,6 +786,7 @@ CONFIG_I2C_OMAP=y ...@@ -784,6 +786,7 @@ CONFIG_I2C_OMAP=y
# #
# CONFIG_SPI is not set # CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set # CONFIG_SPI_MASTER is not set
CONFIG_GPIO_SYSFS=y
# #
# Dallas's 1-wire bus # Dallas's 1-wire bus
...@@ -820,6 +823,7 @@ CONFIG_LEDS_AMS_DELTA=y ...@@ -820,6 +823,7 @@ CONFIG_LEDS_AMS_DELTA=y
CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
# #
# Multimedia devices # Multimedia devices
...@@ -896,7 +900,13 @@ CONFIG_LOGO_LINUX_CLUT224=y ...@@ -896,7 +900,13 @@ CONFIG_LOGO_LINUX_CLUT224=y
# #
# Sound # Sound
# #
# CONFIG_SOUND is not set CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_SOC=y
CONFIG_SND_OMAP_SOC=y
CONFIG_SND_OMAP_SOC_AMS_DELTA=y
# #
# HID Devices # HID Devices
......
...@@ -611,7 +611,7 @@ CONFIG_INPUT_KEYBOARD=y ...@@ -611,7 +611,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set # CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_GPIO is not set CONFIG_KEYBOARD_GPIO=y
CONFIG_INPUT_MOUSE=y CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set # CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_SERIAL is not set
...@@ -634,7 +634,8 @@ CONFIG_TOUCHSCREEN_ADS7846=y ...@@ -634,7 +634,8 @@ CONFIG_TOUCHSCREEN_ADS7846=y
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set # CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
# CONFIG_INPUT_MISC is not set CONFIG_INPUT_MISC=y
CONFIG_INPUT_TWL4030_PWRBUTTON=y
# #
# Hardware I/O ports # Hardware I/O ports
...@@ -834,7 +835,29 @@ CONFIG_DAB=y ...@@ -834,7 +835,29 @@ CONFIG_DAB=y
# #
# CONFIG_VGA_CONSOLE is not set # CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y CONFIG_DUMMY_CONSOLE=y
# CONFIG_SOUND is not set CONFIG_SOUND=y
CONFIG_SOUND_OSS_CORE=y
CONFIG_SOUND_OSS_CORE_PRECLAIM=y
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
CONFIG_SND_JACK=y
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_SND_DRIVERS=y
CONFIG_SND_USB=y
CONFIG_SND_SOC=y
CONFIG_SND_OMAP_SOC=y
CONFIG_SND_OMAP_SOC_MCBSP=y
CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=y
CONFIG_SND_SOC_I2C_AND_SPI=y
CONFIG_SND_SOC_TWL4030=y
CONFIG_HID_SUPPORT=y CONFIG_HID_SUPPORT=y
CONFIG_HID=y CONFIG_HID=y
# CONFIG_HID_DEBUG is not set # CONFIG_HID_DEBUG is not set
...@@ -1020,7 +1043,13 @@ CONFIG_MMC_BLOCK_BOUNCE=y ...@@ -1020,7 +1043,13 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_MMC_SPI is not set # CONFIG_MMC_SPI is not set
# CONFIG_MEMSTICK is not set # CONFIG_MEMSTICK is not set
# CONFIG_ACCESSIBILITY is not set # CONFIG_ACCESSIBILITY is not set
# CONFIG_NEW_LEDS is not set CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_GPIO_PLATFORM=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
CONFIG_RTC_LIB=y CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS=y
...@@ -1084,9 +1113,12 @@ CONFIG_RTC_DRV_TWL4030=y ...@@ -1084,9 +1113,12 @@ CONFIG_RTC_DRV_TWL4030=y
# on-CPU RTC drivers # on-CPU RTC drivers
# #
# CONFIG_DMADEVICES is not set # CONFIG_DMADEVICES is not set
# CONFIG_REGULATOR is not set
# CONFIG_UIO is not set # CONFIG_UIO is not set
CONFIG_REGULATOR=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_REGULATOR_TWL4030=y
# #
# File systems # File systems
# #
...@@ -1407,3 +1439,10 @@ CONFIG_PLIST=y ...@@ -1407,3 +1439,10 @@ CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y CONFIG_HAS_DMA=y
# added by hand for now
CONFIG_KEYBOARD_TWL4030=y
CONFIG_USB_OTG_UTILS=y
CONFIG_TWL4030_USB=y
CONFIG_MMC_OMAP_HS=y
...@@ -1703,7 +1703,14 @@ CONFIG_RTC_DRV_TWL4030=y ...@@ -1703,7 +1703,14 @@ CONFIG_RTC_DRV_TWL4030=y
# on-CPU RTC drivers # on-CPU RTC drivers
# #
# CONFIG_DMADEVICES is not set # CONFIG_DMADEVICES is not set
# CONFIG_REGULATOR is not set CONFIG_REGULATOR=y
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
# CONFIG_REGULATOR_BQ24022 is not set
# CONFIG_REGULATOR_MAX1586 is not set
CONFIG_REGULATOR_TWL4030=y
# CONFIG_UIO is not set # CONFIG_UIO is not set
# CONFIG_STAGING is not set # CONFIG_STAGING is not set
......
...@@ -162,7 +162,7 @@ static int beagle_twl_gpio_setup(struct device *dev, ...@@ -162,7 +162,7 @@ static int beagle_twl_gpio_setup(struct device *dev,
/* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
......
...@@ -134,50 +134,50 @@ static void __init pandora_keys_gpio_init(void) ...@@ -134,50 +134,50 @@ static void __init pandora_keys_gpio_init(void)
} }
static int board_keymap[] = { static int board_keymap[] = {
/* col, row, code */ /* row, col, code */
KEY(0, 0, KEY_9), KEY(0, 0, KEY_9),
KEY(0, 1, KEY_0), KEY(0, 1, KEY_8),
KEY(0, 2, KEY_BACKSPACE), KEY(0, 2, KEY_I),
KEY(0, 3, KEY_O), KEY(0, 3, KEY_J),
KEY(0, 4, KEY_P), KEY(0, 4, KEY_N),
KEY(0, 5, KEY_K), KEY(0, 5, KEY_M),
KEY(0, 6, KEY_L), KEY(1, 0, KEY_0),
KEY(0, 7, KEY_ENTER),
KEY(1, 0, KEY_8),
KEY(1, 1, KEY_7), KEY(1, 1, KEY_7),
KEY(1, 2, KEY_6), KEY(1, 2, KEY_U),
KEY(1, 3, KEY_5), KEY(1, 3, KEY_H),
KEY(1, 4, KEY_4), KEY(1, 4, KEY_B),
KEY(1, 5, KEY_3), KEY(1, 5, KEY_SPACE),
KEY(1, 6, KEY_2), KEY(2, 0, KEY_BACKSPACE),
KEY(1, 7, KEY_1), KEY(2, 1, KEY_6),
KEY(2, 0, KEY_I),
KEY(2, 1, KEY_U),
KEY(2, 2, KEY_Y), KEY(2, 2, KEY_Y),
KEY(2, 3, KEY_T), KEY(2, 3, KEY_G),
KEY(2, 4, KEY_R), KEY(2, 4, KEY_V),
KEY(2, 5, KEY_E), KEY(2, 5, KEY_FN),
KEY(2, 6, KEY_W), KEY(3, 0, KEY_O),
KEY(2, 7, KEY_Q), KEY(3, 1, KEY_5),
KEY(3, 0, KEY_J), KEY(3, 2, KEY_T),
KEY(3, 1, KEY_H),
KEY(3, 2, KEY_G),
KEY(3, 3, KEY_F), KEY(3, 3, KEY_F),
KEY(3, 4, KEY_D), KEY(3, 4, KEY_C),
KEY(3, 5, KEY_S), KEY(4, 0, KEY_P),
KEY(3, 6, KEY_A), KEY(4, 1, KEY_4),
KEY(3, 7, KEY_LEFTSHIFT), KEY(4, 2, KEY_R),
KEY(4, 0, KEY_N), KEY(4, 3, KEY_D),
KEY(4, 1, KEY_B),
KEY(4, 2, KEY_V),
KEY(4, 3, KEY_C),
KEY(4, 4, KEY_X), KEY(4, 4, KEY_X),
KEY(4, 5, KEY_Z), KEY(5, 0, KEY_K),
KEY(4, 6, KEY_DOT), KEY(5, 1, KEY_3),
KEY(4, 7, KEY_COMMA), KEY(5, 2, KEY_E),
KEY(5, 0, KEY_M), KEY(5, 3, KEY_S),
KEY(5, 1, KEY_SPACE), KEY(5, 4, KEY_Z),
KEY(5, 2, KEY_FN), KEY(6, 0, KEY_L),
KEY(6, 1, KEY_2),
KEY(6, 2, KEY_W),
KEY(6, 3, KEY_A),
KEY(6, 4, KEY_DOT),
KEY(7, 0, KEY_ENTER),
KEY(7, 1, KEY_1),
KEY(7, 2, KEY_Q),
KEY(7, 3, KEY_LEFTSHIFT),
KEY(7, 4, KEY_COMMA),
}; };
static struct matrix_keymap_data board_map_data = { static struct matrix_keymap_data board_map_data = {
......
...@@ -366,7 +366,7 @@ int gpmc_cs_request(int cs, unsigned long size, unsigned long *base) ...@@ -366,7 +366,7 @@ int gpmc_cs_request(int cs, unsigned long size, unsigned long *base)
if (r < 0) if (r < 0)
goto out; goto out;
gpmc_cs_enable_mem(cs, res->start, res->end - res->start + 1); gpmc_cs_enable_mem(cs, res->start, resource_size(res));
*base = res->start; *base = res->start;
gpmc_cs_set_reserved(cs, 1); gpmc_cs_set_reserved(cs, 1);
out: out:
......
...@@ -300,7 +300,7 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev) ...@@ -300,7 +300,7 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
dev_err(&pdev->dev, "invalid mem resource\n"); dev_err(&pdev->dev, "invalid mem resource\n");
return -ENODEV; return -ENODEV;
} }
mbox_base = ioremap(res->start, res->end - res->start); mbox_base = ioremap(res->start, resource_size(res));
if (!mbox_base) if (!mbox_base)
return -ENOMEM; return -ENOMEM;
......
...@@ -127,7 +127,7 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy) ...@@ -127,7 +127,7 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy)
} }
/* FIXME: what's the actual transition time? */ /* FIXME: what's the actual transition time? */
policy->cpuinfo.transition_latency = 10 * 1000 * 1000; policy->cpuinfo.transition_latency = 300 * 1000;
return 0; return 0;
} }
......
...@@ -691,13 +691,16 @@ static inline void disable_lnk(int lch) ...@@ -691,13 +691,16 @@ static inline void disable_lnk(int lch)
static inline void omap2_enable_irq_lch(int lch) static inline void omap2_enable_irq_lch(int lch)
{ {
u32 val; u32 val;
unsigned long flags;
if (!cpu_class_is_omap2()) if (!cpu_class_is_omap2())
return; return;
spin_lock_irqsave(&dma_chan_lock, flags);
val = dma_read(IRQENABLE_L0); val = dma_read(IRQENABLE_L0);
val |= 1 << lch; val |= 1 << lch;
dma_write(val, IRQENABLE_L0); dma_write(val, IRQENABLE_L0);
spin_unlock_irqrestore(&dma_chan_lock, flags);
} }
int omap_request_dma(int dev_id, const char *dev_name, int omap_request_dma(int dev_id, const char *dev_name,
...@@ -799,10 +802,13 @@ void omap_free_dma(int lch) ...@@ -799,10 +802,13 @@ void omap_free_dma(int lch)
if (cpu_class_is_omap2()) { if (cpu_class_is_omap2()) {
u32 val; u32 val;
spin_lock_irqsave(&dma_chan_lock, flags);
/* Disable interrupts */ /* Disable interrupts */
val = dma_read(IRQENABLE_L0); val = dma_read(IRQENABLE_L0);
val &= ~(1 << lch); val &= ~(1 << lch);
dma_write(val, IRQENABLE_L0); dma_write(val, IRQENABLE_L0);
spin_unlock_irqrestore(&dma_chan_lock, flags);
/* Clear the CSR register and IRQ status register */ /* Clear the CSR register and IRQ status register */
dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR(lch)); dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR(lch));
...@@ -1108,6 +1114,14 @@ int omap_dma_running(void) ...@@ -1108,6 +1114,14 @@ int omap_dma_running(void)
{ {
int lch; int lch;
/*
* On OMAP1510, internal LCD controller will start the transfer
* when it gets enabled, so assume DMA running if LCD enabled.
*/
if (cpu_is_omap1510())
if (omap_readw(0xfffec000 + 0x00) & (1 << 0))
return 1;
/* Check if LCD DMA is running */ /* Check if LCD DMA is running */
if (cpu_is_omap16xx()) if (cpu_is_omap16xx())
if (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN) if (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册