summaryrefslogtreecommitdiff
path: root/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c')
-rw-r--r--firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c62
1 files changed, 0 insertions, 62 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c b/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c
index a2d5b73ea8..d2a1d759d0 100644
--- a/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c
+++ b/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c
@@ -158,65 +158,3 @@ void lcd_update(void)
158 158
159 lcd_update_rect(0, 0, LCD_WIDTH, LCD_HEIGHT); 159 lcd_update_rect(0, 0, LCD_WIDTH, LCD_HEIGHT);
160} 160}
161
162/* (Mis)use LCD framebuffer as a temporary buffer */
163void lcd_blit_yuv(unsigned char * const src[3],
164 int src_x, int src_y, int stride,
165 int x, int y, int width, int height)
166{
167 unsigned char const * yuv_src[3];
168 register off_t z;
169
170 if(!lcd_is_on)
171 return;
172
173 z = stride * src_y;
174 yuv_src[0] = src[0] + z + src_x;
175 yuv_src[1] = src[1] + (z >> 2) + (src_x >> 1);
176 yuv_src[2] = src[2] + (yuv_src[1] - src[1]);
177
178 commit_discard_dcache(); // XXX range
179
180 __cpm_start_ipu();
181
182 IPU_STOP_IPU();
183 IPU_RESET_IPU();
184 IPU_CLEAR_END_FLAG();
185
186 IPU_DISABLE_RSIZE();
187 IPU_DISABLE_IRQ();
188
189 IPU_SET_INFMT(INFMT_YUV420);
190 IPU_SET_OUTFMT(OUTFMT_RGB565);
191
192 IPU_SET_IN_FM(width, height);
193 IPU_SET_Y_STRIDE(stride);
194 IPU_SET_UV_STRIDE(stride, stride);
195
196 IPU_SET_Y_ADDR(PHYSADDR((unsigned long)yuv_src[0]));
197 IPU_SET_U_ADDR(PHYSADDR((unsigned long)yuv_src[1]));
198 IPU_SET_V_ADDR(PHYSADDR((unsigned long)yuv_src[2]));
199 IPU_SET_OUT_ADDR(PHYSADDR((unsigned long)FBADDR(y,x)));
200
201 IPU_SET_OUT_FM(height, width);
202 IPU_SET_OUT_STRIDE(height);
203
204 IPU_SET_CSC_C0_COEF(YUV_CSC_C0);
205 IPU_SET_CSC_C1_COEF(YUV_CSC_C1);
206 IPU_SET_CSC_C2_COEF(YUV_CSC_C2);
207 IPU_SET_CSC_C3_COEF(YUV_CSC_C3);
208 IPU_SET_CSC_C4_COEF(YUV_CSC_C4);
209
210 IPU_RUN_IPU();
211
212 while(!(IPU_POLLING_END_FLAG()) && IPU_IS_ENABLED());
213
214 IPU_CLEAR_END_FLAG();
215 IPU_STOP_IPU();
216 IPU_RESET_IPU();
217
218 __cpm_stop_ipu();
219
220 /* YUV speed is limited by LCD speed */
221 lcd_update_rect(y, x, height, width);
222}