>From 7b55ed59364e7798586fc4d3692919741c164b3f Mon Sep 17 00:00:00 2001 From: Daniel Mack Date: Thu, 4 Oct 2012 11:11:07 +0200 Subject: [PATCH 1/2] ARM: davinci: pass SRAM gen_pool to mcasp platform data This is needed to decouple the Davinci specific parts from the McASP driver. Signed-off-by: Daniel Mack --- arch/arm/mach-davinci/board-da830-evm.c | 2 ++ arch/arm/mach-davinci/board-da850-evm.c | 2 ++ arch/arm/mach-davinci/board-dm355-evm.c | 5 ++++- arch/arm/mach-davinci/board-dm365-evm.c | 2 ++ arch/arm/mach-davinci/board-dm644x-evm.c | 5 ++++- arch/arm/mach-davinci/board-dm646x-evm.c | 3 +++ arch/arm/mach-davinci/board-neuros-osd2.c | 5 ++++- arch/arm/mach-davinci/include/mach/sram.h | 1 + arch/arm/mach-davinci/sram.c | 17 +++++++++-------- include/linux/platform_data/davinci_asp.h | 1 + 10 files changed, 32 insertions(+), 11 deletions(-) diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c index 0031864..47973b2 100644 --- a/arch/arm/mach-davinci/board-da830-evm.c +++ b/arch/arm/mach-davinci/board-da830-evm.c @@ -33,6 +33,7 @@ #include #include #include +#include #define DA830_EVM_PHY_ID "" /* @@ -214,6 +215,7 @@ static struct snd_platform_data da830_evm_snd_data = { .version = MCASP_VERSION_2, .txnumevt = 1, .rxnumevt = 1, + .sram_pool = davinci_sram_pool, }; /* diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 0149fb4..b74db6c 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -44,6 +44,7 @@ #include #include #include +#include #define DA850_EVM_PHY_ID "davinci_mdio-0:00" #define DA850_LCD_PWR_PIN GPIO_TO_PIN(2, 8) @@ -758,6 +759,7 @@ static struct snd_platform_data da850_evm_snd_data = { .version = MCASP_VERSION_2, .txnumevt = 1, .rxnumevt = 1, + .sram_pool = davinci_sram_pool, }; static const short da850_evm_mcasp_pins[] __initconst = { diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c index 1c7b1f4..9b0c6df 100644 --- a/arch/arm/mach-davinci/board-dm355-evm.c +++ b/arch/arm/mach-davinci/board-dm355-evm.c @@ -31,6 +31,7 @@ #include #include #include +#include #include "davinci.h" @@ -113,7 +114,9 @@ static struct davinci_i2c_platform_data i2c_pdata = { .scl_pin = 14, }; -static struct snd_platform_data dm355_evm_snd_data; +static struct snd_platform_data dm355_evm_snd_data = { + .sram_pool = davinci_sram_pool, +}; static int dm355evm_mmc_gpios = -EINVAL; diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c index 688a9c5..9eaec56 100644 --- a/arch/arm/mach-davinci/board-dm365-evm.c +++ b/arch/arm/mach-davinci/board-dm365-evm.c @@ -38,6 +38,7 @@ #include #include #include +#include #include @@ -176,6 +177,7 @@ static struct at24_platform_data eeprom_info = { static struct snd_platform_data dm365_evm_snd_data = { .asp_chan_q = EVENTQ_3, + .sram_pool = davinci_sram_pool, }; static struct i2c_board_info i2c_info[] = { diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c index d34ed55..448341f 100644 --- a/arch/arm/mach-davinci/board-dm644x-evm.c +++ b/arch/arm/mach-davinci/board-dm644x-evm.c @@ -38,6 +38,7 @@ #include #include #include +#include #include "davinci.h" @@ -262,7 +263,9 @@ static struct platform_device rtc_dev = { .id = -1, }; -static struct snd_platform_data dm644x_evm_snd_data; +static struct snd_platform_data dm644x_evm_snd_data = { + .sram_pool = davinci_sram_pool, +}; /*----------------------------------------------------------------------*/ diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index 958679a..1ee6d1f 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c @@ -43,6 +43,7 @@ #include #include #include +#include #include "davinci.h" #include "clock.h" @@ -336,6 +337,7 @@ static struct snd_platform_data dm646x_evm_snd_data[] = { .tdm_slots = 2, .serial_dir = dm646x_iis_serializer_direction, .asp_chan_q = EVENTQ_0, + .sram_pool = davinci_sram_pool, }, { .tx_dma_offset = 0x400, @@ -345,6 +347,7 @@ static struct snd_platform_data dm646x_evm_snd_data[] = { .tdm_slots = 32, .serial_dir = dm646x_dit_serializer_direction, .asp_chan_q = EVENTQ_0, + .sram_pool = davinci_sram_pool, }, }; diff --git a/arch/arm/mach-davinci/board-neuros-osd2.c b/arch/arm/mach-davinci/board-neuros-osd2.c index f6b9fc7..74b31b9 100644 --- a/arch/arm/mach-davinci/board-neuros-osd2.c +++ b/arch/arm/mach-davinci/board-neuros-osd2.c @@ -37,6 +37,7 @@ #include #include #include +#include #include "davinci.h" @@ -125,7 +126,9 @@ static struct platform_device davinci_fb_device = { .num_resources = 0, }; -static struct snd_platform_data dm644x_ntosd2_snd_data; +static struct snd_platform_data dm644x_ntosd2_snd_data = { + .sram_pool = davinci_sram_pool, +}; static struct gpio_led ntosd2_leds[] = { { .name = "led1_green", .gpio = GPIO(10), }, diff --git a/arch/arm/mach-davinci/include/mach/sram.h b/arch/arm/mach-davinci/include/mach/sram.h index 111f7cc..0394121 100644 --- a/arch/arm/mach-davinci/include/mach/sram.h +++ b/arch/arm/mach-davinci/include/mach/sram.h @@ -23,5 +23,6 @@ */ extern void *sram_alloc(size_t len, dma_addr_t *dma); extern void sram_free(void *addr, size_t len); +extern struct gen_pool *davinci_sram_pool; #endif /* __MACH_SRAM_H */ diff --git a/arch/arm/mach-davinci/sram.c b/arch/arm/mach-davinci/sram.c index db0f778..a938361 100644 --- a/arch/arm/mach-davinci/sram.c +++ b/arch/arm/mach-davinci/sram.c @@ -15,7 +15,8 @@ #include #include -static struct gen_pool *sram_pool; +struct gen_pool *davinci_sram_pool; +EXPORT_SYMBOL_GPL(davinci_sram_pool); void *sram_alloc(size_t len, dma_addr_t *dma) { @@ -24,10 +25,10 @@ void *sram_alloc(size_t len, dma_addr_t *dma) if (dma) *dma = 0; - if (!sram_pool || (dma && !dma_base)) + if (!davinci_sram_pool || (dma && !dma_base)) return NULL; - vaddr = gen_pool_alloc(sram_pool, len); + vaddr = gen_pool_alloc(davinci_sram_pool, len); if (!vaddr) return NULL; @@ -40,7 +41,7 @@ EXPORT_SYMBOL(sram_alloc); void sram_free(void *addr, size_t len) { - gen_pool_free(sram_pool, (unsigned long) addr, len); + gen_pool_free(davinci_sram_pool, (unsigned long) addr, len); } EXPORT_SYMBOL(sram_free); @@ -58,12 +59,12 @@ static int __init sram_init(void) if (len) { len = min_t(unsigned, len, SRAM_SIZE); - sram_pool = gen_pool_create(ilog2(SRAM_GRANULARITY), -1); - if (!sram_pool) + davinci_sram_pool = gen_pool_create(ilog2(SRAM_GRANULARITY), -1); + if (!davinci_sram_pool) status = -ENOMEM; } - if (sram_pool) - status = gen_pool_add(sram_pool, SRAM_VIRT, len, -1); + if (davinci_sram_pool) + status = gen_pool_add(davinci_sram_pool, SRAM_VIRT, len, -1); WARN_ON(status < 0); return status; } diff --git a/include/linux/platform_data/davinci_asp.h b/include/linux/platform_data/davinci_asp.h index 8c618e1..0cd22f7 100644 --- a/include/linux/platform_data/davinci_asp.h +++ b/include/linux/platform_data/davinci_asp.h @@ -73,6 +73,7 @@ struct snd_platform_data { * when compared to previous behavior. */ unsigned enable_channel_combine:1; + struct gen_pool *sram_pool; unsigned sram_size_playback; unsigned sram_size_capture; -- 1.7.11.4