aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-davinci
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-04-30 20:35:48 -0400
committerKevin Hilman <khilman@deeprootsystems.com>2009-05-28 18:18:12 -0400
commit0d04eb47054f685b23033ed6ceadfb20db77c5b3 (patch)
tree3a3de44b01ac71a80f970ddf80f8d1ca28c3e2f6 /arch/arm/mach-davinci
parentb79dbdefd2be0980c58b5e36fdc23eb14a7caab4 (diff)
davinci: soc-specific SRAM setup
Package on-chip SRAM. It's always accessible from the ARM, so set up a standardized virtual address mapping into a 128 KiB area that's reserved for platform use. In some cases (dm6467) the physical addresses used for EDMA are not the same as the ones used by the ARM ... so record that info separately in the SOC data, for chips (unlike the OMAP-L137) where SRAM may be used with EDMA. Other blocks of SRAM, such as the ETB buffer or DSP L1/L2 RAM, may be unused/available on some system. They are ignored here. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-davinci')
-rw-r--r--arch/arm/mach-davinci/dm355.c9
-rw-r--r--arch/arm/mach-davinci/dm644x.c9
-rw-r--r--arch/arm/mach-davinci/dm646x.c9
-rw-r--r--arch/arm/mach-davinci/include/mach/common.h6
4 files changed, 33 insertions, 0 deletions
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
index 893d5ba21d5..baaaf328de2 100644
--- a/arch/arm/mach-davinci/dm355.c
+++ b/arch/arm/mach-davinci/dm355.c
@@ -613,6 +613,13 @@ static struct map_desc dm355_io_desc[] = {
613 .length = IO_SIZE, 613 .length = IO_SIZE,
614 .type = MT_DEVICE 614 .type = MT_DEVICE
615 }, 615 },
616 {
617 .virtual = SRAM_VIRT,
618 .pfn = __phys_to_pfn(0x00010000),
619 .length = SZ_32K,
620 /* MT_MEMORY_NONCACHED requires supersection alignment */
621 .type = MT_DEVICE,
622 },
616}; 623};
617 624
618/* Contents of JTAG ID register used to identify exact cpu type */ 625/* Contents of JTAG ID register used to identify exact cpu type */
@@ -702,6 +709,8 @@ static struct davinci_soc_info davinci_soc_info_dm355 = {
702 .gpio_num = 104, 709 .gpio_num = 104,
703 .gpio_irq = IRQ_DM355_GPIOBNK0, 710 .gpio_irq = IRQ_DM355_GPIOBNK0,
704 .serial_dev = &dm355_serial_device, 711 .serial_dev = &dm355_serial_device,
712 .sram_dma = 0x00010000,
713 .sram_len = SZ_32K,
705}; 714};
706 715
707void __init dm355_init(void) 716void __init dm355_init(void)
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index 4ab5f07ead0..fb5449b3c97 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -539,6 +539,13 @@ static struct map_desc dm644x_io_desc[] = {
539 .length = IO_SIZE, 539 .length = IO_SIZE,
540 .type = MT_DEVICE 540 .type = MT_DEVICE
541 }, 541 },
542 {
543 .virtual = SRAM_VIRT,
544 .pfn = __phys_to_pfn(0x00008000),
545 .length = SZ_16K,
546 /* MT_MEMORY_NONCACHED requires supersection alignment */
547 .type = MT_DEVICE,
548 },
542}; 549};
543 550
544/* Contents of JTAG ID register used to identify exact cpu type */ 551/* Contents of JTAG ID register used to identify exact cpu type */
@@ -629,6 +636,8 @@ static struct davinci_soc_info davinci_soc_info_dm644x = {
629 .gpio_irq = IRQ_GPIOBNK0, 636 .gpio_irq = IRQ_GPIOBNK0,
630 .serial_dev = &dm644x_serial_device, 637 .serial_dev = &dm644x_serial_device,
631 .emac_pdata = &dm644x_emac_pdata, 638 .emac_pdata = &dm644x_emac_pdata,
639 .sram_dma = 0x00008000,
640 .sram_len = SZ_16K,
632}; 641};
633 642
634void __init dm644x_init(void) 643void __init dm644x_init(void)
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index 12189c737a3..334f0711e0f 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -518,6 +518,13 @@ static struct map_desc dm646x_io_desc[] = {
518 .length = IO_SIZE, 518 .length = IO_SIZE,
519 .type = MT_DEVICE 519 .type = MT_DEVICE
520 }, 520 },
521 {
522 .virtual = SRAM_VIRT,
523 .pfn = __phys_to_pfn(0x00010000),
524 .length = SZ_32K,
525 /* MT_MEMORY_NONCACHED requires supersection alignment */
526 .type = MT_DEVICE,
527 },
521}; 528};
522 529
523/* Contents of JTAG ID register used to identify exact cpu type */ 530/* Contents of JTAG ID register used to identify exact cpu type */
@@ -608,6 +615,8 @@ static struct davinci_soc_info davinci_soc_info_dm646x = {
608 .gpio_irq = IRQ_DM646X_GPIOBNK0, 615 .gpio_irq = IRQ_DM646X_GPIOBNK0,
609 .serial_dev = &dm646x_serial_device, 616 .serial_dev = &dm646x_serial_device,
610 .emac_pdata = &dm646x_emac_pdata, 617 .emac_pdata = &dm646x_emac_pdata,
618 .sram_dma = 0x10010000,
619 .sram_len = SZ_32K,
611}; 620};
612 621
613void __init dm646x_init(void) 622void __init dm646x_init(void)
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h
index 715528f0dbd..a1f03b606d8 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -66,10 +66,16 @@ struct davinci_soc_info {
66 unsigned gpio_irq; 66 unsigned gpio_irq;
67 struct platform_device *serial_dev; 67 struct platform_device *serial_dev;
68 struct emac_platform_data *emac_pdata; 68 struct emac_platform_data *emac_pdata;
69 dma_addr_t sram_dma;
70 unsigned sram_len;
69}; 71};
70 72
71extern struct davinci_soc_info davinci_soc_info; 73extern struct davinci_soc_info davinci_soc_info;
72 74
73extern void davinci_common_init(struct davinci_soc_info *soc_info); 75extern void davinci_common_init(struct davinci_soc_info *soc_info);
74 76
77/* standard place to map on-chip SRAMs; they *may* support DMA */
78#define SRAM_VIRT 0xfffe0000
79#define SRAM_SIZE SZ_128K
80
75#endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */ 81#endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */