]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
davinci: soc-specific SRAM setup
authorDavid Brownell <dbrownell@users.sourceforge.net>
Fri, 1 May 2009 00:35:48 +0000 (17:35 -0700)
committerKevin Hilman <khilman@deeprootsystems.com>
Thu, 28 May 2009 22:18:12 +0000 (15:18 -0700)
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>
arch/arm/mach-davinci/dm355.c
arch/arm/mach-davinci/dm644x.c
arch/arm/mach-davinci/dm646x.c
arch/arm/mach-davinci/include/mach/common.h

index 893d5ba21d5f4c7d9c2423f655e657f7f8652a26..baaaf328de2e2d8b724a7a0b1ce18f0ced18be0c 100644 (file)
@@ -613,6 +613,13 @@ static struct map_desc dm355_io_desc[] = {
                .length         = IO_SIZE,
                .type           = MT_DEVICE
        },
+       {
+               .virtual        = SRAM_VIRT,
+               .pfn            = __phys_to_pfn(0x00010000),
+               .length         = SZ_32K,
+               /* MT_MEMORY_NONCACHED requires supersection alignment */
+               .type           = MT_DEVICE,
+       },
 };
 
 /* Contents of JTAG ID register used to identify exact cpu type */
@@ -702,6 +709,8 @@ static struct davinci_soc_info davinci_soc_info_dm355 = {
        .gpio_num               = 104,
        .gpio_irq               = IRQ_DM355_GPIOBNK0,
        .serial_dev             = &dm355_serial_device,
+       .sram_dma               = 0x00010000,
+       .sram_len               = SZ_32K,
 };
 
 void __init dm355_init(void)
index 4ab5f07ead05b235476bd354d14b246451e42375..fb5449b3c97bdc777a5dfeb7a5cc955a2ae8b491 100644 (file)
@@ -539,6 +539,13 @@ static struct map_desc dm644x_io_desc[] = {
                .length         = IO_SIZE,
                .type           = MT_DEVICE
        },
+       {
+               .virtual        = SRAM_VIRT,
+               .pfn            = __phys_to_pfn(0x00008000),
+               .length         = SZ_16K,
+               /* MT_MEMORY_NONCACHED requires supersection alignment */
+               .type           = MT_DEVICE,
+       },
 };
 
 /* Contents of JTAG ID register used to identify exact cpu type */
@@ -629,6 +636,8 @@ static struct davinci_soc_info davinci_soc_info_dm644x = {
        .gpio_irq               = IRQ_GPIOBNK0,
        .serial_dev             = &dm644x_serial_device,
        .emac_pdata             = &dm644x_emac_pdata,
+       .sram_dma               = 0x00008000,
+       .sram_len               = SZ_16K,
 };
 
 void __init dm644x_init(void)
index 12189c737a3bde72ba375301e3260ea0771bd8e2..334f0711e0f5bee49feafdf1651a9583873ad56a 100644 (file)
@@ -518,6 +518,13 @@ static struct map_desc dm646x_io_desc[] = {
                .length         = IO_SIZE,
                .type           = MT_DEVICE
        },
+       {
+               .virtual        = SRAM_VIRT,
+               .pfn            = __phys_to_pfn(0x00010000),
+               .length         = SZ_32K,
+               /* MT_MEMORY_NONCACHED requires supersection alignment */
+               .type           = MT_DEVICE,
+       },
 };
 
 /* Contents of JTAG ID register used to identify exact cpu type */
@@ -608,6 +615,8 @@ static struct davinci_soc_info davinci_soc_info_dm646x = {
        .gpio_irq               = IRQ_DM646X_GPIOBNK0,
        .serial_dev             = &dm646x_serial_device,
        .emac_pdata             = &dm646x_emac_pdata,
+       .sram_dma               = 0x10010000,
+       .sram_len               = SZ_32K,
 };
 
 void __init dm646x_init(void)
index 715528f0dbdb551162d460581206edca3f0d3651..a1f03b606d8f1fc3ca0bacb4aeb7fa486ce567d1 100644 (file)
@@ -66,10 +66,16 @@ struct davinci_soc_info {
        unsigned                        gpio_irq;
        struct platform_device          *serial_dev;
        struct emac_platform_data       *emac_pdata;
+       dma_addr_t                      sram_dma;
+       unsigned                        sram_len;
 };
 
 extern struct davinci_soc_info davinci_soc_info;
 
 extern void davinci_common_init(struct davinci_soc_info *soc_info);
 
+/* standard place to map on-chip SRAMs; they *may* support DMA */
+#define SRAM_VIRT      0xfffe0000
+#define SRAM_SIZE      SZ_128K
+
 #endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */