S5PV210 多媒体预留内存空间

       由于GPU 多媒体解码 camera输入以及overlay显示等操作需要大块的连续物理内存,S5PV210开发板在初始化的过程中,会为这些多媒体相关驱动预留内存,这些预留的物理内存不能再被系统的其他部件使用,因此调整这些预留空间使之既能满足项目的需求,同时把浪费部分最小化,有必要分析每一部分内存需求的计算公式。

arch/arm/plat-s5p/bootmem.c中,s5p_reserve_bootmem为media设备预留内存

 80 void s5p_reserve_bootmem(struct s5p_media_device *mdevs, int nr_mdevs)
 81 {
 82     struct s5p_media_device *mdev;
 83     void *virt_mem;
 84     int i;
 85
 86     media_devs = mdevs;
 87     nr_media_devs = nr_mdevs;
 88
 89     for (i = 0; i < nr_media_devs; i++) {
 90         mdev = &media_devs[i];
 91         if (mdev->memsize <= 0)
 92             continue;
 93
 94         if (mdev->paddr)
 95             virt_mem = __alloc_bootmem(mdev->memsize, PAGE_SIZE,
 96                     mdev->paddr);
 97         else {
 98             printk(KERN_INFO "s5pv210: meminfo.back[mdev->bank].start=0x%08lx\n",
 99                     meminfo.bank[mdev->bank].start);
100             virt_mem = __alloc_bootmem(mdev->memsize, PAGE_SIZE,
101                     meminfo.bank[mdev->bank].start);
102         }
103
104         if (virt_mem != NULL) {
105             mdev->paddr = virt_to_phys(virt_mem);
106         } else {
107             mdev->paddr = (dma_addr_t)NULL;
108             printk(KERN_INFO "s5p: Failed to reserve system memory\n");
109         }
110
111         printk(KERN_INFO "s5pv210: %lu bytes system memory reserved "
112             "for %s at 0x%08x\n", (unsigned long) mdev->memsize,
113             mdev->name, mdev->paddr);
114     }
115 }

@mdevs 是在mach-s5pv210.c中定义的

 174 #define  S5PV210_VIDEO_SAMSUNG_MEMSIZE_FIMC0 (24576 * SZ_1K)
 175 #define  S5PV210_VIDEO_SAMSUNG_MEMSIZE_FIMC1 (9900 * SZ_1K)

 177 #define  S5PV210_VIDEO_SAMSUNG_MEMSIZE_FIMC2 (24576 * SZ_1K)
 178 #define  S5PV210_VIDEO_SAMSUNG_MEMSIZE_MFC0 (36864 * SZ_1K)
 179 #define  S5PV210_VIDEO_SAMSUNG_MEMSIZE_MFC1 (36864 * SZ_1K)
 180 #define  S5PV210_VIDEO_SAMSUNG_MEMSIZE_FIMD (S5PV210_LCD_WIDTH * \
 181                          S5PV210_LCD_HEIGHT * 4 * \
 182                          CONFIG_FB_S3C_NR_BUFFERS)
 183 #define  S5PV210_VIDEO_SAMSUNG_MEMSIZE_JPEG (8192 * SZ_1K)
 184
 185 /* 1920 * 1080 * 4 (RGBA)
 186  * - framesize == 1080p : 1920 * 1080 * 2(16bpp) * 2(double buffer) = 8MB
 187  * - framesize <  1080p : 1080 *  720 * 4(32bpp) * 2(double buffer) = under 8MB
 188  **/
 189 #define  S5PV210_VIDEO_SAMSUNG_MEMSIZE_G2D (8192 * SZ_1K)
 190 #define  S5PV210_VIDEO_SAMSUNG_MEMSIZE_TEXSTREAM (3000 * SZ_1K)
 191 #define  S5PV210_ANDROID_PMEM_MEMSIZE_PMEM_GPU1 (3300 * SZ_1K)
 192
 193 static struct s5p_media_device smdkc110_media_devs[] = {
 194     [0] = {
 195         .id = S5P_MDEV_MFC,
 196         .name = "mfc",
 197         .bank = 0,
 198         .memsize = S5PV210_VIDEO_SAMSUNG_MEMSIZE_MFC0,
 199         .paddr = 0,
 200     },
 201     [1] = {
 202         .id = S5P_MDEV_MFC,
 203         .name = "mfc",
 204         .bank = 1,
 205         .memsize = S5PV210_VIDEO_SAMSUNG_MEMSIZE_MFC1,
 206         .paddr = 0,
 207     },
 208     [2] = {
 209         .id = S5P_MDEV_FIMC0,
 210         .name = "fimc0",
 211         .bank = 1,
 212         .memsize = S5PV210_VIDEO_SAMSUNG_MEMSIZE_FIMC0,
 213         .paddr = 0,
 214     },
 215     [3] = {
 216         .id = S5P_MDEV_FIMC1,
 217         .name = "fimc1",
 218         .bank = 1,
 219         .memsize = S5PV210_VIDEO_SAMSUNG_MEMSIZE_FIMC1,
 220         .paddr = 0,
 221     },
 222     [4] = {
 223         .id = S5P_MDEV_FIMC2,
 224         .name = "fimc2",
 225         .bank = 1,
 226         .memsize = S5PV210_VIDEO_SAMSUNG_MEMSIZE_FIMC2,
 227         .paddr = 0,
 228     },
 229     [5] = {
 230         .id = S5P_MDEV_JPEG,
 231         .name = "jpeg",
 232         .bank = 0,
 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值