1 /* linux/arch/arm/plat-s5p/bootmem.c
3 * Copyright (c) 2009 Samsung Electronics Co., Ltd.
4 * http://www.samsung.com/
6 * Bootmem helper functions
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
14 #include <linux/bootmem.h>
15 #include <linux/swap.h>
16 #include <asm/setup.h>
18 #include <mach/memory.h>
19 #include <plat/media.h>
20 #include <mach/media.h>
21 #include <linux/memblock.h>
23 extern struct s5p_media_device media_devs[];
24 extern int nr_media_devs;
26 static struct s5p_media_device *s5p_get_media_device(int dev_id, int bank)
28 struct s5p_media_device *mdev = NULL;
29 int i = 0, found = 0, nr_devs;
31 nr_devs = nr_media_devs;
36 while (!found && (i < nr_devs)) {
37 mdev = &media_devs[i];
38 if (mdev->id == dev_id && mdev->bank == bank)
50 dma_addr_t s5p_get_media_memory_bank(int dev_id, int bank)
52 struct s5p_media_device *mdev;
54 mdev = s5p_get_media_device(dev_id, bank);
56 printk(KERN_ERR "invalid media device\n");
61 printk(KERN_ERR "no memory for %s\n", mdev->name);
67 EXPORT_SYMBOL(s5p_get_media_memory_bank);
69 size_t s5p_get_media_memsize_bank(int dev_id, int bank)
71 struct s5p_media_device *mdev;
73 mdev = s5p_get_media_device(dev_id, bank);
75 printk(KERN_ERR "invalid media device\n");
81 EXPORT_SYMBOL(s5p_get_media_memsize_bank);
83 void s5p_reserve_bootmem(void)
85 struct s5p_media_device *mdev;
87 unsigned long mdev_end = 0;
89 nr_devs = nr_media_devs;
91 for (i = 0; i < nr_devs; i++) {
92 mdev = &media_devs[i];
93 if (mdev->memsize <= 0)
97 memblock_reserve(mdev->paddr, mdev->memsize);
100 mdev_end = meminfo.bank[mdev->bank].start +
101 meminfo.bank[mdev->bank].size;
103 mdev->paddr = mdev_end - mdev->memsize;
104 memblock_reserve(mdev->paddr, mdev->memsize);
105 mdev_end = mdev->paddr;
108 printk(KERN_INFO "s5pv310: %lu bytes system memory reserved "
109 "for %s at 0x%08x\n", (unsigned long) mdev->memsize,
110 mdev->name, mdev->paddr);
114 /* FIXME: temporary implementation to avoid compile error */
115 int dma_needs_bounce(struct device *dev, dma_addr_t addr, size_t size)