aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-shmobile/setup-sh7372.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-shmobile/setup-sh7372.c')
-rw-r--r--arch/arm/mach-shmobile/setup-sh7372.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c
index 6fcf304d3cdf..4e818b7de781 100644
--- a/arch/arm/mach-shmobile/setup-sh7372.c
+++ b/arch/arm/mach-shmobile/setup-sh7372.c
@@ -31,10 +31,37 @@
31#include <linux/sh_intc.h> 31#include <linux/sh_intc.h>
32#include <linux/sh_timer.h> 32#include <linux/sh_timer.h>
33#include <linux/pm_domain.h> 33#include <linux/pm_domain.h>
34#include <linux/dma-mapping.h>
34#include <mach/hardware.h> 35#include <mach/hardware.h>
35#include <mach/sh7372.h> 36#include <mach/sh7372.h>
37#include <mach/common.h>
38#include <asm/mach/map.h>
36#include <asm/mach-types.h> 39#include <asm/mach-types.h>
37#include <asm/mach/arch.h> 40#include <asm/mach/arch.h>
41#include <asm/mach/time.h>
42
43static struct map_desc sh7372_io_desc[] __initdata = {
44 /* create a 1:1 entity map for 0xe6xxxxxx
45 * used by CPGA, INTC and PFC.
46 */
47 {
48 .virtual = 0xe6000000,
49 .pfn = __phys_to_pfn(0xe6000000),
50 .length = 256 << 20,
51 .type = MT_DEVICE_NONSHARED
52 },
53};
54
55void __init sh7372_map_io(void)
56{
57 iotable_init(sh7372_io_desc, ARRAY_SIZE(sh7372_io_desc));
58
59 /*
60 * DMA memory at 0xff200000 - 0xffdfffff. The default 2MB size isn't
61 * enough to allocate the frame buffer memory.
62 */
63 init_consistent_dma_size(12 << 20);
64}
38 65
39/* SCIFA0 */ 66/* SCIFA0 */
40static struct plat_sci_port scif0_platform_data = { 67static struct plat_sci_port scif0_platform_data = {
@@ -662,6 +689,7 @@ static struct sh_dmae_pdata usb_dma0_platform_data = {
662 .dmaor_is_32bit = 1, 689 .dmaor_is_32bit = 1,
663 .needs_tend_set = 1, 690 .needs_tend_set = 1,
664 .no_dmars = 1, 691 .no_dmars = 1,
692 .slave_only = 1,
665}; 693};
666 694
667static struct resource sh7372_usb_dmae0_resources[] = { 695static struct resource sh7372_usb_dmae0_resources[] = {
@@ -723,6 +751,7 @@ static struct sh_dmae_pdata usb_dma1_platform_data = {
723 .dmaor_is_32bit = 1, 751 .dmaor_is_32bit = 1,
724 .needs_tend_set = 1, 752 .needs_tend_set = 1,
725 .no_dmars = 1, 753 .no_dmars = 1,
754 .slave_only = 1,
726}; 755};
727 756
728static struct resource sh7372_usb_dmae1_resources[] = { 757static struct resource sh7372_usb_dmae1_resources[] = {
@@ -1041,10 +1070,24 @@ void __init sh7372_add_standard_devices(void)
1041 sh7372_add_device_to_domain(&sh7372_a4r, &veu2_device); 1070 sh7372_add_device_to_domain(&sh7372_a4r, &veu2_device);
1042 sh7372_add_device_to_domain(&sh7372_a4r, &veu3_device); 1071 sh7372_add_device_to_domain(&sh7372_a4r, &veu3_device);
1043 sh7372_add_device_to_domain(&sh7372_a4r, &jpu_device); 1072 sh7372_add_device_to_domain(&sh7372_a4r, &jpu_device);
1073 sh7372_add_device_to_domain(&sh7372_a4r, &tmu00_device);
1074 sh7372_add_device_to_domain(&sh7372_a4r, &tmu01_device);
1075}
1076
1077static void __init sh7372_earlytimer_init(void)
1078{
1079 sh7372_clock_init();
1080 shmobile_earlytimer_init();
1044} 1081}
1045 1082
1046void __init sh7372_add_early_devices(void) 1083void __init sh7372_add_early_devices(void)
1047{ 1084{
1048 early_platform_add_devices(sh7372_early_devices, 1085 early_platform_add_devices(sh7372_early_devices,
1049 ARRAY_SIZE(sh7372_early_devices)); 1086 ARRAY_SIZE(sh7372_early_devices));
1087
1088 /* setup early console here as well */
1089 shmobile_setup_console();
1090
1091 /* override timer setup with soc-specific code */
1092 shmobile_timer.init = sh7372_earlytimer_init;
1050} 1093}