diff options
author | David S. Miller <davem@davemloft.net> | 2010-02-28 22:23:06 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-28 22:23:06 -0500 |
commit | 47871889c601d8199c51a4086f77eebd77c29b0b (patch) | |
tree | 40cdcac3bff0ee40cc33dcca61d0577cdf965f77 /arch/arm | |
parent | c16cc0b464b8876cfd57ce1c1dbcb6f9a6a0bce3 (diff) | |
parent | 30ff056c42c665b9ea535d8515890857ae382540 (diff) |
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Conflicts:
drivers/firmware/iscsi_ibft.c
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/include/asm/cacheflush.h | 13 | ||||
-rw-r--r-- | arch/arm/kernel/bios32.c | 8 | ||||
-rw-r--r-- | arch/arm/kernel/setup.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-davinci/board-dm365-evm.c | 71 | ||||
-rw-r--r-- | arch/arm/mach-davinci/dm355.c | 43 | ||||
-rw-r--r-- | arch/arm/mach-davinci/dm365.c | 102 | ||||
-rw-r--r-- | arch/arm/mach-davinci/dm644x.c | 21 | ||||
-rw-r--r-- | arch/arm/mach-davinci/include/mach/dm365.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-gemini/gpio.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-nomadik/cpu-8815.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-omap2/mux.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-pxa/include/mach/camera.h | 2 | ||||
-rw-r--r-- | arch/arm/mm/alignment.c | 3 | ||||
-rw-r--r-- | arch/arm/tools/mach-types | 46 |
14 files changed, 304 insertions, 32 deletions
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h index c77d2fa1f6e5..5fe4a2ad7fa3 100644 --- a/arch/arm/include/asm/cacheflush.h +++ b/arch/arm/include/asm/cacheflush.h | |||
@@ -42,7 +42,8 @@ | |||
42 | #endif | 42 | #endif |
43 | 43 | ||
44 | #if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \ | 44 | #if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \ |
45 | defined(CONFIG_CPU_ARM925T) || defined(CONFIG_CPU_ARM1020) | 45 | defined(CONFIG_CPU_ARM925T) || defined(CONFIG_CPU_ARM1020) || \ |
46 | defined(CONFIG_CPU_ARM1026) | ||
46 | # define MULTI_CACHE 1 | 47 | # define MULTI_CACHE 1 |
47 | #endif | 48 | #endif |
48 | 49 | ||
@@ -446,6 +447,16 @@ static inline void __flush_icache_all(void) | |||
446 | : "r" (0)); | 447 | : "r" (0)); |
447 | #endif | 448 | #endif |
448 | } | 449 | } |
450 | static inline void flush_kernel_vmap_range(void *addr, int size) | ||
451 | { | ||
452 | if ((cache_is_vivt() || cache_is_vipt_aliasing())) | ||
453 | __cpuc_flush_dcache_area(addr, (size_t)size); | ||
454 | } | ||
455 | static inline void invalidate_kernel_vmap_range(void *addr, int size) | ||
456 | { | ||
457 | if ((cache_is_vivt() || cache_is_vipt_aliasing())) | ||
458 | __cpuc_flush_dcache_area(addr, (size_t)size); | ||
459 | } | ||
449 | 460 | ||
450 | #define ARCH_HAS_FLUSH_ANON_PAGE | 461 | #define ARCH_HAS_FLUSH_ANON_PAGE |
451 | static inline void flush_anon_page(struct vm_area_struct *vma, | 462 | static inline void flush_anon_page(struct vm_area_struct *vma, |
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c index 809681900ec8..bd397e0b663e 100644 --- a/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c | |||
@@ -616,15 +616,17 @@ char * __init pcibios_setup(char *str) | |||
616 | * but we want to try to avoid allocating at 0x2900-0x2bff | 616 | * but we want to try to avoid allocating at 0x2900-0x2bff |
617 | * which might be mirrored at 0x0100-0x03ff.. | 617 | * which might be mirrored at 0x0100-0x03ff.. |
618 | */ | 618 | */ |
619 | void pcibios_align_resource(void *data, struct resource *res, | 619 | resource_size_t pcibios_align_resource(void *data, const struct resource *res, |
620 | resource_size_t size, resource_size_t align) | 620 | resource_size_t size, resource_size_t align) |
621 | { | 621 | { |
622 | resource_size_t start = res->start; | 622 | resource_size_t start = res->start; |
623 | 623 | ||
624 | if (res->flags & IORESOURCE_IO && start & 0x300) | 624 | if (res->flags & IORESOURCE_IO && start & 0x300) |
625 | start = (start + 0x3ff) & ~0x3ff; | 625 | start = (start + 0x3ff) & ~0x3ff; |
626 | 626 | ||
627 | res->start = (start + align - 1) & ~(align - 1); | 627 | start = (start + align - 1) & ~(align - 1); |
628 | |||
629 | return start; | ||
628 | } | 630 | } |
629 | 631 | ||
630 | /** | 632 | /** |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index c6c57b640b6b..621acad8ea43 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -102,6 +102,7 @@ struct cpu_cache_fns cpu_cache; | |||
102 | #endif | 102 | #endif |
103 | #ifdef CONFIG_OUTER_CACHE | 103 | #ifdef CONFIG_OUTER_CACHE |
104 | struct outer_cache_fns outer_cache; | 104 | struct outer_cache_fns outer_cache; |
105 | EXPORT_SYMBOL(outer_cache); | ||
105 | #endif | 106 | #endif |
106 | 107 | ||
107 | struct stack { | 108 | struct stack { |
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c index b476395d2cd4..38e9033d2e86 100644 --- a/arch/arm/mach-davinci/board-dm365-evm.c +++ b/arch/arm/mach-davinci/board-dm365-evm.c | |||
@@ -37,6 +37,8 @@ | |||
37 | #include <mach/nand.h> | 37 | #include <mach/nand.h> |
38 | #include <mach/keyscan.h> | 38 | #include <mach/keyscan.h> |
39 | 39 | ||
40 | #include <media/tvp514x.h> | ||
41 | |||
40 | static inline int have_imager(void) | 42 | static inline int have_imager(void) |
41 | { | 43 | { |
42 | /* REVISIT when it's supported, trigger via Kconfig */ | 44 | /* REVISIT when it's supported, trigger via Kconfig */ |
@@ -306,6 +308,73 @@ static void dm365evm_mmc_configure(void) | |||
306 | davinci_cfg_reg(DM365_SD1_DATA0); | 308 | davinci_cfg_reg(DM365_SD1_DATA0); |
307 | } | 309 | } |
308 | 310 | ||
311 | static struct tvp514x_platform_data tvp5146_pdata = { | ||
312 | .clk_polarity = 0, | ||
313 | .hs_polarity = 1, | ||
314 | .vs_polarity = 1 | ||
315 | }; | ||
316 | |||
317 | #define TVP514X_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL) | ||
318 | /* Inputs available at the TVP5146 */ | ||
319 | static struct v4l2_input tvp5146_inputs[] = { | ||
320 | { | ||
321 | .index = 0, | ||
322 | .name = "Composite", | ||
323 | .type = V4L2_INPUT_TYPE_CAMERA, | ||
324 | .std = TVP514X_STD_ALL, | ||
325 | }, | ||
326 | { | ||
327 | .index = 1, | ||
328 | .name = "S-Video", | ||
329 | .type = V4L2_INPUT_TYPE_CAMERA, | ||
330 | .std = TVP514X_STD_ALL, | ||
331 | }, | ||
332 | }; | ||
333 | |||
334 | /* | ||
335 | * this is the route info for connecting each input to decoder | ||
336 | * ouput that goes to vpfe. There is a one to one correspondence | ||
337 | * with tvp5146_inputs | ||
338 | */ | ||
339 | static struct vpfe_route tvp5146_routes[] = { | ||
340 | { | ||
341 | .input = INPUT_CVBS_VI2B, | ||
342 | .output = OUTPUT_10BIT_422_EMBEDDED_SYNC, | ||
343 | }, | ||
344 | { | ||
345 | .input = INPUT_SVIDEO_VI2C_VI1C, | ||
346 | .output = OUTPUT_10BIT_422_EMBEDDED_SYNC, | ||
347 | }, | ||
348 | }; | ||
349 | |||
350 | static struct vpfe_subdev_info vpfe_sub_devs[] = { | ||
351 | { | ||
352 | .name = "tvp5146", | ||
353 | .grp_id = 0, | ||
354 | .num_inputs = ARRAY_SIZE(tvp5146_inputs), | ||
355 | .inputs = tvp5146_inputs, | ||
356 | .routes = tvp5146_routes, | ||
357 | .can_route = 1, | ||
358 | .ccdc_if_params = { | ||
359 | .if_type = VPFE_BT656, | ||
360 | .hdpol = VPFE_PINPOL_POSITIVE, | ||
361 | .vdpol = VPFE_PINPOL_POSITIVE, | ||
362 | }, | ||
363 | .board_info = { | ||
364 | I2C_BOARD_INFO("tvp5146", 0x5d), | ||
365 | .platform_data = &tvp5146_pdata, | ||
366 | }, | ||
367 | }, | ||
368 | }; | ||
369 | |||
370 | static struct vpfe_config vpfe_cfg = { | ||
371 | .num_subdevs = ARRAY_SIZE(vpfe_sub_devs), | ||
372 | .sub_devs = vpfe_sub_devs, | ||
373 | .i2c_adapter_id = 1, | ||
374 | .card_name = "DM365 EVM", | ||
375 | .ccdc = "ISIF", | ||
376 | }; | ||
377 | |||
309 | static void __init evm_init_i2c(void) | 378 | static void __init evm_init_i2c(void) |
310 | { | 379 | { |
311 | davinci_init_i2c(&i2c_pdata); | 380 | davinci_init_i2c(&i2c_pdata); |
@@ -497,6 +566,8 @@ static struct davinci_uart_config uart_config __initdata = { | |||
497 | 566 | ||
498 | static void __init dm365_evm_map_io(void) | 567 | static void __init dm365_evm_map_io(void) |
499 | { | 568 | { |
569 | /* setup input configuration for VPFE input devices */ | ||
570 | dm365_set_vpfe_config(&vpfe_cfg); | ||
500 | dm365_init(); | 571 | dm365_init(); |
501 | } | 572 | } |
502 | 573 | ||
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c index dedf4d4f3a27..d84e85414d20 100644 --- a/arch/arm/mach-davinci/dm355.c +++ b/arch/arm/mach-davinci/dm355.c | |||
@@ -125,7 +125,6 @@ static struct clk vpss_slave_clk = { | |||
125 | .lpsc = DAVINCI_LPSC_VPSSSLV, | 125 | .lpsc = DAVINCI_LPSC_VPSSSLV, |
126 | }; | 126 | }; |
127 | 127 | ||
128 | |||
129 | static struct clk clkout1_clk = { | 128 | static struct clk clkout1_clk = { |
130 | .name = "clkout1", | 129 | .name = "clkout1", |
131 | .parent = &pll1_aux_clk, | 130 | .parent = &pll1_aux_clk, |
@@ -665,6 +664,17 @@ static struct platform_device dm355_asp1_device = { | |||
665 | .resource = dm355_asp1_resources, | 664 | .resource = dm355_asp1_resources, |
666 | }; | 665 | }; |
667 | 666 | ||
667 | static void dm355_ccdc_setup_pinmux(void) | ||
668 | { | ||
669 | davinci_cfg_reg(DM355_VIN_PCLK); | ||
670 | davinci_cfg_reg(DM355_VIN_CAM_WEN); | ||
671 | davinci_cfg_reg(DM355_VIN_CAM_VD); | ||
672 | davinci_cfg_reg(DM355_VIN_CAM_HD); | ||
673 | davinci_cfg_reg(DM355_VIN_YIN_EN); | ||
674 | davinci_cfg_reg(DM355_VIN_CINL_EN); | ||
675 | davinci_cfg_reg(DM355_VIN_CINH_EN); | ||
676 | } | ||
677 | |||
668 | static struct resource dm355_vpss_resources[] = { | 678 | static struct resource dm355_vpss_resources[] = { |
669 | { | 679 | { |
670 | /* VPSS BL Base address */ | 680 | /* VPSS BL Base address */ |
@@ -701,6 +711,10 @@ static struct resource vpfe_resources[] = { | |||
701 | .end = IRQ_VDINT1, | 711 | .end = IRQ_VDINT1, |
702 | .flags = IORESOURCE_IRQ, | 712 | .flags = IORESOURCE_IRQ, |
703 | }, | 713 | }, |
714 | }; | ||
715 | |||
716 | static u64 vpfe_capture_dma_mask = DMA_BIT_MASK(32); | ||
717 | static struct resource dm355_ccdc_resource[] = { | ||
704 | /* CCDC Base address */ | 718 | /* CCDC Base address */ |
705 | { | 719 | { |
706 | .flags = IORESOURCE_MEM, | 720 | .flags = IORESOURCE_MEM, |
@@ -708,8 +722,18 @@ static struct resource vpfe_resources[] = { | |||
708 | .end = 0x01c70600 + 0x1ff, | 722 | .end = 0x01c70600 + 0x1ff, |
709 | }, | 723 | }, |
710 | }; | 724 | }; |
725 | static struct platform_device dm355_ccdc_dev = { | ||
726 | .name = "dm355_ccdc", | ||
727 | .id = -1, | ||
728 | .num_resources = ARRAY_SIZE(dm355_ccdc_resource), | ||
729 | .resource = dm355_ccdc_resource, | ||
730 | .dev = { | ||
731 | .dma_mask = &vpfe_capture_dma_mask, | ||
732 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
733 | .platform_data = dm355_ccdc_setup_pinmux, | ||
734 | }, | ||
735 | }; | ||
711 | 736 | ||
712 | static u64 vpfe_capture_dma_mask = DMA_BIT_MASK(32); | ||
713 | static struct platform_device vpfe_capture_dev = { | 737 | static struct platform_device vpfe_capture_dev = { |
714 | .name = CAPTURE_DRV_NAME, | 738 | .name = CAPTURE_DRV_NAME, |
715 | .id = -1, | 739 | .id = -1, |
@@ -857,20 +881,13 @@ static int __init dm355_init_devices(void) | |||
857 | if (!cpu_is_davinci_dm355()) | 881 | if (!cpu_is_davinci_dm355()) |
858 | return 0; | 882 | return 0; |
859 | 883 | ||
884 | /* Add ccdc clock aliases */ | ||
885 | clk_add_alias("master", dm355_ccdc_dev.name, "vpss_master", NULL); | ||
886 | clk_add_alias("slave", dm355_ccdc_dev.name, "vpss_master", NULL); | ||
860 | davinci_cfg_reg(DM355_INT_EDMA_CC); | 887 | davinci_cfg_reg(DM355_INT_EDMA_CC); |
861 | platform_device_register(&dm355_edma_device); | 888 | platform_device_register(&dm355_edma_device); |
862 | platform_device_register(&dm355_vpss_device); | 889 | platform_device_register(&dm355_vpss_device); |
863 | /* | 890 | platform_device_register(&dm355_ccdc_dev); |
864 | * setup Mux configuration for vpfe input and register | ||
865 | * vpfe capture platform device | ||
866 | */ | ||
867 | davinci_cfg_reg(DM355_VIN_PCLK); | ||
868 | davinci_cfg_reg(DM355_VIN_CAM_WEN); | ||
869 | davinci_cfg_reg(DM355_VIN_CAM_VD); | ||
870 | davinci_cfg_reg(DM355_VIN_CAM_HD); | ||
871 | davinci_cfg_reg(DM355_VIN_YIN_EN); | ||
872 | davinci_cfg_reg(DM355_VIN_CINL_EN); | ||
873 | davinci_cfg_reg(DM355_VIN_CINH_EN); | ||
874 | platform_device_register(&vpfe_capture_dev); | 891 | platform_device_register(&vpfe_capture_dev); |
875 | 892 | ||
876 | return 0; | 893 | return 0; |
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c index f53735cb922e..ce9da43a628b 100644 --- a/arch/arm/mach-davinci/dm365.c +++ b/arch/arm/mach-davinci/dm365.c | |||
@@ -1008,6 +1008,97 @@ void __init dm365_init(void) | |||
1008 | davinci_common_init(&davinci_soc_info_dm365); | 1008 | davinci_common_init(&davinci_soc_info_dm365); |
1009 | } | 1009 | } |
1010 | 1010 | ||
1011 | static struct resource dm365_vpss_resources[] = { | ||
1012 | { | ||
1013 | /* VPSS ISP5 Base address */ | ||
1014 | .name = "isp5", | ||
1015 | .start = 0x01c70000, | ||
1016 | .end = 0x01c70000 + 0xff, | ||
1017 | .flags = IORESOURCE_MEM, | ||
1018 | }, | ||
1019 | { | ||
1020 | /* VPSS CLK Base address */ | ||
1021 | .name = "vpss", | ||
1022 | .start = 0x01c70200, | ||
1023 | .end = 0x01c70200 + 0xff, | ||
1024 | .flags = IORESOURCE_MEM, | ||
1025 | }, | ||
1026 | }; | ||
1027 | |||
1028 | static struct platform_device dm365_vpss_device = { | ||
1029 | .name = "vpss", | ||
1030 | .id = -1, | ||
1031 | .dev.platform_data = "dm365_vpss", | ||
1032 | .num_resources = ARRAY_SIZE(dm365_vpss_resources), | ||
1033 | .resource = dm365_vpss_resources, | ||
1034 | }; | ||
1035 | |||
1036 | static struct resource vpfe_resources[] = { | ||
1037 | { | ||
1038 | .start = IRQ_VDINT0, | ||
1039 | .end = IRQ_VDINT0, | ||
1040 | .flags = IORESOURCE_IRQ, | ||
1041 | }, | ||
1042 | { | ||
1043 | .start = IRQ_VDINT1, | ||
1044 | .end = IRQ_VDINT1, | ||
1045 | .flags = IORESOURCE_IRQ, | ||
1046 | }, | ||
1047 | }; | ||
1048 | |||
1049 | static u64 vpfe_capture_dma_mask = DMA_BIT_MASK(32); | ||
1050 | static struct platform_device vpfe_capture_dev = { | ||
1051 | .name = CAPTURE_DRV_NAME, | ||
1052 | .id = -1, | ||
1053 | .num_resources = ARRAY_SIZE(vpfe_resources), | ||
1054 | .resource = vpfe_resources, | ||
1055 | .dev = { | ||
1056 | .dma_mask = &vpfe_capture_dma_mask, | ||
1057 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
1058 | }, | ||
1059 | }; | ||
1060 | |||
1061 | static void dm365_isif_setup_pinmux(void) | ||
1062 | { | ||
1063 | davinci_cfg_reg(DM365_VIN_CAM_WEN); | ||
1064 | davinci_cfg_reg(DM365_VIN_CAM_VD); | ||
1065 | davinci_cfg_reg(DM365_VIN_CAM_HD); | ||
1066 | davinci_cfg_reg(DM365_VIN_YIN4_7_EN); | ||
1067 | davinci_cfg_reg(DM365_VIN_YIN0_3_EN); | ||
1068 | } | ||
1069 | |||
1070 | static struct resource isif_resource[] = { | ||
1071 | /* ISIF Base address */ | ||
1072 | { | ||
1073 | .start = 0x01c71000, | ||
1074 | .end = 0x01c71000 + 0x1ff, | ||
1075 | .flags = IORESOURCE_MEM, | ||
1076 | }, | ||
1077 | /* ISIF Linearization table 0 */ | ||
1078 | { | ||
1079 | .start = 0x1C7C000, | ||
1080 | .end = 0x1C7C000 + 0x2ff, | ||
1081 | .flags = IORESOURCE_MEM, | ||
1082 | }, | ||
1083 | /* ISIF Linearization table 1 */ | ||
1084 | { | ||
1085 | .start = 0x1C7C400, | ||
1086 | .end = 0x1C7C400 + 0x2ff, | ||
1087 | .flags = IORESOURCE_MEM, | ||
1088 | }, | ||
1089 | }; | ||
1090 | static struct platform_device dm365_isif_dev = { | ||
1091 | .name = "isif", | ||
1092 | .id = -1, | ||
1093 | .num_resources = ARRAY_SIZE(isif_resource), | ||
1094 | .resource = isif_resource, | ||
1095 | .dev = { | ||
1096 | .dma_mask = &vpfe_capture_dma_mask, | ||
1097 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
1098 | .platform_data = dm365_isif_setup_pinmux, | ||
1099 | }, | ||
1100 | }; | ||
1101 | |||
1011 | static int __init dm365_init_devices(void) | 1102 | static int __init dm365_init_devices(void) |
1012 | { | 1103 | { |
1013 | if (!cpu_is_davinci_dm365()) | 1104 | if (!cpu_is_davinci_dm365()) |
@@ -1016,7 +1107,16 @@ static int __init dm365_init_devices(void) | |||
1016 | davinci_cfg_reg(DM365_INT_EDMA_CC); | 1107 | davinci_cfg_reg(DM365_INT_EDMA_CC); |
1017 | platform_device_register(&dm365_edma_device); | 1108 | platform_device_register(&dm365_edma_device); |
1018 | platform_device_register(&dm365_emac_device); | 1109 | platform_device_register(&dm365_emac_device); |
1019 | 1110 | /* Add isif clock alias */ | |
1111 | clk_add_alias("master", dm365_isif_dev.name, "vpss_master", NULL); | ||
1112 | platform_device_register(&dm365_vpss_device); | ||
1113 | platform_device_register(&dm365_isif_dev); | ||
1114 | platform_device_register(&vpfe_capture_dev); | ||
1020 | return 0; | 1115 | return 0; |
1021 | } | 1116 | } |
1022 | postcore_initcall(dm365_init_devices); | 1117 | postcore_initcall(dm365_init_devices); |
1118 | |||
1119 | void dm365_set_vpfe_config(struct vpfe_config *cfg) | ||
1120 | { | ||
1121 | vpfe_capture_dev.dev.platform_data = cfg; | ||
1122 | } | ||
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c index 2cd008156dea..92aeb5600680 100644 --- a/arch/arm/mach-davinci/dm644x.c +++ b/arch/arm/mach-davinci/dm644x.c | |||
@@ -612,6 +612,11 @@ static struct resource vpfe_resources[] = { | |||
612 | .end = IRQ_VDINT1, | 612 | .end = IRQ_VDINT1, |
613 | .flags = IORESOURCE_IRQ, | 613 | .flags = IORESOURCE_IRQ, |
614 | }, | 614 | }, |
615 | }; | ||
616 | |||
617 | static u64 vpfe_capture_dma_mask = DMA_BIT_MASK(32); | ||
618 | static struct resource dm644x_ccdc_resource[] = { | ||
619 | /* CCDC Base address */ | ||
615 | { | 620 | { |
616 | .start = 0x01c70400, | 621 | .start = 0x01c70400, |
617 | .end = 0x01c70400 + 0xff, | 622 | .end = 0x01c70400 + 0xff, |
@@ -619,7 +624,17 @@ static struct resource vpfe_resources[] = { | |||
619 | }, | 624 | }, |
620 | }; | 625 | }; |
621 | 626 | ||
622 | static u64 vpfe_capture_dma_mask = DMA_BIT_MASK(32); | 627 | static struct platform_device dm644x_ccdc_dev = { |
628 | .name = "dm644x_ccdc", | ||
629 | .id = -1, | ||
630 | .num_resources = ARRAY_SIZE(dm644x_ccdc_resource), | ||
631 | .resource = dm644x_ccdc_resource, | ||
632 | .dev = { | ||
633 | .dma_mask = &vpfe_capture_dma_mask, | ||
634 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
635 | }, | ||
636 | }; | ||
637 | |||
623 | static struct platform_device vpfe_capture_dev = { | 638 | static struct platform_device vpfe_capture_dev = { |
624 | .name = CAPTURE_DRV_NAME, | 639 | .name = CAPTURE_DRV_NAME, |
625 | .id = -1, | 640 | .id = -1, |
@@ -769,9 +784,13 @@ static int __init dm644x_init_devices(void) | |||
769 | if (!cpu_is_davinci_dm644x()) | 784 | if (!cpu_is_davinci_dm644x()) |
770 | return 0; | 785 | return 0; |
771 | 786 | ||
787 | /* Add ccdc clock aliases */ | ||
788 | clk_add_alias("master", dm644x_ccdc_dev.name, "vpss_master", NULL); | ||
789 | clk_add_alias("slave", dm644x_ccdc_dev.name, "vpss_slave", NULL); | ||
772 | platform_device_register(&dm644x_edma_device); | 790 | platform_device_register(&dm644x_edma_device); |
773 | platform_device_register(&dm644x_emac_device); | 791 | platform_device_register(&dm644x_emac_device); |
774 | platform_device_register(&dm644x_vpss_device); | 792 | platform_device_register(&dm644x_vpss_device); |
793 | platform_device_register(&dm644x_ccdc_dev); | ||
775 | platform_device_register(&vpfe_capture_dev); | 794 | platform_device_register(&vpfe_capture_dev); |
776 | 795 | ||
777 | return 0; | 796 | return 0; |
diff --git a/arch/arm/mach-davinci/include/mach/dm365.h b/arch/arm/mach-davinci/include/mach/dm365.h index f1710a30e7ba..9fc5a64a5364 100644 --- a/arch/arm/mach-davinci/include/mach/dm365.h +++ b/arch/arm/mach-davinci/include/mach/dm365.h | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <mach/emac.h> | 18 | #include <mach/emac.h> |
19 | #include <mach/asp.h> | 19 | #include <mach/asp.h> |
20 | #include <mach/keyscan.h> | 20 | #include <mach/keyscan.h> |
21 | #include <media/davinci/vpfe_capture.h> | ||
21 | 22 | ||
22 | #define DM365_EMAC_BASE (0x01D07000) | 23 | #define DM365_EMAC_BASE (0x01D07000) |
23 | #define DM365_EMAC_CNTRL_OFFSET (0x0000) | 24 | #define DM365_EMAC_CNTRL_OFFSET (0x0000) |
@@ -36,4 +37,5 @@ void __init dm365_init_asp(struct snd_platform_data *pdata); | |||
36 | void __init dm365_init_ks(struct davinci_ks_platform_data *pdata); | 37 | void __init dm365_init_ks(struct davinci_ks_platform_data *pdata); |
37 | void __init dm365_init_rtc(void); | 38 | void __init dm365_init_rtc(void); |
38 | 39 | ||
40 | void dm365_set_vpfe_config(struct vpfe_config *cfg); | ||
39 | #endif /* __ASM_ARCH_DM365_H */ | 41 | #endif /* __ASM_ARCH_DM365_H */ |
diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c index e7263854bc7b..fe3bd5ac8b10 100644 --- a/arch/arm/mach-gemini/gpio.c +++ b/arch/arm/mach-gemini/gpio.c | |||
@@ -86,7 +86,7 @@ static int gpio_set_irq_type(unsigned int irq, unsigned int type) | |||
86 | unsigned int reg_both, reg_level, reg_type; | 86 | unsigned int reg_both, reg_level, reg_type; |
87 | 87 | ||
88 | reg_type = __raw_readl(base + GPIO_INT_TYPE); | 88 | reg_type = __raw_readl(base + GPIO_INT_TYPE); |
89 | reg_level = __raw_readl(base + GPIO_INT_BOTH_EDGE); | 89 | reg_level = __raw_readl(base + GPIO_INT_LEVEL); |
90 | reg_both = __raw_readl(base + GPIO_INT_BOTH_EDGE); | 90 | reg_both = __raw_readl(base + GPIO_INT_BOTH_EDGE); |
91 | 91 | ||
92 | switch (type) { | 92 | switch (type) { |
@@ -117,7 +117,7 @@ static int gpio_set_irq_type(unsigned int irq, unsigned int type) | |||
117 | } | 117 | } |
118 | 118 | ||
119 | __raw_writel(reg_type, base + GPIO_INT_TYPE); | 119 | __raw_writel(reg_type, base + GPIO_INT_TYPE); |
120 | __raw_writel(reg_level, base + GPIO_INT_BOTH_EDGE); | 120 | __raw_writel(reg_level, base + GPIO_INT_LEVEL); |
121 | __raw_writel(reg_both, base + GPIO_INT_BOTH_EDGE); | 121 | __raw_writel(reg_both, base + GPIO_INT_BOTH_EDGE); |
122 | 122 | ||
123 | gpio_ack_irq(irq); | 123 | gpio_ack_irq(irq); |
diff --git a/arch/arm/mach-nomadik/cpu-8815.c b/arch/arm/mach-nomadik/cpu-8815.c index f93c59634191..9bf33b30a025 100644 --- a/arch/arm/mach-nomadik/cpu-8815.c +++ b/arch/arm/mach-nomadik/cpu-8815.c | |||
@@ -86,11 +86,19 @@ static struct amba_device cpu8815_amba_gpio[] = { | |||
86 | }, | 86 | }, |
87 | }; | 87 | }; |
88 | 88 | ||
89 | static struct amba_device cpu8815_amba_rng = { | ||
90 | .dev = { | ||
91 | .init_name = "rng", | ||
92 | }, | ||
93 | __MEM_4K_RESOURCE(NOMADIK_RNG_BASE), | ||
94 | }; | ||
95 | |||
89 | static struct amba_device *amba_devs[] __initdata = { | 96 | static struct amba_device *amba_devs[] __initdata = { |
90 | cpu8815_amba_gpio + 0, | 97 | cpu8815_amba_gpio + 0, |
91 | cpu8815_amba_gpio + 1, | 98 | cpu8815_amba_gpio + 1, |
92 | cpu8815_amba_gpio + 2, | 99 | cpu8815_amba_gpio + 2, |
93 | cpu8815_amba_gpio + 3, | 100 | cpu8815_amba_gpio + 3, |
101 | &cpu8815_amba_rng | ||
94 | }; | 102 | }; |
95 | 103 | ||
96 | static int __init cpu8815_init(void) | 104 | static int __init cpu8815_init(void) |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 5fedc50c58e4..5fef73f4743d 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -961,16 +961,14 @@ static void __init omap_mux_init_list(struct omap_mux *superset) | |||
961 | while (superset->reg_offset != OMAP_MUX_TERMINATOR) { | 961 | while (superset->reg_offset != OMAP_MUX_TERMINATOR) { |
962 | struct omap_mux *entry; | 962 | struct omap_mux *entry; |
963 | 963 | ||
964 | #ifndef CONFIG_OMAP_MUX | 964 | #ifdef CONFIG_OMAP_MUX |
965 | /* Skip pins that are not muxed as GPIO by bootloader */ | 965 | if (!superset->muxnames || !superset->muxnames[0]) { |
966 | if (!OMAP_MODE_GPIO(omap_mux_read(superset->reg_offset))) { | ||
967 | superset++; | 966 | superset++; |
968 | continue; | 967 | continue; |
969 | } | 968 | } |
970 | #endif | 969 | #else |
971 | 970 | /* Skip pins that are not muxed as GPIO by bootloader */ | |
972 | #if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) | 971 | if (!OMAP_MODE_GPIO(omap_mux_read(superset->reg_offset))) { |
973 | if (!superset->muxnames || !superset->muxnames[0]) { | ||
974 | superset++; | 972 | superset++; |
975 | continue; | 973 | continue; |
976 | } | 974 | } |
diff --git a/arch/arm/mach-pxa/include/mach/camera.h b/arch/arm/mach-pxa/include/mach/camera.h index 31abe6d514b8..6709b1cd7c77 100644 --- a/arch/arm/mach-pxa/include/mach/camera.h +++ b/arch/arm/mach-pxa/include/mach/camera.h | |||
@@ -35,8 +35,6 @@ | |||
35 | #define PXA_CAMERA_VSP 0x400 | 35 | #define PXA_CAMERA_VSP 0x400 |
36 | 36 | ||
37 | struct pxacamera_platform_data { | 37 | struct pxacamera_platform_data { |
38 | int (*init)(struct device *); | ||
39 | |||
40 | unsigned long flags; | 38 | unsigned long flags; |
41 | unsigned long mclk_10khz; | 39 | unsigned long mclk_10khz; |
42 | }; | 40 | }; |
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index b270d6228fe2..62820eda84d9 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
@@ -11,6 +11,7 @@ | |||
11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | #include <linux/moduleparam.h> | ||
14 | #include <linux/compiler.h> | 15 | #include <linux/compiler.h> |
15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
16 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
@@ -77,6 +78,8 @@ static unsigned long ai_dword; | |||
77 | static unsigned long ai_multi; | 78 | static unsigned long ai_multi; |
78 | static int ai_usermode; | 79 | static int ai_usermode; |
79 | 80 | ||
81 | core_param(alignment, ai_usermode, int, 0600); | ||
82 | |||
80 | #define UM_WARN (1 << 0) | 83 | #define UM_WARN (1 << 0) |
81 | #define UM_FIXUP (1 << 1) | 84 | #define UM_FIXUP (1 << 1) |
82 | #define UM_SIGNAL (1 << 2) | 85 | #define UM_SIGNAL (1 << 2) |
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index 5a79fc6ee818..31c2f4c30a95 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
@@ -12,7 +12,7 @@ | |||
12 | # | 12 | # |
13 | # http://www.arm.linux.org.uk/developer/machines/?action=new | 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new |
14 | # | 14 | # |
15 | # Last update: Thu Jan 28 22:15:54 2010 | 15 | # Last update: Sat Feb 20 14:16:15 2010 |
16 | # | 16 | # |
17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number | 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number |
18 | # | 18 | # |
@@ -2257,7 +2257,7 @@ oratisalog MACH_ORATISALOG ORATISALOG 2268 | |||
2257 | oratismadi MACH_ORATISMADI ORATISMADI 2269 | 2257 | oratismadi MACH_ORATISMADI ORATISMADI 2269 |
2258 | oratisot16 MACH_ORATISOT16 ORATISOT16 2270 | 2258 | oratisot16 MACH_ORATISOT16 ORATISOT16 2270 |
2259 | oratisdesk MACH_ORATISDESK ORATISDESK 2271 | 2259 | oratisdesk MACH_ORATISDESK ORATISDESK 2271 |
2260 | v2_ca9 MACH_V2P_CA9 V2P_CA9 2272 | 2260 | vexpress MACH_VEXPRESS VEXPRESS 2272 |
2261 | sintexo MACH_SINTEXO SINTEXO 2273 | 2261 | sintexo MACH_SINTEXO SINTEXO 2273 |
2262 | cm3389 MACH_CM3389 CM3389 2274 | 2262 | cm3389 MACH_CM3389 CM3389 2274 |
2263 | omap3_cio MACH_OMAP3_CIO OMAP3_CIO 2275 | 2263 | omap3_cio MACH_OMAP3_CIO OMAP3_CIO 2275 |
@@ -2636,3 +2636,45 @@ hw90240 MACH_HW90240 HW90240 2648 | |||
2636 | dm365_leopard MACH_DM365_LEOPARD DM365_LEOPARD 2649 | 2636 | dm365_leopard MACH_DM365_LEOPARD DM365_LEOPARD 2649 |
2637 | mityomapl138 MACH_MITYOMAPL138 MITYOMAPL138 2650 | 2637 | mityomapl138 MACH_MITYOMAPL138 MITYOMAPL138 2650 |
2638 | scat110 MACH_SCAT110 SCAT110 2651 | 2638 | scat110 MACH_SCAT110 SCAT110 2651 |
2639 | acer_a1 MACH_ACER_A1 ACER_A1 2652 | ||
2640 | cmcontrol MACH_CMCONTROL CMCONTROL 2653 | ||
2641 | pelco_lamar MACH_PELCO_LAMAR PELCO_LAMAR 2654 | ||
2642 | rfp43 MACH_RFP43 RFP43 2655 | ||
2643 | sk86r0301 MACH_SK86R0301 SK86R0301 2656 | ||
2644 | ctpxa MACH_CTPXA CTPXA 2657 | ||
2645 | epb_arm9_a MACH_EPB_ARM9_A EPB_ARM9_A 2658 | ||
2646 | guruplug MACH_GURUPLUG GURUPLUG 2659 | ||
2647 | spear310 MACH_SPEAR310 SPEAR310 2660 | ||
2648 | spear320 MACH_SPEAR320 SPEAR320 2661 | ||
2649 | robotx MACH_ROBOTX ROBOTX 2662 | ||
2650 | lsxhl MACH_LSXHL LSXHL 2663 | ||
2651 | smartlite MACH_SMARTLITE SMARTLITE 2664 | ||
2652 | cws2 MACH_CWS2 CWS2 2665 | ||
2653 | m619 MACH_M619 M619 2666 | ||
2654 | smartview MACH_SMARTVIEW SMARTVIEW 2667 | ||
2655 | lsa_salsa MACH_LSA_SALSA LSA_SALSA 2668 | ||
2656 | kizbox MACH_KIZBOX KIZBOX 2669 | ||
2657 | htccharmer MACH_HTCCHARMER HTCCHARMER 2670 | ||
2658 | guf_neso_lt MACH_GUF_NESO_LT GUF_NESO_LT 2671 | ||
2659 | pm9g45 MACH_PM9G45 PM9G45 2672 | ||
2660 | htcpanther MACH_HTCPANTHER HTCPANTHER 2673 | ||
2661 | htcpanther_cdma MACH_HTCPANTHER_CDMA HTCPANTHER_CDMA 2674 | ||
2662 | reb01 MACH_REB01 REB01 2675 | ||
2663 | aquila MACH_AQUILA AQUILA 2676 | ||
2664 | spark_sls_hw2 MACH_SPARK_SLS_HW2 SPARK_SLS_HW2 2677 | ||
2665 | sheeva_esata MACH_ESATA_SHEEVAPLUG ESATA_SHEEVAPLUG 2678 | ||
2666 | surf7x30 MACH_SURF7X30 SURF7X30 2679 | ||
2667 | micro2440 MACH_MICRO2440 MICRO2440 2680 | ||
2668 | am2440 MACH_AM2440 AM2440 2681 | ||
2669 | tq2440 MACH_TQ2440 TQ2440 2682 | ||
2670 | lpc2478oem MACH_LPC2478OEM LPC2478OEM 2683 | ||
2671 | ak880x MACH_AK880X AK880X 2684 | ||
2672 | cobra3530 MACH_COBRA3530 COBRA3530 2685 | ||
2673 | pmppb MACH_PMPPB PMPPB 2686 | ||
2674 | u6715 MACH_U6715 U6715 2687 | ||
2675 | axar1500_sender MACH_AXAR1500_SENDER AXAR1500_SENDER 2688 | ||
2676 | g30_dvb MACH_G30_DVB G30_DVB 2689 | ||
2677 | vc088x MACH_VC088X VC088X 2690 | ||
2678 | mioa702 MACH_MIOA702 MIOA702 2691 | ||
2679 | hpmin MACH_HPMIN HPMIN 2692 | ||
2680 | ak880xak MACH_AK880XAK AK880XAK 2693 | ||