X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=drivers%2Fvideo%2Frockchip%2Frga%2Frga_mmu_info.c;h=de1a60ee034fd8ae41c718e1b790668a904cb453;hb=61072dd4e2502a254033878ad965d8e577543c2d;hp=f79eb64e8cdccc8e0124ba945638cc8032007828;hpb=527d26699ddf48021b439a6eb6804ed853a34362;p=firefly-linux-kernel-4.4.55.git diff --git a/drivers/video/rockchip/rga/rga_mmu_info.c b/drivers/video/rockchip/rga/rga_mmu_info.c index f79eb64e8cdc..de1a60ee034f 100755 --- a/drivers/video/rockchip/rga/rga_mmu_info.c +++ b/drivers/video/rockchip/rga/rga_mmu_info.c @@ -78,57 +78,49 @@ static int rga_buf_size_cal(uint32_t yrgb_addr, uint32_t uv_addr, uint32_t v_add case RK_FORMAT_RGBA_8888 : stride = (w * 4 + 3) & (~3); size_yrgb = stride*h; - end = (yrgb_addr + (size_yrgb + PAGE_SIZE - 1)) >> PAGE_SHIFT; start = yrgb_addr >> PAGE_SHIFT; - pageCount = end - start; + pageCount = (size_yrgb + PAGE_SIZE - 1) >> PAGE_SHIFT; break; case RK_FORMAT_RGBX_8888 : stride = (w * 4 + 3) & (~3); size_yrgb = stride*h; - end = (yrgb_addr + (size_yrgb + PAGE_SIZE - 1)) >> PAGE_SHIFT; start = yrgb_addr >> PAGE_SHIFT; - pageCount = end - start; + pageCount = (size_yrgb + PAGE_SIZE - 1) >> PAGE_SHIFT; break; case RK_FORMAT_RGB_888 : stride = (w * 3 + 3) & (~3); size_yrgb = stride*h; - end = (yrgb_addr + (size_yrgb + PAGE_SIZE - 1)) >> PAGE_SHIFT; start = yrgb_addr >> PAGE_SHIFT; - pageCount = end - start; + pageCount = (size_yrgb + PAGE_SIZE - 1) >> PAGE_SHIFT; break; case RK_FORMAT_BGRA_8888 : size_yrgb = w*h*4; - end = (yrgb_addr + (size_yrgb + PAGE_SIZE - 1)) >> PAGE_SHIFT; start = yrgb_addr >> PAGE_SHIFT; - pageCount = end - start; + pageCount = (size_yrgb + PAGE_SIZE - 1) >> PAGE_SHIFT; break; case RK_FORMAT_RGB_565 : stride = (w*2 + 3) & (~3); size_yrgb = stride * h; - end = (yrgb_addr + (size_yrgb + PAGE_SIZE - 1)) >> PAGE_SHIFT; start = yrgb_addr >> PAGE_SHIFT; - pageCount = end - start; + pageCount = (size_yrgb + PAGE_SIZE - 1) >> PAGE_SHIFT; break; case RK_FORMAT_RGBA_5551 : stride = (w*2 + 3) & (~3); size_yrgb = stride * h; - end = (yrgb_addr + (size_yrgb + PAGE_SIZE - 1)) >> PAGE_SHIFT; start = yrgb_addr >> PAGE_SHIFT; - pageCount = end - start; + pageCount = (size_yrgb + PAGE_SIZE - 1) >> PAGE_SHIFT; break; case RK_FORMAT_RGBA_4444 : stride = (w*2 + 3) & (~3); size_yrgb = stride * h; - end = (yrgb_addr + (size_yrgb + PAGE_SIZE - 1)) >> PAGE_SHIFT; start = yrgb_addr >> PAGE_SHIFT; - pageCount = end - start; + pageCount = (size_yrgb + PAGE_SIZE - 1) >> PAGE_SHIFT; break; case RK_FORMAT_BGR_888 : stride = (w*3 + 3) & (~3); size_yrgb = stride * h; - end = (yrgb_addr + (size_yrgb + PAGE_SIZE - 1)) >> PAGE_SHIFT; start = yrgb_addr >> PAGE_SHIFT; - pageCount = end - start; + pageCount = (size_yrgb + PAGE_SIZE - 1) >> PAGE_SHIFT; break; /* YUV FORMAT */ @@ -137,6 +129,7 @@ static int rga_buf_size_cal(uint32_t yrgb_addr, uint32_t uv_addr, uint32_t v_add size_yrgb = stride * h; size_uv = stride * h; start = MIN(yrgb_addr, uv_addr); + start >>= PAGE_SHIFT; end = MAX((yrgb_addr + size_yrgb), (uv_addr + size_uv)); end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT; @@ -344,7 +337,6 @@ static int rga_MapUserMemory(struct page **pages, while (0); #else - do { pte_t * pte;