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 | ||
