diff options
Diffstat (limited to 'arch/sh/mm/consistent.c')
| -rw-r--r-- | arch/sh/mm/consistent.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c index b2ce014401b5..895bb3f335c7 100644 --- a/arch/sh/mm/consistent.c +++ b/arch/sh/mm/consistent.c | |||
| @@ -95,6 +95,29 @@ void dma_cache_sync(struct device *dev, void *vaddr, size_t size, | |||
| 95 | } | 95 | } |
| 96 | EXPORT_SYMBOL(dma_cache_sync); | 96 | EXPORT_SYMBOL(dma_cache_sync); |
| 97 | 97 | ||
| 98 | static int __init memchunk_setup(char *str) | ||
| 99 | { | ||
| 100 | return 1; /* accept anything that begins with "memchunk." */ | ||
| 101 | } | ||
| 102 | __setup("memchunk.", memchunk_setup); | ||
| 103 | |||
| 104 | static void memchunk_cmdline_override(char *name, unsigned long *sizep) | ||
| 105 | { | ||
| 106 | char *p = boot_command_line; | ||
| 107 | int k = strlen(name); | ||
| 108 | |||
| 109 | while ((p = strstr(p, "memchunk."))) { | ||
| 110 | p += 9; /* strlen("memchunk.") */ | ||
| 111 | if (!strncmp(name, p, k) && p[k] == '=') { | ||
| 112 | p += k + 1; | ||
| 113 | *sizep = memparse(p, NULL); | ||
| 114 | pr_info("%s: forcing memory chunk size to 0x%08lx\n", | ||
| 115 | name, *sizep); | ||
| 116 | break; | ||
| 117 | } | ||
| 118 | } | ||
| 119 | } | ||
| 120 | |||
| 98 | int platform_resource_setup_memory(struct platform_device *pdev, | 121 | int platform_resource_setup_memory(struct platform_device *pdev, |
| 99 | char *name, unsigned long memsize) | 122 | char *name, unsigned long memsize) |
| 100 | { | 123 | { |
| @@ -109,6 +132,10 @@ int platform_resource_setup_memory(struct platform_device *pdev, | |||
| 109 | return -EINVAL; | 132 | return -EINVAL; |
| 110 | } | 133 | } |
| 111 | 134 | ||
| 135 | memchunk_cmdline_override(name, &memsize); | ||
| 136 | if (!memsize) | ||
| 137 | return 0; | ||
| 138 | |||
| 112 | buf = dma_alloc_coherent(NULL, memsize, &dma_handle, GFP_KERNEL); | 139 | buf = dma_alloc_coherent(NULL, memsize, &dma_handle, GFP_KERNEL); |
| 113 | if (!buf) { | 140 | if (!buf) { |
| 114 | pr_warning("%s: unable to allocate memory\n", name); | 141 | pr_warning("%s: unable to allocate memory\n", name); |
