void mdp4_lcdc_overlay(struct msm_fb_data_type *mfd) { struct fb_info *fbi = mfd->fbi; uint8 *buf; int bpp; struct mdp4_overlay_pipe *pipe; if (!mfd->panel_power_on) return; /* no need to power on cmd block since it's lcdc mode */ bpp = fbi->var.bits_per_pixel / 8; buf = (uint8 *) fbi->fix.smem_start; buf += fbi->var.xoffset * bpp + fbi->var.yoffset * fbi->fix.line_length; mutex_lock(&mfd->dma->ov_mutex); pipe = lcdc_pipe; pipe->srcp0_addr = (uint32) buf; mdp4_overlay_rgb_setup(pipe); mdp4_overlay_reg_flush(pipe, 1); mdp4_overlay_lcdc_vsync_push(mfd, pipe); mutex_unlock(&mfd->dma->ov_mutex); }
void mdp4_lcdc_overlay(struct msm_fb_data_type *mfd) { struct fb_info *fbi = mfd->fbi; uint8 *buf; int bpp; struct mdp4_overlay_pipe *pipe; if (!mfd->panel_power_on) return; /* no need to power on cmd block since it's lcdc mode */ bpp = fbi->var.bits_per_pixel / 8; buf = (uint8 *) fbi->fix.smem_start; buf += calc_fb_offset(mfd, fbi, bpp); mutex_lock(&mfd->dma->ov_mutex); pipe = lcdc_pipe; pipe->srcp0_addr = (uint32) buf; mdp4_overlay_rgb_setup(pipe); mdp4_overlay_lcdc_vsync_push(mfd, pipe); mdp4_stat.kickoff_lcdc++; mdp4_overlay_resource_release(); mutex_unlock(&mfd->dma->ov_mutex); }
void mdp4_lcdc_overlay(struct msm_fb_data_type *mfd) { struct fb_info *fbi = mfd->fbi; uint8 *buf; unsigned int buf_offset; int bpp; struct mdp4_overlay_pipe *pipe; if (!mfd->panel_power_on) return; /* no need to power on cmd block since it's lcdc mode */ bpp = fbi->var.bits_per_pixel / 8; buf = (uint8 *) fbi->fix.smem_start; buf_offset = calc_fb_offset(mfd, fbi, bpp); mutex_lock(&mfd->dma->ov_mutex); pipe = lcdc_pipe; if (mfd->map_buffer) { pipe->srcp0_addr = (unsigned int)mfd->map_buffer->iova[0] + \ buf_offset; pr_debug("start 0x%lx srcp0_addr 0x%x\n", mfd-> map_buffer->iova[0], pipe->srcp0_addr); } else { pipe->srcp0_addr = (uint32)(buf + buf_offset); } mdp4_overlay_rgb_setup(pipe); mdp4_mixer_stage_up(pipe); mdp4_overlay_reg_flush(pipe, 0); mdp4_overlay_lcdc_start(); mdp4_overlay_lcdc_vsync_push(mfd, pipe); mdp4_iommu_unmap(pipe); mutex_unlock(&mfd->dma->ov_mutex); }
void mdp4_lcdc_overlay(struct msm_fb_data_type *mfd) { struct fb_info *fbi = mfd->fbi; uint8 *buf; unsigned int buf_offset; int bpp; struct mdp4_overlay_pipe *pipe; /* LGE_UPDATE_S [email protected] 20110717 hidden_reset_porting from Victor. */ #ifdef CONFIG_LGE_HIDDEN_RESET_PATCH /* LGE_CHANGE * add hidden reset module * 2011-07-07, [email protected] */ unsigned int tmp; #endif /* LGE_UPDATE_E [email protected] 20110717 hidden_reset_porting from Victor. */ if (!mfd->panel_power_on) return; /* no need to power on cmd block since it's lcdc mode */ bpp = fbi->var.bits_per_pixel / 8; /* LGE_UPDATE_S [email protected] 20110717 hidden_reset_porting from Victor. */ #ifdef CONFIG_LGE_HIDDEN_RESET_PATCH /* LGE_CHANGE * add hidden reset module * 2011-07-07, [email protected] */ if (on_hidden_reset) { tmp = (unsigned int)lge_get_fb_copy_virt_rgb888_addr(); buf = (unsigned char *)__pa((unsigned int)tmp); } else { buf = (uint8 *) fbi->fix.smem_start; /* LGE_UPDATE_S youngrok.song QCT404023I patch */ #if 1 //buf_offset = calc_fb_offset(mfd, fbi, bpp); #else buf += fbi->var.xoffset * bpp + fbi->var.yoffset * fbi->fix.line_length; #endif /* LGE_UPDATE_E youngrok.song QCT404023I patch */ } #else buf = (uint8 *) fbi->fix.smem_start; #endif buf_offset = calc_fb_offset(mfd, fbi, bpp); /* LGE_UPDATE_E [email protected] 20110717 hidden_reset_porting from Victor. */ mutex_lock(&mfd->dma->ov_mutex); pipe = lcdc_pipe; if (mfd->map_buffer) { pipe->srcp0_addr = (unsigned int)mfd->map_buffer->iova[0] + \ buf_offset; pr_debug("start 0x%lx srcp0_addr 0x%x\n", mfd-> map_buffer->iova[0], pipe->srcp0_addr); } else { pipe->srcp0_addr = (uint32)(buf + buf_offset); } mdp4_overlay_rgb_setup(pipe); mdp4_mixer_stage_up(pipe); mdp4_overlay_reg_flush(pipe, 0); mdp4_overlay_lcdc_start(); mdp4_overlay_lcdc_vsync_push(mfd, pipe); mdp4_iommu_unmap(pipe); mutex_unlock(&mfd->dma->ov_mutex); }