void mdp4_overlay_handle_padding(struct msm_fb_data_type *mfd, bool is_3d) { int i = 0; unsigned char *fbvir = NULL; struct fb_info *fbi = mfd->fbi; MDPIBUF *iBuf = &mfd->ibuf; //get virtual address for(i = 0; i < 2; i++) { if(fb_addr[i].fbphy == iBuf->buf) { fbvir = (unsigned char*)fb_addr[i].fbvir; fb_addr[i].is_3d = is_3d; break; } else if(fb_addr[i].fbphy == NULL || fb_addr[i].fbvir == NULL) { fb_addr[i].fbphy = (unsigned char*) iBuf->buf; fb_addr[i].fbvir = ioremap((unsigned long)fb_addr[i].fbphy, fbi->fix.smem_len/2); fbvir = (unsigned char*)fb_addr[i].fbvir; fb_addr[i].is_3d = is_3d; //pr_info("%s(%d) call ioremap fbphy %p fbvir %p\n", __func__, __LINE__, fb_addr[i].fbphy, fb_addr[i].fbvir); break; } } if(is_3d) mdp4_overlay_move_padding(mfd, fbvir, is_3d); else { for(i =0; i < 2; i++) { if(fb_addr[i].is_3d) { mdp4_overlay_move_padding(mfd, fb_addr[i].fbvir, is_3d); fb_addr[i].is_3d = false; } } } }
void mdp4_overlay_handle_padding(struct msm_fb_data_type *mfd, bool is_3d) { int i = 0; unsigned char *fbvir = NULL; struct fb_info *fbi = mfd->fbi; MDPIBUF *iBuf = &mfd->ibuf; bool found = false; /* get virtual address */ for (i = 0; i < 2; i++) { if (fb_addr[i].fbphy == iBuf->buf) { fbvir = (unsigned char *)fb_addr[i].fbvir; found = true; break; } else if (fb_addr[i].fbphy == NULL || fb_addr[i].fbvir == NULL) { fb_addr[i].fbphy = (unsigned char *) iBuf->buf; fb_addr[i].fbvir = ioremap((unsigned long)fb_addr[i].fbphy, fbi->fix.smem_len/2); fbvir = (unsigned char *)fb_addr[i].fbvir; found = true; break; } } if (!found) return; if (is_3d) { mdp4_overlay_move_padding(mfd, fbvir, is_3d); fb_addr[i].is_3d = is_3d; } else { for (i = 0; i < 2; i++) { if (fb_addr[i].is_3d) { mdp4_overlay_move_padding(mfd, fb_addr[i].fbvir, is_3d); fb_addr[i].is_3d = false; } } } }