diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2012-02-22 21:18:05 +1100 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2012-02-28 11:44:59 +1100 |
commit | b37e6bc8c119289aca8740dd5e3b60d72f9d6b40 (patch) | |
tree | 7ee9d491811c950943f0fc068d2e2b460ff05c6d /firmware/target/arm | |
parent | 15c69b8bafc3e89e1a825b5bbefef4a97f0001b1 (diff) | |
download | rockbox-b37e6bc8c119289aca8740dd5e3b60d72f9d6b40.tar.gz rockbox-b37e6bc8c119289aca8740dd5e3b60d72f9d6b40.zip |
lcd drivers: Convert lcd_[remote_]framebuffer to a pointer
Change all lcd drivers to using a pointer to the static framebuffer
instead of directly accessing the static array. This will let us
later do fun things like dynamic framebuffer sizes (RaaA) or
ability to use different buffers for different layers (dynamic
skin backdrops!)
Change-Id: I0a4d58a9d7b55e6c932131b929e5d4c9f9414b06
Diffstat (limited to 'firmware/target/arm')
36 files changed, 53 insertions, 53 deletions
diff --git a/firmware/target/arm/as3525/lcd-fuze.c b/firmware/target/arm/as3525/lcd-fuze.c index 2acc7b3bf9..b2033738b6 100644 --- a/firmware/target/arm/as3525/lcd-fuze.c +++ b/firmware/target/arm/as3525/lcd-fuze.c | |||
@@ -332,7 +332,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
332 | 332 | ||
333 | lcd_write_cmd(R_WRITE_DATA_2_GRAM); | 333 | lcd_write_cmd(R_WRITE_DATA_2_GRAM); |
334 | 334 | ||
335 | ptr = &lcd_framebuffer[y][x]; | 335 | ptr = FBADDR(x,y); |
336 | 336 | ||
337 | do | 337 | do |
338 | { | 338 | { |
diff --git a/firmware/target/arm/as3525/lcd-ssd1303.c b/firmware/target/arm/as3525/lcd-ssd1303.c index 213f12a424..9fcc85d243 100644 --- a/firmware/target/arm/as3525/lcd-ssd1303.c +++ b/firmware/target/arm/as3525/lcd-ssd1303.c | |||
@@ -273,7 +273,7 @@ void lcd_update(void) | |||
273 | lcd_write_command (LCD_CNTL_HIGHCOL | ((offset >> 4) & 0xf)); | 273 | lcd_write_command (LCD_CNTL_HIGHCOL | ((offset >> 4) & 0xf)); |
274 | lcd_write_command (LCD_CNTL_LOWCOL | (offset & 0xf)); | 274 | lcd_write_command (LCD_CNTL_LOWCOL | (offset & 0xf)); |
275 | 275 | ||
276 | lcd_write_data (lcd_framebuffer[y], LCD_WIDTH); | 276 | lcd_write_data (FBADDR(0, y), LCD_WIDTH); |
277 | } | 277 | } |
278 | } | 278 | } |
279 | 279 | ||
@@ -304,6 +304,6 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
304 | lcd_write_command (LCD_CNTL_HIGHCOL | (((x+offset) >> 4) & 0xf)); | 304 | lcd_write_command (LCD_CNTL_HIGHCOL | (((x+offset) >> 4) & 0xf)); |
305 | lcd_write_command (LCD_CNTL_LOWCOL | ((x+offset) & 0xf)); | 305 | lcd_write_command (LCD_CNTL_LOWCOL | ((x+offset) & 0xf)); |
306 | 306 | ||
307 | lcd_write_data (&lcd_framebuffer[y][x], width); | 307 | lcd_write_data (FBADDR(x,y), width); |
308 | } | 308 | } |
309 | } | 309 | } |
diff --git a/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c b/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c index 3952171e7e..7673b529cc 100644 --- a/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c +++ b/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c | |||
@@ -426,7 +426,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
426 | 426 | ||
427 | /* write to GRAM */ | 427 | /* write to GRAM */ |
428 | for (row = y; row < y_end; row++) { | 428 | for (row = y; row < y_end; row++) { |
429 | lcd_write_data(&lcd_framebuffer[row][x], width); | 429 | lcd_write_data(FBADDR(x,row), width); |
430 | } | 430 | } |
431 | } | 431 | } |
432 | 432 | ||
diff --git a/firmware/target/arm/as3525/sansa-e200v2/lcd-e200v2.c b/firmware/target/arm/as3525/sansa-e200v2/lcd-e200v2.c index f875b40c05..2c80f89ff7 100644 --- a/firmware/target/arm/as3525/sansa-e200v2/lcd-e200v2.c +++ b/firmware/target/arm/as3525/sansa-e200v2/lcd-e200v2.c | |||
@@ -488,7 +488,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
488 | lcd_window(x, y, x+width-1, y+height-1); | 488 | lcd_window(x, y, x+width-1, y+height-1); |
489 | lcd_write_cmd(R_WRITE_DATA_2_GRAM); | 489 | lcd_write_cmd(R_WRITE_DATA_2_GRAM); |
490 | 490 | ||
491 | ptr = &lcd_framebuffer[y][x]; | 491 | ptr = FBADDR(x,y); |
492 | 492 | ||
493 | do | 493 | do |
494 | { | 494 | { |
diff --git a/firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c b/firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c index c2e80ad1fc..b25fff8c3b 100644 --- a/firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c +++ b/firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c | |||
@@ -533,12 +533,12 @@ void lcd_update_rect(int x, int y, int w, int h) | |||
533 | */ | 533 | */ |
534 | if(w == LCD_WIDTH) | 534 | if(w == LCD_WIDTH) |
535 | { | 535 | { |
536 | memcpy((void *)FRAME, &lcd_framebuffer[y][x], w * h * sizeof(fb_data)); | 536 | memcpy((void *)FRAME, FBADDR(x,y), w * h * sizeof(fb_data)); |
537 | } | 537 | } |
538 | else | 538 | else |
539 | { | 539 | { |
540 | for(int i = 0; i < h; i++) | 540 | for(int i = 0; i < h; i++) |
541 | memcpy((fb_data *)FRAME + i * w, &lcd_framebuffer[y + i][x], w * sizeof(fb_data)); | 541 | memcpy((fb_data *)FRAME + i * w, FBADDR(x,y + i), w * sizeof(fb_data)); |
542 | } | 542 | } |
543 | /* WARNING The LCDIF has a limitation on the vertical count ! In 16-bit packed mode | 543 | /* WARNING The LCDIF has a limitation on the vertical count ! In 16-bit packed mode |
544 | * (which we used, ie 16-bit per pixel, 2 pixels per 32-bit words), the v_count | 544 | * (which we used, ie 16-bit per pixel, 2 pixels per 32-bit words), the v_count |
@@ -599,10 +599,10 @@ void lcd_blit_yuv(unsigned char * const src[3], | |||
599 | linecounter = height >> 1; | 599 | linecounter = height >> 1; |
600 | 600 | ||
601 | #if LCD_WIDTH >= LCD_HEIGHT | 601 | #if LCD_WIDTH >= LCD_HEIGHT |
602 | dst = &lcd_framebuffer[y][x]; | 602 | dst = FBADDR(x,y); |
603 | row_end = dst + width; | 603 | row_end = dst + width; |
604 | #else | 604 | #else |
605 | dst = &lcd_framebuffer[x][LCD_WIDTH - y - 1]; | 605 | dst = FBADDR(LCD_WIDTH - y - 1,x); |
606 | row_end = dst + LCD_WIDTH * width; | 606 | row_end = dst + LCD_WIDTH * width; |
607 | #endif | 607 | #endif |
608 | 608 | ||
diff --git a/firmware/target/arm/ipod/lcd-color_nano.c b/firmware/target/arm/ipod/lcd-color_nano.c index 589e8654ae..c7676fa721 100644 --- a/firmware/target/arm/ipod/lcd-color_nano.c +++ b/firmware/target/arm/ipod/lcd-color_nano.c | |||
@@ -280,7 +280,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
280 | 280 | ||
281 | lcd_setup_drawing_region(x, y, width, height); | 281 | lcd_setup_drawing_region(x, y, width, height); |
282 | 282 | ||
283 | addr = (unsigned long*)&lcd_framebuffer[y][x]; | 283 | addr = (unsigned long*)FBADDR(x, y); |
284 | 284 | ||
285 | while (height > 0) { | 285 | while (height > 0) { |
286 | int r, h, pixels_to_write; | 286 | int r, h, pixels_to_write; |
diff --git a/firmware/target/arm/ipod/lcd-gray.c b/firmware/target/arm/ipod/lcd-gray.c index 11d4cba2f5..d8695cdb10 100644 --- a/firmware/target/arm/ipod/lcd-gray.c +++ b/firmware/target/arm/ipod/lcd-gray.c | |||
@@ -340,10 +340,10 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
340 | 340 | ||
341 | #if defined(IPOD_MINI) || defined(IPOD_MINI2G) | 341 | #if defined(IPOD_MINI) || defined(IPOD_MINI2G) |
342 | if (pix_offset == -2) | 342 | if (pix_offset == -2) |
343 | lcd_write_data_shifted(&lcd_framebuffer[y][2*x], width); | 343 | lcd_write_data_shifted(FBADDR(2*x, y), width); |
344 | else | 344 | else |
345 | #endif | 345 | #endif |
346 | lcd_write_data(&lcd_framebuffer[y][2*x], width); | 346 | lcd_write_data(FBADDR(2*x, y), width); |
347 | } | 347 | } |
348 | } | 348 | } |
349 | 349 | ||
diff --git a/firmware/target/arm/ipod/video/lcd-video.c b/firmware/target/arm/ipod/video/lcd-video.c index c499e9f745..27d889aafa 100644 --- a/firmware/target/arm/ipod/video/lcd-video.c +++ b/firmware/target/arm/ipod/video/lcd-video.c | |||
@@ -410,7 +410,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
410 | /* Prevent the tick from triggering BCM updates while we're writing. */ | 410 | /* Prevent the tick from triggering BCM updates while we're writing. */ |
411 | lcd_block_tick(); | 411 | lcd_block_tick(); |
412 | 412 | ||
413 | addr = &lcd_framebuffer[y][x]; | 413 | addr = FBADDR(x, y); |
414 | bcmaddr = BCMA_CMDPARAM + (LCD_WIDTH*2) * y + (x << 1); | 414 | bcmaddr = BCMA_CMDPARAM + (LCD_WIDTH*2) * y + (x << 1); |
415 | 415 | ||
416 | if (width == LCD_WIDTH) | 416 | if (width == LCD_WIDTH) |
diff --git a/firmware/target/arm/iriver/h10/lcd-h10_20gb.c b/firmware/target/arm/iriver/h10/lcd-h10_20gb.c index df748a74fb..c7e339295d 100644 --- a/firmware/target/arm/iriver/h10/lcd-h10_20gb.c +++ b/firmware/target/arm/iriver/h10/lcd-h10_20gb.c | |||
@@ -527,7 +527,7 @@ void lcd_update_rect(int x0, int y0, int width, int height) | |||
527 | /* start drawing */ | 527 | /* start drawing */ |
528 | lcd_send_cmd(R_WRITE_DATA_2_GRAM); | 528 | lcd_send_cmd(R_WRITE_DATA_2_GRAM); |
529 | 529 | ||
530 | addr = (unsigned short*)&lcd_framebuffer[y0][x0]; | 530 | addr = (unsigned short*)FBADDR(x0,y0); |
531 | 531 | ||
532 | int c, r; | 532 | int c, r; |
533 | 533 | ||
diff --git a/firmware/target/arm/iriver/h10/lcd-h10_5gb.c b/firmware/target/arm/iriver/h10/lcd-h10_5gb.c index ce57af14d5..5e1ad9ce23 100644 --- a/firmware/target/arm/iriver/h10/lcd-h10_5gb.c +++ b/firmware/target/arm/iriver/h10/lcd-h10_5gb.c | |||
@@ -327,7 +327,7 @@ void lcd_update_rect(int x0, int y0, int width, int height) | |||
327 | /* start drawing */ | 327 | /* start drawing */ |
328 | lcd_send_cmd(R_WRITE_DATA_2_GRAM); | 328 | lcd_send_cmd(R_WRITE_DATA_2_GRAM); |
329 | 329 | ||
330 | addr = (unsigned long*)&lcd_framebuffer[y0][x0]; | 330 | addr = (unsigned long*)FBADDR(x0,y0); |
331 | 331 | ||
332 | while (height > 0) { | 332 | while (height > 0) { |
333 | int c, r; | 333 | int c, r; |
diff --git a/firmware/target/arm/lcd-c200_c200v2.c b/firmware/target/arm/lcd-c200_c200v2.c index f82f8a809e..38877ccac9 100644 --- a/firmware/target/arm/lcd-c200_c200v2.c +++ b/firmware/target/arm/lcd-c200_c200v2.c | |||
@@ -395,7 +395,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
395 | if ((width <= 0) || (height <= 0)) | 395 | if ((width <= 0) || (height <= 0)) |
396 | return; /* Nothing left to do. */ | 396 | return; /* Nothing left to do. */ |
397 | 397 | ||
398 | addr = &lcd_framebuffer[y][x]; | 398 | addr = FBADDR(x,y); |
399 | 399 | ||
400 | if (width <= 1) { | 400 | if (width <= 1) { |
401 | /* The X end address must be larger than the X start address, so we | 401 | /* The X end address must be larger than the X start address, so we |
diff --git a/firmware/target/arm/lcd-ssd1815.c b/firmware/target/arm/lcd-ssd1815.c index 35d8cf2275..891d4ef64d 100644 --- a/firmware/target/arm/lcd-ssd1815.c +++ b/firmware/target/arm/lcd-ssd1815.c | |||
@@ -303,7 +303,7 @@ void lcd_update(void) | |||
303 | lcd_write_command (LCD_CNTL_HIGHCOL | ((xoffset >> 4) & 0xf)); | 303 | lcd_write_command (LCD_CNTL_HIGHCOL | ((xoffset >> 4) & 0xf)); |
304 | lcd_write_command (LCD_CNTL_LOWCOL | (xoffset & 0xf)); | 304 | lcd_write_command (LCD_CNTL_LOWCOL | (xoffset & 0xf)); |
305 | 305 | ||
306 | lcd_write_data (lcd_framebuffer[y], LCD_WIDTH); | 306 | lcd_write_data (FBADDR(0, y), LCD_WIDTH); |
307 | } | 307 | } |
308 | } | 308 | } |
309 | 309 | ||
@@ -331,6 +331,6 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
331 | lcd_write_command (LCD_CNTL_HIGHCOL | (((x+xoffset) >> 4) & 0xf)); | 331 | lcd_write_command (LCD_CNTL_HIGHCOL | (((x+xoffset) >> 4) & 0xf)); |
332 | lcd_write_command (LCD_CNTL_LOWCOL | ((x+xoffset) & 0xf)); | 332 | lcd_write_command (LCD_CNTL_LOWCOL | ((x+xoffset) & 0xf)); |
333 | 333 | ||
334 | lcd_write_data (&lcd_framebuffer[y][x], width); | 334 | lcd_write_data (FBADDR(x,y), width); |
335 | } | 335 | } |
336 | } | 336 | } |
diff --git a/firmware/target/arm/olympus/mrobe-100/lcd-mr100.c b/firmware/target/arm/olympus/mrobe-100/lcd-mr100.c index a0ea2a6aab..d336ad7419 100644 --- a/firmware/target/arm/olympus/mrobe-100/lcd-mr100.c +++ b/firmware/target/arm/olympus/mrobe-100/lcd-mr100.c | |||
@@ -239,7 +239,7 @@ void lcd_update(void) | |||
239 | lcd_write_command(cmd1); | 239 | lcd_write_command(cmd1); |
240 | lcd_write_command(cmd2); | 240 | lcd_write_command(cmd2); |
241 | 241 | ||
242 | lcd_write_data (lcd_framebuffer[y], LCD_WIDTH); | 242 | lcd_write_data (FBADDR(0, y), LCD_WIDTH); |
243 | } | 243 | } |
244 | } | 244 | } |
245 | 245 | ||
@@ -271,6 +271,6 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
271 | lcd_write_command(cmd1); | 271 | lcd_write_command(cmd1); |
272 | lcd_write_command(cmd2); | 272 | lcd_write_command(cmd2); |
273 | 273 | ||
274 | lcd_write_data (&lcd_framebuffer[y][x], width); | 274 | lcd_write_data (FBADDR(x,y), width); |
275 | } | 275 | } |
276 | } | 276 | } |
diff --git a/firmware/target/arm/olympus/mrobe-100/lcd-remote-mr100.c b/firmware/target/arm/olympus/mrobe-100/lcd-remote-mr100.c index aa3d228952..edcdde7253 100644 --- a/firmware/target/arm/olympus/mrobe-100/lcd-remote-mr100.c +++ b/firmware/target/arm/olympus/mrobe-100/lcd-remote-mr100.c | |||
@@ -255,7 +255,7 @@ static void remote_update_lcd(void) | |||
255 | data[6] = (y + 1) << 3; /* y2 */ | 255 | data[6] = (y + 1) << 3; /* y2 */ |
256 | 256 | ||
257 | for (x = 0; x < RC_WIDTH; x++) | 257 | for (x = 0; x < RC_WIDTH; x++) |
258 | data[x + 7] = lcd_remote_framebuffer[y][x]; | 258 | data[x + 7] = FBREMOTEADDR(x,y); |
259 | 259 | ||
260 | remote_tx(data, RC_WIDTH + 7); | 260 | remote_tx(data, RC_WIDTH + 7); |
261 | 261 | ||
diff --git a/firmware/target/arm/pbell/vibe500/lcd-vibe500.c b/firmware/target/arm/pbell/vibe500/lcd-vibe500.c index 4cb073db7b..4dd2ec1206 100644 --- a/firmware/target/arm/pbell/vibe500/lcd-vibe500.c +++ b/firmware/target/arm/pbell/vibe500/lcd-vibe500.c | |||
@@ -483,7 +483,7 @@ void lcd_update_rect(int x0, int y0, int width, int height) | |||
483 | /* start drawing */ | 483 | /* start drawing */ |
484 | lcd_send_cmd(R_WRITE_DATA_2_GRAM); | 484 | lcd_send_cmd(R_WRITE_DATA_2_GRAM); |
485 | 485 | ||
486 | addr = &lcd_framebuffer[y0][x0]; | 486 | addr = FBADDR(x0, y0) |
487 | 487 | ||
488 | int c, r; | 488 | int c, r; |
489 | for (r = 0; r < height; r++) | 489 | for (r = 0; r < height; r++) |
diff --git a/firmware/target/arm/philips/hdd1630/lcd-hdd1630.c b/firmware/target/arm/philips/hdd1630/lcd-hdd1630.c index 500120a432..28bef09463 100644 --- a/firmware/target/arm/philips/hdd1630/lcd-hdd1630.c +++ b/firmware/target/arm/philips/hdd1630/lcd-hdd1630.c | |||
@@ -373,7 +373,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
373 | if ((width <= 0) || (height <= 0)) | 373 | if ((width <= 0) || (height <= 0)) |
374 | return; /* Nothing left to do. */ | 374 | return; /* Nothing left to do. */ |
375 | 375 | ||
376 | addr = &lcd_framebuffer[y][x]; | 376 | addr = FBADDR(x,y); |
377 | 377 | ||
378 | lcd_send_cmd(CASET); | 378 | lcd_send_cmd(CASET); |
379 | lcd_send_data(x); | 379 | lcd_send_data(x); |
diff --git a/firmware/target/arm/philips/hdd6330/lcd-hdd6330.c b/firmware/target/arm/philips/hdd6330/lcd-hdd6330.c index 328c270b5e..cdd3064bba 100644 --- a/firmware/target/arm/philips/hdd6330/lcd-hdd6330.c +++ b/firmware/target/arm/philips/hdd6330/lcd-hdd6330.c | |||
@@ -285,7 +285,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
285 | 285 | ||
286 | lcd_send_reg(LCD_REG_WRITE_DATA_2_GRAM); | 286 | lcd_send_reg(LCD_REG_WRITE_DATA_2_GRAM); |
287 | 287 | ||
288 | addr = (unsigned long*)&lcd_framebuffer[y][x]; | 288 | addr = (unsigned long*)FBADDR(x,y); |
289 | 289 | ||
290 | while (height > 0) | 290 | while (height > 0) |
291 | { | 291 | { |
diff --git a/firmware/target/arm/philips/sa9200/lcd-sa9200.c b/firmware/target/arm/philips/sa9200/lcd-sa9200.c index 3db308ed09..e30a298045 100644 --- a/firmware/target/arm/philips/sa9200/lcd-sa9200.c +++ b/firmware/target/arm/philips/sa9200/lcd-sa9200.c | |||
@@ -495,8 +495,8 @@ void lcd_update(void) | |||
495 | if (!display_on) | 495 | if (!display_on) |
496 | return; | 496 | return; |
497 | 497 | ||
498 | addr = &lcd_framebuffer[0][0]; | 498 | addr = FBADDR(0,0); |
499 | end = &lcd_framebuffer[LCD_HEIGHT - 1][LCD_WIDTH]; | 499 | end = FBADDR(LCD_WIDTH,LCD_HEIGHT - 1); |
500 | 500 | ||
501 | lcd_write_reg(R_HORIZ_RAM_ADDR_POS, (LCD_WIDTH - 1) << 8); | 501 | lcd_write_reg(R_HORIZ_RAM_ADDR_POS, (LCD_WIDTH - 1) << 8); |
502 | lcd_write_reg(R_VERT_RAM_ADDR_POS, (LCD_HEIGHT - 1) << 8); | 502 | lcd_write_reg(R_VERT_RAM_ADDR_POS, (LCD_HEIGHT - 1) << 8); |
@@ -533,7 +533,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
533 | if (height <= 0) | 533 | if (height <= 0) |
534 | return; /* Nothing left to do. */ | 534 | return; /* Nothing left to do. */ |
535 | 535 | ||
536 | addr = &lcd_framebuffer[y][x]; | 536 | addr = FBADDR(x,y); |
537 | 537 | ||
538 | lcd_write_reg(R_HORIZ_RAM_ADDR_POS, ((x + width - 1) << 8) | x); | 538 | lcd_write_reg(R_HORIZ_RAM_ADDR_POS, ((x + width - 1) << 8) | x); |
539 | lcd_write_reg(R_VERT_RAM_ADDR_POS, ((y + height - 1) << 8) | y); | 539 | lcd_write_reg(R_VERT_RAM_ADDR_POS, ((y + height - 1) << 8) | y); |
diff --git a/firmware/target/arm/pnx0101/iriver-ifp7xx/lcd-ifp7xx.c b/firmware/target/arm/pnx0101/iriver-ifp7xx/lcd-ifp7xx.c index c71e8fd6fb..1ad604d50c 100644 --- a/firmware/target/arm/pnx0101/iriver-ifp7xx/lcd-ifp7xx.c +++ b/firmware/target/arm/pnx0101/iriver-ifp7xx/lcd-ifp7xx.c | |||
@@ -191,7 +191,7 @@ void lcd_update(void) | |||
191 | lcd_write_command (LCD_CNTL_HIGHCOL); | 191 | lcd_write_command (LCD_CNTL_HIGHCOL); |
192 | lcd_write_command (LCD_CNTL_LOWCOL | 4); | 192 | lcd_write_command (LCD_CNTL_LOWCOL | 4); |
193 | 193 | ||
194 | lcd_write_data (lcd_framebuffer[y], LCD_WIDTH); | 194 | lcd_write_data (FBADDR(0, y), LCD_WIDTH); |
195 | } | 195 | } |
196 | } | 196 | } |
197 | 197 | ||
@@ -219,6 +219,6 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
219 | lcd_write_command (LCD_CNTL_HIGHCOL | (((x+4) >> 4) & 0xf)); | 219 | lcd_write_command (LCD_CNTL_HIGHCOL | (((x+4) >> 4) & 0xf)); |
220 | lcd_write_command (LCD_CNTL_LOWCOL | ((x+4) & 0xf)); | 220 | lcd_write_command (LCD_CNTL_LOWCOL | ((x+4) & 0xf)); |
221 | 221 | ||
222 | lcd_write_data (&lcd_framebuffer[y][x], width); | 222 | lcd_write_data (FBADDR(x,y), width); |
223 | } | 223 | } |
224 | } | 224 | } |
diff --git a/firmware/target/arm/rk27xx/lcd-hifiman.c b/firmware/target/arm/rk27xx/lcd-hifiman.c index 91e55894e5..21ca321d1f 100644 --- a/firmware/target/arm/rk27xx/lcd-hifiman.c +++ b/firmware/target/arm/rk27xx/lcd-hifiman.c | |||
@@ -162,7 +162,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
162 | 162 | ||
163 | for (px=x; px<pxmax; px++) | 163 | for (px=x; px<pxmax; px++) |
164 | for (py=y; py<pymax; py++) | 164 | for (py=y; py<pymax; py++) |
165 | lcd_data(lcd_framebuffer[py][px]); | 165 | lcd_data(FBADDR(px, py)); |
166 | } | 166 | } |
167 | 167 | ||
168 | /* Blit a YUV bitmap directly to the LCD */ | 168 | /* Blit a YUV bitmap directly to the LCD */ |
diff --git a/firmware/target/arm/rk27xx/rk27generic/lcd-rk27generic.c b/firmware/target/arm/rk27xx/rk27generic/lcd-rk27generic.c index b184630ebe..6b989a6dd7 100644 --- a/firmware/target/arm/rk27xx/rk27generic/lcd-rk27generic.c +++ b/firmware/target/arm/rk27xx/rk27generic/lcd-rk27generic.c | |||
@@ -191,7 +191,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
191 | for (py=y; py<pymax; py++) | 191 | for (py=y; py<pymax; py++) |
192 | { | 192 | { |
193 | for (px=x; px<pxmax; px++) | 193 | for (px=x; px<pxmax; px++) |
194 | LCD_DATA = lcd_pixel_transform(lcd_framebuffer[py][px]); | 194 | LCD_DATA = lcd_pixel_transform(FBADDR(px,py)); |
195 | } | 195 | } |
196 | } | 196 | } |
197 | 197 | ||
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/lcd-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/lcd-nano2g.c index 6434469881..13e5c5c1d4 100644 --- a/firmware/target/arm/s5l8700/ipodnano2g/lcd-nano2g.c +++ b/firmware/target/arm/s5l8700/ipodnano2g/lcd-nano2g.c | |||
@@ -394,7 +394,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
394 | lcd_setup_drawing_region(x, y, width, height); | 394 | lcd_setup_drawing_region(x, y, width, height); |
395 | 395 | ||
396 | /* Copy display bitmap to hardware */ | 396 | /* Copy display bitmap to hardware */ |
397 | p = &lcd_framebuffer[y][x]; | 397 | p = FBADDR(x,y); |
398 | if (LCD_WIDTH == width) { | 398 | if (LCD_WIDTH == width) { |
399 | /* Write all lines at once */ | 399 | /* Write all lines at once */ |
400 | lcd_write_line(p, height*LCD_WIDTH, LCD_BASE); | 400 | lcd_write_line(p, height*LCD_WIDTH, LCD_BASE); |
diff --git a/firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c b/firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c index 3420e92d62..5ed6c752b7 100644 --- a/firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c +++ b/firmware/target/arm/s5l8700/meizu-m3/lcd-m3.c | |||
@@ -295,7 +295,7 @@ void lcd_update(void) | |||
295 | LCD_WCMD = 0; | 295 | LCD_WCMD = 0; |
296 | LCD_WCMD = 0x22; | 296 | LCD_WCMD = 0x22; |
297 | } | 297 | } |
298 | for(p=&lcd_framebuffer[0][0], i=0;i<LCD_WIDTH*LCD_FBHEIGHT;++i, ++p) { | 298 | for(p=FBADDR(0,0), i=0;i<LCD_WIDTH*LCD_FBHEIGHT;++i, ++p) { |
299 | while (LCD_STATUS & STAT_FULL); | 299 | while (LCD_STATUS & STAT_FULL); |
300 | LCD_WDATA = RGB_UNPACK_RED(*p); | 300 | LCD_WDATA = RGB_UNPACK_RED(*p); |
301 | while (LCD_STATUS & STAT_FULL); | 301 | while (LCD_STATUS & STAT_FULL); |
diff --git a/firmware/target/arm/s5l8700/meizu-m6sp/lcd-m6sp.c b/firmware/target/arm/s5l8700/meizu-m6sp/lcd-m6sp.c index 6ab5c08a50..5e722d5a87 100644 --- a/firmware/target/arm/s5l8700/meizu-m6sp/lcd-m6sp.c +++ b/firmware/target/arm/s5l8700/meizu-m6sp/lcd-m6sp.c | |||
@@ -438,8 +438,8 @@ void lcd_init_device(void) | |||
438 | lcd_controller_init(); | 438 | lcd_controller_init(); |
439 | 439 | ||
440 | /* set framebuffer addresses */ | 440 | /* set framebuffer addresses */ |
441 | fb = (uint32_t) &lcd_framebuffer[0][0]; | 441 | fb = (uint32_t) FBADDR(0,0); |
442 | fb_end = (uint32_t) &lcd_framebuffer[LCD_HEIGHT][0]; | 442 | fb_end = (uint32_t) FBADDR(0,LCD_HEIGHT); |
443 | window = 2 * LCD_WIDTH; | 443 | window = 2 * LCD_WIDTH; |
444 | 444 | ||
445 | LCDB1SADDR1 = fb; | 445 | LCDB1SADDR1 = fb; |
diff --git a/firmware/target/arm/s5l8700/yps3/lcd-yps3.c b/firmware/target/arm/s5l8700/yps3/lcd-yps3.c index 3b57a50ec0..a9830bca57 100644 --- a/firmware/target/arm/s5l8700/yps3/lcd-yps3.c +++ b/firmware/target/arm/s5l8700/yps3/lcd-yps3.c | |||
@@ -306,7 +306,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
306 | lcd_set_position1(x, y); | 306 | lcd_set_position1(x, y); |
307 | 307 | ||
308 | for (h = 0; h < height; h++) { | 308 | for (h = 0; h < height; h++) { |
309 | p = &lcd_framebuffer[y][0]; | 309 | p = FBADDR(0,y); |
310 | for (w = 0; w < LCD_WIDTH; w++) { | 310 | for (w = 0; w < LCD_WIDTH; w++) { |
311 | while (LCD_STATUS & 0x10); | 311 | while (LCD_STATUS & 0x10); |
312 | LCD_WDATA = *p++; | 312 | LCD_WDATA = *p++; |
@@ -319,7 +319,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
319 | lcd_set_position2(x, y); | 319 | lcd_set_position2(x, y); |
320 | 320 | ||
321 | for (h = 0; h < height; h++) { | 321 | for (h = 0; h < height; h++) { |
322 | p = &lcd_framebuffer[y][x]; | 322 | p = FBADDR(x,y); |
323 | for (w = 0; w < width; w++) { | 323 | for (w = 0; w < width; w++) { |
324 | while (LCD_STATUS & 0x10); | 324 | while (LCD_STATUS & 0x10); |
325 | LCD_WDATA = *p++; | 325 | LCD_WDATA = *p++; |
diff --git a/firmware/target/arm/s5l8702/ipod6g/lcd-ipod6g.c b/firmware/target/arm/s5l8702/ipod6g/lcd-ipod6g.c index 84443551b9..f9dbab6180 100644 --- a/firmware/target/arm/s5l8702/ipod6g/lcd-ipod6g.c +++ b/firmware/target/arm/s5l8702/ipod6g/lcd-ipod6g.c | |||
@@ -428,7 +428,7 @@ void lcd_update_rect(int, int, int, int) ICODE_ATTR; | |||
428 | void lcd_update_rect(int x, int y, int width, int height) | 428 | void lcd_update_rect(int x, int y, int width, int height) |
429 | { | 429 | { |
430 | int pixels = width * height; | 430 | int pixels = width * height; |
431 | fb_data* p = &lcd_framebuffer[y][x]; | 431 | fb_data* p = FBADDR(x,y); |
432 | uint16_t* out = lcd_dblbuf[0]; | 432 | uint16_t* out = lcd_dblbuf[0]; |
433 | 433 | ||
434 | #ifdef HAVE_LCD_SLEEP | 434 | #ifdef HAVE_LCD_SLEEP |
diff --git a/firmware/target/arm/samsung/yh820/lcd-yh820.c b/firmware/target/arm/samsung/yh820/lcd-yh820.c index 4773e27185..10934621d7 100644 --- a/firmware/target/arm/samsung/yh820/lcd-yh820.c +++ b/firmware/target/arm/samsung/yh820/lcd-yh820.c | |||
@@ -347,7 +347,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
347 | if ((width <= 0) || (height <= 0)) | 347 | if ((width <= 0) || (height <= 0)) |
348 | return; /* Nothing left to do. */ | 348 | return; /* Nothing left to do. */ |
349 | 349 | ||
350 | addr = &lcd_framebuffer[y][x]; | 350 | addr = FBADDR(x,y); |
351 | 351 | ||
352 | if (width <= 1) { | 352 | if (width <= 1) { |
353 | lcd_send_command(R_ENTRY_MODE); /* The X end address must be larger */ | 353 | lcd_send_command(R_ENTRY_MODE); /* The X end address must be larger */ |
diff --git a/firmware/target/arm/samsung/yh920/lcd-yh920.c b/firmware/target/arm/samsung/yh920/lcd-yh920.c index d24396050a..5563c13f53 100644 --- a/firmware/target/arm/samsung/yh920/lcd-yh920.c +++ b/firmware/target/arm/samsung/yh920/lcd-yh920.c | |||
@@ -259,7 +259,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
259 | lcd_write_reg(LCD_CNTL_PAGE, y); | 259 | lcd_write_reg(LCD_CNTL_PAGE, y); |
260 | lcd_write_reg(LCD_CNTL_COLUMN, x); | 260 | lcd_write_reg(LCD_CNTL_COLUMN, x); |
261 | 261 | ||
262 | addr = &lcd_framebuffer[y][x]; | 262 | addr = FBADDR(x,y); |
263 | 263 | ||
264 | lcd_send_cmd(LCD_CNTL_DATA_WRITE); | 264 | lcd_send_cmd(LCD_CNTL_DATA_WRITE); |
265 | lcd_write_data(addr, width); | 265 | lcd_write_data(addr, width); |
diff --git a/firmware/target/arm/samsung/yh925/lcd-yh925.c b/firmware/target/arm/samsung/yh925/lcd-yh925.c index ceed443654..93bfb3a5f2 100644 --- a/firmware/target/arm/samsung/yh925/lcd-yh925.c +++ b/firmware/target/arm/samsung/yh925/lcd-yh925.c | |||
@@ -639,7 +639,7 @@ void lcd_update_rect(int x0, int y0, int width, int height) | |||
639 | /* start drawing */ | 639 | /* start drawing */ |
640 | lcd_send_cmd(R_WRITE_DATA_2_GRAM); | 640 | lcd_send_cmd(R_WRITE_DATA_2_GRAM); |
641 | 641 | ||
642 | addr = (unsigned short*)&lcd_framebuffer[y0][x0]; | 642 | addr = (unsigned short*)FBADDR(x0,y0); |
643 | 643 | ||
644 | int c, r; | 644 | int c, r; |
645 | 645 | ||
diff --git a/firmware/target/arm/sandisk/sansa-view/lcd-view.c b/firmware/target/arm/sandisk/sansa-view/lcd-view.c index 99c972704d..cc67e838f9 100644 --- a/firmware/target/arm/sandisk/sansa-view/lcd-view.c +++ b/firmware/target/arm/sandisk/sansa-view/lcd-view.c | |||
@@ -363,7 +363,7 @@ void lcd_update(void) | |||
363 | { | 363 | { |
364 | const fb_data *addr; | 364 | const fb_data *addr; |
365 | 365 | ||
366 | addr = &lcd_framebuffer[LCD_HEIGHT][LCD_WIDTH]; | 366 | addr = FBADDR(LCD_WIDTH,LCD_HEIGHT); |
367 | 367 | ||
368 | lcd_write_reg(0x20, 0x0); | 368 | lcd_write_reg(0x20, 0x0); |
369 | lcd_write_reg(0x21, 0x0); | 369 | lcd_write_reg(0x21, 0x0); |
diff --git a/firmware/target/arm/tcc77x/c100/lcd-S6B33B2.c b/firmware/target/arm/tcc77x/c100/lcd-S6B33B2.c index 4abd17741b..c53aadaf30 100644 --- a/firmware/target/arm/tcc77x/c100/lcd-S6B33B2.c +++ b/firmware/target/arm/tcc77x/c100/lcd-S6B33B2.c | |||
@@ -252,7 +252,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
252 | if ((width <= 0) || (height <= 0)) | 252 | if ((width <= 0) || (height <= 0)) |
253 | return; /* Nothing left to do. */ | 253 | return; /* Nothing left to do. */ |
254 | 254 | ||
255 | addr = &lcd_framebuffer[y][x]; | 255 | addr = FBADDR(x,y); |
256 | 256 | ||
257 | if (width <= 1) { | 257 | if (width <= 1) { |
258 | lcd_send_command(R_ENTRY_MODE); /* The X end address must be larger */ | 258 | lcd_send_command(R_ENTRY_MODE); /* The X end address must be larger */ |
diff --git a/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c b/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c index 5d2a2b8194..8b9a9bda83 100644 --- a/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c +++ b/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c | |||
@@ -211,7 +211,7 @@ void lcd_update_rect(int sx, int sy, int width, int height) | |||
211 | fb_data c; | 211 | fb_data c; |
212 | unsigned long color; | 212 | unsigned long color; |
213 | 213 | ||
214 | c = lcd_framebuffer[y][x]; | 214 | c = FBADDR(x,y); |
215 | color = | 215 | color = |
216 | ((c & 0x1f) << 1) | ((c & 0x7e0) << 1) | ((c & 0xf800) << | 216 | ((c & 0x1f) << 1) | ((c & 0x7e0) << 1) | ((c & 0xf800) << |
217 | 2); | 217 | 2); |
diff --git a/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c b/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c index 204a99f87c..5f623dc239 100644 --- a/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c +++ b/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c | |||
@@ -380,7 +380,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
380 | 380 | ||
381 | #if CONFIG_ORIENTATION == SCREEN_PORTRAIT | 381 | #if CONFIG_ORIENTATION == SCREEN_PORTRAIT |
382 | dst = (fb_data *)FRAME + LCD_WIDTH*y + x; | 382 | dst = (fb_data *)FRAME + LCD_WIDTH*y + x; |
383 | src = &lcd_framebuffer[y][x]; | 383 | src = FBADDR(x,y); |
384 | 384 | ||
385 | /* Copy part of the Rockbox framebuffer to the second framebuffer */ | 385 | /* Copy part of the Rockbox framebuffer to the second framebuffer */ |
386 | if (width < LCD_WIDTH) | 386 | if (width < LCD_WIDTH) |
@@ -394,7 +394,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
394 | lcd_copy_buffer_rect(dst, src, LCD_WIDTH*height, 1); | 394 | lcd_copy_buffer_rect(dst, src, LCD_WIDTH*height, 1); |
395 | } | 395 | } |
396 | #else | 396 | #else |
397 | src = &lcd_framebuffer[y][x]; | 397 | src = FBADDR(x,y); |
398 | 398 | ||
399 | register int xc, yc; | 399 | register int xc, yc; |
400 | register fb_data *start=FRAME + LCD_HEIGHT*(LCD_WIDTH-x-1) + y + 1; | 400 | register fb_data *start=FRAME + LCD_HEIGHT*(LCD_WIDTH-x-1) + y + 1; |
@@ -419,7 +419,7 @@ void lcd_update(void) | |||
419 | if (!lcd_on || direct_fb_access) | 419 | if (!lcd_on || direct_fb_access) |
420 | return; | 420 | return; |
421 | #if CONFIG_ORIENTATION == SCREEN_PORTRAIT | 421 | #if CONFIG_ORIENTATION == SCREEN_PORTRAIT |
422 | lcd_copy_buffer_rect((fb_data *)FRAME, &lcd_framebuffer[0][0], | 422 | lcd_copy_buffer_rect((fb_data *)FRAME, FBADDR(0,0), |
423 | LCD_WIDTH*LCD_HEIGHT, 1); | 423 | LCD_WIDTH*LCD_HEIGHT, 1); |
424 | #else | 424 | #else |
425 | lcd_update_rect(0, 0, LCD_WIDTH, LCD_HEIGHT); | 425 | lcd_update_rect(0, 0, LCD_WIDTH, LCD_HEIGHT); |
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c index 38631401f9..c3a96a3efd 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c | |||
@@ -500,12 +500,12 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
500 | if (width < LCD_WIDTH) | 500 | if (width < LCD_WIDTH) |
501 | { | 501 | { |
502 | /* Not full width - do line-by-line */ | 502 | /* Not full width - do line-by-line */ |
503 | lcd_copy_buffer_rect(dst, &lcd_framebuffer[y][x], width, height); | 503 | lcd_copy_buffer_rect(dst, FBADDR(x,y), width, height); |
504 | } | 504 | } |
505 | else | 505 | else |
506 | { | 506 | { |
507 | /* Full width - copy as one line */ | 507 | /* Full width - copy as one line */ |
508 | lcd_copy_buffer_rect(dst, &lcd_framebuffer[y][x], LCD_WIDTH*height, 1); | 508 | lcd_copy_buffer_rect(dst, FBADDR(x,y), LCD_WIDTH*height, 1); |
509 | } | 509 | } |
510 | #endif | 510 | #endif |
511 | 511 | ||
@@ -519,7 +519,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
519 | #else | 519 | #else |
520 | fb_data *src; | 520 | fb_data *src; |
521 | fb_data *dst; | 521 | fb_data *dst; |
522 | src = &lcd_framebuffer[0][0] + (x*LCD_HEIGHT + y); | 522 | src = FBADDR(0,0) + (x*LCD_HEIGHT + y); |
523 | dst = FRAME + (LCD_HEIGHT*(LCD_WIDTH-1) - x * LCD_HEIGHT + y); | 523 | dst = FRAME + (LCD_HEIGHT*(LCD_WIDTH-1) - x * LCD_HEIGHT + y); |
524 | 524 | ||
525 | while(width > 0) { | 525 | while(width > 0) { |
@@ -532,7 +532,7 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
532 | 532 | ||
533 | #else | 533 | #else |
534 | register fb_data *dst, *src; | 534 | register fb_data *dst, *src; |
535 | src = &lcd_framebuffer[y][x]; | 535 | src = FBADDR(x,y); |
536 | 536 | ||
537 | dst=FRAME + (LCD_NATIVE_WIDTH*(LCD_NATIVE_HEIGHT-1)) | 537 | dst=FRAME + (LCD_NATIVE_WIDTH*(LCD_NATIVE_HEIGHT-1)) |
538 | - LCD_NATIVE_WIDTH*x + y ; | 538 | - LCD_NATIVE_WIDTH*x + y ; |
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c index d8f55ee63d..5b8b2f9437 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c | |||
@@ -246,7 +246,7 @@ static void remote_tick(void) | |||
246 | for(i=7; i<remote_payload_size; i++) | 246 | for(i=7; i<remote_payload_size; i++) |
247 | { | 247 | { |
248 | remote_payload[i]= | 248 | remote_payload[i]= |
249 | lcd_remote_framebuffer[remote_payload[4]>>3][i+remote_draw_x-7]; | 249 | FBREMOTEADDR(i+remote_draw_x-7, remote_payload[4]>>3); |
250 | } | 250 | } |
251 | } | 251 | } |
252 | 252 | ||
diff --git a/firmware/target/arm/tms320dm320/sansa-connect/lcd-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/lcd-sansaconnect.c index 403ce182be..27eb0b407a 100644 --- a/firmware/target/arm/tms320dm320/sansa-connect/lcd-sansaconnect.c +++ b/firmware/target/arm/tms320dm320/sansa-connect/lcd-sansaconnect.c | |||
@@ -167,7 +167,7 @@ static void dma_lcd_copy_buffer_rect(int x, int y, int width, int height) | |||
167 | 167 | ||
168 | /* Set source and destination addresses */ | 168 | /* Set source and destination addresses */ |
169 | dst = (char*)(FRAME + LCD_WIDTH*y + x); | 169 | dst = (char*)(FRAME + LCD_WIDTH*y + x); |
170 | src = (char*)(&lcd_framebuffer[y][x]); | 170 | src = (char*)(FBADDR(x,y)); |
171 | 171 | ||
172 | /* Flush cache to memory */ | 172 | /* Flush cache to memory */ |
173 | commit_dcache(); | 173 | commit_dcache(); |