diff options
Diffstat (limited to 'arch/arm/plat-omap')
-rw-r--r-- | arch/arm/plat-omap/cpu-omap.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/dma.c | 47 | ||||
-rw-r--r-- | arch/arm/plat-omap/gpio.c | 4 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/cpu.h | 37 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/gpmc.h | 4 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/irqs.h | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/keypad.h | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/lcd_mipid.h | 5 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/mmc.h | 20 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/mux.h | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/omapfb.h | 4 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/powerdomain.h | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/iommu.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/iovmm.c | 14 | ||||
-rw-r--r-- | arch/arm/plat-omap/mcbsp.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/sram.c | 3 |
16 files changed, 98 insertions, 54 deletions
diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat-omap/cpu-omap.c index 1868c0d8f9b5..341235c278ac 100644 --- a/arch/arm/plat-omap/cpu-omap.c +++ b/arch/arm/plat-omap/cpu-omap.c | |||
@@ -127,7 +127,7 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy) | |||
127 | } | 127 | } |
128 | 128 | ||
129 | /* FIXME: what's the actual transition time? */ | 129 | /* FIXME: what's the actual transition time? */ |
130 | policy->cpuinfo.transition_latency = 10 * 1000 * 1000; | 130 | policy->cpuinfo.transition_latency = 300 * 1000; |
131 | 131 | ||
132 | return 0; | 132 | return 0; |
133 | } | 133 | } |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index fd3154ae69b1..68eaae324b6a 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -691,13 +691,16 @@ static inline void disable_lnk(int lch) | |||
691 | static inline void omap2_enable_irq_lch(int lch) | 691 | static inline void omap2_enable_irq_lch(int lch) |
692 | { | 692 | { |
693 | u32 val; | 693 | u32 val; |
694 | unsigned long flags; | ||
694 | 695 | ||
695 | if (!cpu_class_is_omap2()) | 696 | if (!cpu_class_is_omap2()) |
696 | return; | 697 | return; |
697 | 698 | ||
699 | spin_lock_irqsave(&dma_chan_lock, flags); | ||
698 | val = dma_read(IRQENABLE_L0); | 700 | val = dma_read(IRQENABLE_L0); |
699 | val |= 1 << lch; | 701 | val |= 1 << lch; |
700 | dma_write(val, IRQENABLE_L0); | 702 | dma_write(val, IRQENABLE_L0); |
703 | spin_unlock_irqrestore(&dma_chan_lock, flags); | ||
701 | } | 704 | } |
702 | 705 | ||
703 | int omap_request_dma(int dev_id, const char *dev_name, | 706 | int omap_request_dma(int dev_id, const char *dev_name, |
@@ -799,10 +802,13 @@ void omap_free_dma(int lch) | |||
799 | 802 | ||
800 | if (cpu_class_is_omap2()) { | 803 | if (cpu_class_is_omap2()) { |
801 | u32 val; | 804 | u32 val; |
805 | |||
806 | spin_lock_irqsave(&dma_chan_lock, flags); | ||
802 | /* Disable interrupts */ | 807 | /* Disable interrupts */ |
803 | val = dma_read(IRQENABLE_L0); | 808 | val = dma_read(IRQENABLE_L0); |
804 | val &= ~(1 << lch); | 809 | val &= ~(1 << lch); |
805 | dma_write(val, IRQENABLE_L0); | 810 | dma_write(val, IRQENABLE_L0); |
811 | spin_unlock_irqrestore(&dma_chan_lock, flags); | ||
806 | 812 | ||
807 | /* Clear the CSR register and IRQ status register */ | 813 | /* Clear the CSR register and IRQ status register */ |
808 | dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR(lch)); | 814 | dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR(lch)); |
@@ -829,10 +835,10 @@ EXPORT_SYMBOL(omap_free_dma); | |||
829 | * | 835 | * |
830 | * @param arb_rate | 836 | * @param arb_rate |
831 | * @param max_fifo_depth | 837 | * @param max_fifo_depth |
832 | * @param tparams - Number of thereads to reserve : DMA_THREAD_RESERVE_NORM | 838 | * @param tparams - Number of threads to reserve : DMA_THREAD_RESERVE_NORM |
833 | * DMA_THREAD_RESERVE_ONET | 839 | * DMA_THREAD_RESERVE_ONET |
834 | * DMA_THREAD_RESERVE_TWOT | 840 | * DMA_THREAD_RESERVE_TWOT |
835 | * DMA_THREAD_RESERVE_THREET | 841 | * DMA_THREAD_RESERVE_THREET |
836 | */ | 842 | */ |
837 | void | 843 | void |
838 | omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams) | 844 | omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams) |
@@ -844,11 +850,14 @@ omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams) | |||
844 | return; | 850 | return; |
845 | } | 851 | } |
846 | 852 | ||
853 | if (max_fifo_depth == 0) | ||
854 | max_fifo_depth = 1; | ||
847 | if (arb_rate == 0) | 855 | if (arb_rate == 0) |
848 | arb_rate = 1; | 856 | arb_rate = 1; |
849 | 857 | ||
850 | reg = (arb_rate & 0xff) << 16; | 858 | reg = 0xff & max_fifo_depth; |
851 | reg |= (0xff & max_fifo_depth); | 859 | reg |= (0x3 & tparams) << 12; |
860 | reg |= (arb_rate & 0xff) << 16; | ||
852 | 861 | ||
853 | dma_write(reg, GCR); | 862 | dma_write(reg, GCR); |
854 | } | 863 | } |
@@ -975,6 +984,14 @@ void omap_stop_dma(int lch) | |||
975 | { | 984 | { |
976 | u32 l; | 985 | u32 l; |
977 | 986 | ||
987 | /* Disable all interrupts on the channel */ | ||
988 | if (cpu_class_is_omap1()) | ||
989 | dma_write(0, CICR(lch)); | ||
990 | |||
991 | l = dma_read(CCR(lch)); | ||
992 | l &= ~OMAP_DMA_CCR_EN; | ||
993 | dma_write(l, CCR(lch)); | ||
994 | |||
978 | if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) { | 995 | if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) { |
979 | int next_lch, cur_lch = lch; | 996 | int next_lch, cur_lch = lch; |
980 | char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT]; | 997 | char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT]; |
@@ -992,18 +1009,8 @@ void omap_stop_dma(int lch) | |||
992 | next_lch = dma_chan[cur_lch].next_lch; | 1009 | next_lch = dma_chan[cur_lch].next_lch; |
993 | cur_lch = next_lch; | 1010 | cur_lch = next_lch; |
994 | } while (next_lch != -1); | 1011 | } while (next_lch != -1); |
995 | |||
996 | return; | ||
997 | } | 1012 | } |
998 | 1013 | ||
999 | /* Disable all interrupts on the channel */ | ||
1000 | if (cpu_class_is_omap1()) | ||
1001 | dma_write(0, CICR(lch)); | ||
1002 | |||
1003 | l = dma_read(CCR(lch)); | ||
1004 | l &= ~OMAP_DMA_CCR_EN; | ||
1005 | dma_write(l, CCR(lch)); | ||
1006 | |||
1007 | dma_chan[lch].flags &= ~OMAP_DMA_ACTIVE; | 1014 | dma_chan[lch].flags &= ~OMAP_DMA_ACTIVE; |
1008 | } | 1015 | } |
1009 | EXPORT_SYMBOL(omap_stop_dma); | 1016 | EXPORT_SYMBOL(omap_stop_dma); |
@@ -1107,6 +1114,14 @@ int omap_dma_running(void) | |||
1107 | { | 1114 | { |
1108 | int lch; | 1115 | int lch; |
1109 | 1116 | ||
1117 | /* | ||
1118 | * On OMAP1510, internal LCD controller will start the transfer | ||
1119 | * when it gets enabled, so assume DMA running if LCD enabled. | ||
1120 | */ | ||
1121 | if (cpu_is_omap1510()) | ||
1122 | if (omap_readw(0xfffec000 + 0x00) & (1 << 0)) | ||
1123 | return 1; | ||
1124 | |||
1110 | /* Check if LCD DMA is running */ | 1125 | /* Check if LCD DMA is running */ |
1111 | if (cpu_is_omap16xx()) | 1126 | if (cpu_is_omap16xx()) |
1112 | if (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN) | 1127 | if (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN) |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 693839c89ad0..7c345b757df1 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -250,7 +250,7 @@ static struct gpio_bank gpio_bank_730[7] = { | |||
250 | 250 | ||
251 | #ifdef CONFIG_ARCH_OMAP850 | 251 | #ifdef CONFIG_ARCH_OMAP850 |
252 | static struct gpio_bank gpio_bank_850[7] = { | 252 | static struct gpio_bank gpio_bank_850[7] = { |
253 | { OMAP1_MPUIO_BASE, INT_850_MPUIO, IH_MPUIO_BASE, METHOD_MPUIO }, | 253 | { OMAP1_MPUIO_VBASE, INT_850_MPUIO, IH_MPUIO_BASE, METHOD_MPUIO }, |
254 | { OMAP850_GPIO1_BASE, INT_850_GPIO_BANK1, IH_GPIO_BASE, METHOD_GPIO_850 }, | 254 | { OMAP850_GPIO1_BASE, INT_850_GPIO_BANK1, IH_GPIO_BASE, METHOD_GPIO_850 }, |
255 | { OMAP850_GPIO2_BASE, INT_850_GPIO_BANK2, IH_GPIO_BASE + 32, METHOD_GPIO_850 }, | 255 | { OMAP850_GPIO2_BASE, INT_850_GPIO_BANK2, IH_GPIO_BASE + 32, METHOD_GPIO_850 }, |
256 | { OMAP850_GPIO3_BASE, INT_850_GPIO_BANK3, IH_GPIO_BASE + 64, METHOD_GPIO_850 }, | 256 | { OMAP850_GPIO3_BASE, INT_850_GPIO_BANK3, IH_GPIO_BASE + 64, METHOD_GPIO_850 }, |
@@ -373,7 +373,7 @@ static inline int gpio_valid(int gpio) | |||
373 | 373 | ||
374 | static int check_gpio(int gpio) | 374 | static int check_gpio(int gpio) |
375 | { | 375 | { |
376 | if (unlikely(gpio_valid(gpio)) < 0) { | 376 | if (unlikely(gpio_valid(gpio) < 0)) { |
377 | printk(KERN_ERR "omap-gpio: invalid GPIO %d\n", gpio); | 377 | printk(KERN_ERR "omap-gpio: invalid GPIO %d\n", gpio); |
378 | dump_stack(); | 378 | dump_stack(); |
379 | return -1; | 379 | return -1; |
diff --git a/arch/arm/plat-omap/include/mach/cpu.h b/arch/arm/plat-omap/include/mach/cpu.h index 11e73d9e8928..f129efb3075e 100644 --- a/arch/arm/plat-omap/include/mach/cpu.h +++ b/arch/arm/plat-omap/include/mach/cpu.h | |||
@@ -303,32 +303,21 @@ IS_OMAP_TYPE(3430, 0x3430) | |||
303 | #define cpu_is_omap2430() 0 | 303 | #define cpu_is_omap2430() 0 |
304 | #define cpu_is_omap3430() 0 | 304 | #define cpu_is_omap3430() 0 |
305 | 305 | ||
306 | #if defined(MULTI_OMAP1) | ||
307 | # if defined(CONFIG_ARCH_OMAP730) | ||
308 | # undef cpu_is_omap730 | ||
309 | # define cpu_is_omap730() is_omap730() | ||
310 | # endif | ||
311 | # if defined(CONFIG_ARCH_OMAP850) | ||
312 | # undef cpu_is_omap850 | ||
313 | # define cpu_is_omap850() is_omap850() | ||
314 | # endif | ||
315 | #else | ||
316 | # if defined(CONFIG_ARCH_OMAP730) | ||
317 | # undef cpu_is_omap730 | ||
318 | # define cpu_is_omap730() 1 | ||
319 | # endif | ||
320 | #endif | ||
321 | #else | ||
322 | # if defined(CONFIG_ARCH_OMAP850) | ||
323 | # undef cpu_is_omap850 | ||
324 | # define cpu_is_omap850() 1 | ||
325 | # endif | ||
326 | #endif | ||
327 | |||
328 | /* | 306 | /* |
329 | * Whether we have MULTI_OMAP1 or not, we still need to distinguish | 307 | * Whether we have MULTI_OMAP1 or not, we still need to distinguish |
330 | * between 330 vs. 1510 and 1611B/5912 vs. 1710. | 308 | * between 730 vs 850, 330 vs. 1510 and 1611B/5912 vs. 1710. |
331 | */ | 309 | */ |
310 | |||
311 | #if defined(CONFIG_ARCH_OMAP730) | ||
312 | # undef cpu_is_omap730 | ||
313 | # define cpu_is_omap730() is_omap730() | ||
314 | #endif | ||
315 | |||
316 | #if defined(CONFIG_ARCH_OMAP850) | ||
317 | # undef cpu_is_omap850 | ||
318 | # define cpu_is_omap850() is_omap850() | ||
319 | #endif | ||
320 | |||
332 | #if defined(CONFIG_ARCH_OMAP15XX) | 321 | #if defined(CONFIG_ARCH_OMAP15XX) |
333 | # undef cpu_is_omap310 | 322 | # undef cpu_is_omap310 |
334 | # undef cpu_is_omap1510 | 323 | # undef cpu_is_omap1510 |
@@ -433,3 +422,5 @@ IS_OMAP_TYPE(3430, 0x3430) | |||
433 | 422 | ||
434 | int omap_chip_is(struct omap_chip_id oci); | 423 | int omap_chip_is(struct omap_chip_id oci); |
435 | void omap2_check_revision(void); | 424 | void omap2_check_revision(void); |
425 | |||
426 | #endif | ||
diff --git a/arch/arm/plat-omap/include/mach/gpmc.h b/arch/arm/plat-omap/include/mach/gpmc.h index 921b16532ff5..9c99cda77ba6 100644 --- a/arch/arm/plat-omap/include/mach/gpmc.h +++ b/arch/arm/plat-omap/include/mach/gpmc.h | |||
@@ -103,6 +103,10 @@ extern int gpmc_cs_request(int cs, unsigned long size, unsigned long *base); | |||
103 | extern void gpmc_cs_free(int cs); | 103 | extern void gpmc_cs_free(int cs); |
104 | extern int gpmc_cs_set_reserved(int cs, int reserved); | 104 | extern int gpmc_cs_set_reserved(int cs, int reserved); |
105 | extern int gpmc_cs_reserved(int cs); | 105 | extern int gpmc_cs_reserved(int cs); |
106 | extern int gpmc_prefetch_enable(int cs, int dma_mode, | ||
107 | unsigned int u32_count, int is_write); | ||
108 | extern void gpmc_prefetch_reset(void); | ||
109 | extern int gpmc_prefetch_status(void); | ||
106 | extern void __init gpmc_init(void); | 110 | extern void __init gpmc_init(void); |
107 | 111 | ||
108 | #endif | 112 | #endif |
diff --git a/arch/arm/plat-omap/include/mach/irqs.h b/arch/arm/plat-omap/include/mach/irqs.h index fb7cb7723990..28a165058b61 100644 --- a/arch/arm/plat-omap/include/mach/irqs.h +++ b/arch/arm/plat-omap/include/mach/irqs.h | |||
@@ -503,6 +503,7 @@ | |||
503 | #define INT_44XX_FPKA_READY_IRQ (50 + IRQ_GIC_START) | 503 | #define INT_44XX_FPKA_READY_IRQ (50 + IRQ_GIC_START) |
504 | #define INT_44XX_SHA1MD51_IRQ (51 + IRQ_GIC_START) | 504 | #define INT_44XX_SHA1MD51_IRQ (51 + IRQ_GIC_START) |
505 | #define INT_44XX_RNG_IRQ (52 + IRQ_GIC_START) | 505 | #define INT_44XX_RNG_IRQ (52 + IRQ_GIC_START) |
506 | #define INT_44XX_MMC5_IRQ (59 + IRQ_GIC_START) | ||
506 | #define INT_44XX_I2C3_IRQ (61 + IRQ_GIC_START) | 507 | #define INT_44XX_I2C3_IRQ (61 + IRQ_GIC_START) |
507 | #define INT_44XX_FPKA_ERROR_IRQ (64 + IRQ_GIC_START) | 508 | #define INT_44XX_FPKA_ERROR_IRQ (64 + IRQ_GIC_START) |
508 | #define INT_44XX_PBIAS_IRQ (75 + IRQ_GIC_START) | 509 | #define INT_44XX_PBIAS_IRQ (75 + IRQ_GIC_START) |
@@ -511,6 +512,7 @@ | |||
511 | #define INT_44XX_TLL_IRQ (78 + IRQ_GIC_START) | 512 | #define INT_44XX_TLL_IRQ (78 + IRQ_GIC_START) |
512 | #define INT_44XX_PARTHASH_IRQ (79 + IRQ_GIC_START) | 513 | #define INT_44XX_PARTHASH_IRQ (79 + IRQ_GIC_START) |
513 | #define INT_44XX_MMC3_IRQ (94 + IRQ_GIC_START) | 514 | #define INT_44XX_MMC3_IRQ (94 + IRQ_GIC_START) |
515 | #define INT_44XX_MMC4_IRQ (96 + IRQ_GIC_START) | ||
514 | 516 | ||
515 | 517 | ||
516 | /* Max. 128 level 2 IRQs (OMAP1610), 192 GPIOs (OMAP730/850) and | 518 | /* Max. 128 level 2 IRQs (OMAP1610), 192 GPIOs (OMAP730/850) and |
diff --git a/arch/arm/plat-omap/include/mach/keypad.h b/arch/arm/plat-omap/include/mach/keypad.h index 45ea3ae3c995..3ae52ccc793c 100644 --- a/arch/arm/plat-omap/include/mach/keypad.h +++ b/arch/arm/plat-omap/include/mach/keypad.h | |||
@@ -10,6 +10,8 @@ | |||
10 | #ifndef ASMARM_ARCH_KEYPAD_H | 10 | #ifndef ASMARM_ARCH_KEYPAD_H |
11 | #define ASMARM_ARCH_KEYPAD_H | 11 | #define ASMARM_ARCH_KEYPAD_H |
12 | 12 | ||
13 | #warning: Please update the board to use matrix_keypad.h instead | ||
14 | |||
13 | struct omap_kp_platform_data { | 15 | struct omap_kp_platform_data { |
14 | int rows; | 16 | int rows; |
15 | int cols; | 17 | int cols; |
diff --git a/arch/arm/plat-omap/include/mach/lcd_mipid.h b/arch/arm/plat-omap/include/mach/lcd_mipid.h index f8fbc4801e52..8e52c6572281 100644 --- a/arch/arm/plat-omap/include/mach/lcd_mipid.h +++ b/arch/arm/plat-omap/include/mach/lcd_mipid.h | |||
@@ -16,7 +16,12 @@ enum mipid_test_result { | |||
16 | struct mipid_platform_data { | 16 | struct mipid_platform_data { |
17 | int nreset_gpio; | 17 | int nreset_gpio; |
18 | int data_lines; | 18 | int data_lines; |
19 | |||
19 | void (*shutdown)(struct mipid_platform_data *pdata); | 20 | void (*shutdown)(struct mipid_platform_data *pdata); |
21 | void (*set_bklight_level)(struct mipid_platform_data *pdata, | ||
22 | int level); | ||
23 | int (*get_bklight_level)(struct mipid_platform_data *pdata); | ||
24 | int (*get_bklight_max)(struct mipid_platform_data *pdata); | ||
20 | }; | 25 | }; |
21 | 26 | ||
22 | #endif | 27 | #endif |
diff --git a/arch/arm/plat-omap/include/mach/mmc.h b/arch/arm/plat-omap/include/mach/mmc.h index 81d5b36534b3..7229b9593301 100644 --- a/arch/arm/plat-omap/include/mach/mmc.h +++ b/arch/arm/plat-omap/include/mach/mmc.h | |||
@@ -25,11 +25,18 @@ | |||
25 | 25 | ||
26 | #define OMAP24XX_NR_MMC 2 | 26 | #define OMAP24XX_NR_MMC 2 |
27 | #define OMAP34XX_NR_MMC 3 | 27 | #define OMAP34XX_NR_MMC 3 |
28 | #define OMAP44XX_NR_MMC 5 | ||
28 | #define OMAP2420_MMC_SIZE OMAP1_MMC_SIZE | 29 | #define OMAP2420_MMC_SIZE OMAP1_MMC_SIZE |
29 | #define HSMMC_SIZE 0x200 | 30 | #define OMAP3_HSMMC_SIZE 0x200 |
31 | #define OMAP4_HSMMC_SIZE 0x1000 | ||
30 | #define OMAP2_MMC1_BASE 0x4809c000 | 32 | #define OMAP2_MMC1_BASE 0x4809c000 |
31 | #define OMAP2_MMC2_BASE 0x480b4000 | 33 | #define OMAP2_MMC2_BASE 0x480b4000 |
32 | #define OMAP3_MMC3_BASE 0x480ad000 | 34 | #define OMAP3_MMC3_BASE 0x480ad000 |
35 | #define OMAP4_MMC4_BASE 0x480d1000 | ||
36 | #define OMAP4_MMC5_BASE 0x480d5000 | ||
37 | #define OMAP4_MMC_REG_OFFSET 0x100 | ||
38 | #define HSMMC5 (1 << 4) | ||
39 | #define HSMMC4 (1 << 3) | ||
33 | #define HSMMC3 (1 << 2) | 40 | #define HSMMC3 (1 << 2) |
34 | #define HSMMC2 (1 << 1) | 41 | #define HSMMC2 (1 << 1) |
35 | #define HSMMC1 (1 << 0) | 42 | #define HSMMC1 (1 << 0) |
@@ -59,6 +66,9 @@ struct omap_mmc_platform_data { | |||
59 | int (*suspend)(struct device *dev, int slot); | 66 | int (*suspend)(struct device *dev, int slot); |
60 | int (*resume)(struct device *dev, int slot); | 67 | int (*resume)(struct device *dev, int slot); |
61 | 68 | ||
69 | /* Return context loss count due to PM states changing */ | ||
70 | int (*get_context_loss_count)(struct device *dev); | ||
71 | |||
62 | u64 dma_mask; | 72 | u64 dma_mask; |
63 | 73 | ||
64 | struct omap_mmc_slot_data { | 74 | struct omap_mmc_slot_data { |
@@ -80,12 +90,20 @@ struct omap_mmc_platform_data { | |||
80 | /* use the internal clock */ | 90 | /* use the internal clock */ |
81 | unsigned internal_clock:1; | 91 | unsigned internal_clock:1; |
82 | 92 | ||
93 | /* nonremovable e.g. eMMC */ | ||
94 | unsigned nonremovable:1; | ||
95 | |||
96 | /* Try to sleep or power off when possible */ | ||
97 | unsigned power_saving:1; | ||
98 | |||
83 | int switch_pin; /* gpio (card detect) */ | 99 | int switch_pin; /* gpio (card detect) */ |
84 | int gpio_wp; /* gpio (write protect) */ | 100 | int gpio_wp; /* gpio (write protect) */ |
85 | 101 | ||
86 | int (* set_bus_mode)(struct device *dev, int slot, int bus_mode); | 102 | int (* set_bus_mode)(struct device *dev, int slot, int bus_mode); |
87 | int (* set_power)(struct device *dev, int slot, int power_on, int vdd); | 103 | int (* set_power)(struct device *dev, int slot, int power_on, int vdd); |
88 | int (* get_ro)(struct device *dev, int slot); | 104 | int (* get_ro)(struct device *dev, int slot); |
105 | int (*set_sleep)(struct device *dev, int slot, int sleep, | ||
106 | int vdd, int cardsleep); | ||
89 | 107 | ||
90 | /* return MMC cover switch state, can be NULL if not supported. | 108 | /* return MMC cover switch state, can be NULL if not supported. |
91 | * | 109 | * |
diff --git a/arch/arm/plat-omap/include/mach/mux.h b/arch/arm/plat-omap/include/mach/mux.h index 98dfab651dfc..0f49d2d563d9 100644 --- a/arch/arm/plat-omap/include/mach/mux.h +++ b/arch/arm/plat-omap/include/mach/mux.h | |||
@@ -840,12 +840,14 @@ enum omap34xx_index { | |||
840 | */ | 840 | */ |
841 | AF26_34XX_GPIO0, | 841 | AF26_34XX_GPIO0, |
842 | AF22_34XX_GPIO9, | 842 | AF22_34XX_GPIO9, |
843 | AG9_34XX_GPIO23, | ||
843 | AH8_34XX_GPIO29, | 844 | AH8_34XX_GPIO29, |
844 | U8_34XX_GPIO54_OUT, | 845 | U8_34XX_GPIO54_OUT, |
845 | U8_34XX_GPIO54_DOWN, | 846 | U8_34XX_GPIO54_DOWN, |
846 | L8_34XX_GPIO63, | 847 | L8_34XX_GPIO63, |
847 | G25_34XX_GPIO86_OUT, | 848 | G25_34XX_GPIO86_OUT, |
848 | AG4_34XX_GPIO134_OUT, | 849 | AG4_34XX_GPIO134_OUT, |
850 | AF4_34XX_GPIO135_OUT, | ||
849 | AE4_34XX_GPIO136_OUT, | 851 | AE4_34XX_GPIO136_OUT, |
850 | AF6_34XX_GPIO140_UP, | 852 | AF6_34XX_GPIO140_UP, |
851 | AE6_34XX_GPIO141, | 853 | AE6_34XX_GPIO141, |
diff --git a/arch/arm/plat-omap/include/mach/omapfb.h b/arch/arm/plat-omap/include/mach/omapfb.h index 7b74d1255e0b..b226bdf45739 100644 --- a/arch/arm/plat-omap/include/mach/omapfb.h +++ b/arch/arm/plat-omap/include/mach/omapfb.h | |||
@@ -276,8 +276,8 @@ typedef int (*omapfb_notifier_callback_t)(struct notifier_block *, | |||
276 | void *fbi); | 276 | void *fbi); |
277 | 277 | ||
278 | struct omapfb_mem_region { | 278 | struct omapfb_mem_region { |
279 | dma_addr_t paddr; | 279 | u32 paddr; |
280 | void *vaddr; | 280 | void __iomem *vaddr; |
281 | unsigned long size; | 281 | unsigned long size; |
282 | u8 type; /* OMAPFB_PLANE_MEM_* */ | 282 | u8 type; /* OMAPFB_PLANE_MEM_* */ |
283 | unsigned alloc:1; /* allocated by the driver */ | 283 | unsigned alloc:1; /* allocated by the driver */ |
diff --git a/arch/arm/plat-omap/include/mach/powerdomain.h b/arch/arm/plat-omap/include/mach/powerdomain.h index 6271d8556a40..fa6461423bd0 100644 --- a/arch/arm/plat-omap/include/mach/powerdomain.h +++ b/arch/arm/plat-omap/include/mach/powerdomain.h | |||
@@ -135,6 +135,8 @@ struct powerdomain *pwrdm_lookup(const char *name); | |||
135 | 135 | ||
136 | int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user), | 136 | int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user), |
137 | void *user); | 137 | void *user); |
138 | int pwrdm_for_each_nolock(int (*fn)(struct powerdomain *pwrdm, void *user), | ||
139 | void *user); | ||
138 | 140 | ||
139 | int pwrdm_add_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm); | 141 | int pwrdm_add_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm); |
140 | int pwrdm_del_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm); | 142 | int pwrdm_del_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm); |
diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c index 4b6012707307..94584f167a82 100644 --- a/arch/arm/plat-omap/iommu.c +++ b/arch/arm/plat-omap/iommu.c | |||
@@ -664,7 +664,7 @@ static size_t iopgtable_clear_entry_core(struct iommu *obj, u32 da) | |||
664 | nent = 1; /* for the next L1 entry */ | 664 | nent = 1; /* for the next L1 entry */ |
665 | } else { | 665 | } else { |
666 | bytes = IOPGD_SIZE; | 666 | bytes = IOPGD_SIZE; |
667 | if (*iopgd & IOPGD_SUPER) { | 667 | if ((*iopgd & IOPGD_SUPER) == IOPGD_SUPER) { |
668 | nent *= 16; | 668 | nent *= 16; |
669 | /* rewind to the 1st entry */ | 669 | /* rewind to the 1st entry */ |
670 | iopgd = (u32 *)((u32)iopgd & IOSUPER_MASK); | 670 | iopgd = (u32 *)((u32)iopgd & IOSUPER_MASK); |
diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c index 6fc52fcbdc03..dc3fac3dd0ea 100644 --- a/arch/arm/plat-omap/iovmm.c +++ b/arch/arm/plat-omap/iovmm.c | |||
@@ -47,7 +47,7 @@ | |||
47 | * 'va': mpu virtual address | 47 | * 'va': mpu virtual address |
48 | * | 48 | * |
49 | * 'c': contiguous memory area | 49 | * 'c': contiguous memory area |
50 | * 'd': dicontiguous memory area | 50 | * 'd': discontiguous memory area |
51 | * 'a': anonymous memory allocation | 51 | * 'a': anonymous memory allocation |
52 | * '()': optional feature | 52 | * '()': optional feature |
53 | * | 53 | * |
@@ -199,7 +199,8 @@ static void *vmap_sg(const struct sg_table *sgt) | |||
199 | va += bytes; | 199 | va += bytes; |
200 | } | 200 | } |
201 | 201 | ||
202 | flush_cache_vmap(new->addr, new->addr + total); | 202 | flush_cache_vmap((unsigned long)new->addr, |
203 | (unsigned long)(new->addr + total)); | ||
203 | return new->addr; | 204 | return new->addr; |
204 | 205 | ||
205 | err_out: | 206 | err_out: |
@@ -362,8 +363,9 @@ void *da_to_va(struct iommu *obj, u32 da) | |||
362 | goto out; | 363 | goto out; |
363 | } | 364 | } |
364 | va = area->va; | 365 | va = area->va; |
365 | mutex_unlock(&obj->mmap_lock); | ||
366 | out: | 366 | out: |
367 | mutex_unlock(&obj->mmap_lock); | ||
368 | |||
367 | return va; | 369 | return va; |
368 | } | 370 | } |
369 | EXPORT_SYMBOL_GPL(da_to_va); | 371 | EXPORT_SYMBOL_GPL(da_to_va); |
@@ -390,14 +392,14 @@ static void sgtable_fill_vmalloc(struct sg_table *sgt, void *_va) | |||
390 | } | 392 | } |
391 | 393 | ||
392 | va_end = _va + PAGE_SIZE * i; | 394 | va_end = _va + PAGE_SIZE * i; |
393 | flush_cache_vmap(_va, va_end); | 395 | flush_cache_vmap((unsigned long)_va, (unsigned long)va_end); |
394 | } | 396 | } |
395 | 397 | ||
396 | static inline void sgtable_drain_vmalloc(struct sg_table *sgt) | 398 | static inline void sgtable_drain_vmalloc(struct sg_table *sgt) |
397 | { | 399 | { |
398 | /* | 400 | /* |
399 | * Actually this is not necessary at all, just exists for | 401 | * Actually this is not necessary at all, just exists for |
400 | * consistency of the code readibility. | 402 | * consistency of the code readability. |
401 | */ | 403 | */ |
402 | BUG_ON(!sgt); | 404 | BUG_ON(!sgt); |
403 | } | 405 | } |
@@ -433,7 +435,7 @@ static inline void sgtable_drain_kmalloc(struct sg_table *sgt) | |||
433 | { | 435 | { |
434 | /* | 436 | /* |
435 | * Actually this is not necessary at all, just exists for | 437 | * Actually this is not necessary at all, just exists for |
436 | * consistency of the code readibility | 438 | * consistency of the code readability |
437 | */ | 439 | */ |
438 | BUG_ON(!sgt); | 440 | BUG_ON(!sgt); |
439 | } | 441 | } |
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c index 88ac9768f1c1..e664b912d7bb 100644 --- a/arch/arm/plat-omap/mcbsp.c +++ b/arch/arm/plat-omap/mcbsp.c | |||
@@ -595,7 +595,7 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx) | |||
595 | rx &= 1; | 595 | rx &= 1; |
596 | if (cpu_is_omap2430() || cpu_is_omap34xx()) { | 596 | if (cpu_is_omap2430() || cpu_is_omap34xx()) { |
597 | w = OMAP_MCBSP_READ(io_base, RCCR); | 597 | w = OMAP_MCBSP_READ(io_base, RCCR); |
598 | w |= (tx ? RDISABLE : 0); | 598 | w |= (rx ? RDISABLE : 0); |
599 | OMAP_MCBSP_WRITE(io_base, RCCR, w); | 599 | OMAP_MCBSP_WRITE(io_base, RCCR, w); |
600 | } | 600 | } |
601 | w = OMAP_MCBSP_READ(io_base, SPCR1); | 601 | w = OMAP_MCBSP_READ(io_base, SPCR1); |
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c index 925f64711c37..75d1f26e5b17 100644 --- a/arch/arm/plat-omap/sram.c +++ b/arch/arm/plat-omap/sram.c | |||
@@ -270,7 +270,8 @@ void * omap_sram_push(void * start, unsigned long size) | |||
270 | omap_sram_ceil -= size; | 270 | omap_sram_ceil -= size; |
271 | omap_sram_ceil = ROUND_DOWN(omap_sram_ceil, sizeof(void *)); | 271 | omap_sram_ceil = ROUND_DOWN(omap_sram_ceil, sizeof(void *)); |
272 | memcpy((void *)omap_sram_ceil, start, size); | 272 | memcpy((void *)omap_sram_ceil, start, size); |
273 | flush_icache_range((unsigned long)start, (unsigned long)(start + size)); | 273 | flush_icache_range((unsigned long)omap_sram_ceil, |
274 | (unsigned long)(omap_sram_ceil + size)); | ||
274 | 275 | ||
275 | return (void *)omap_sram_ceil; | 276 | return (void *)omap_sram_ceil; |
276 | } | 277 | } |