diff options
Diffstat (limited to 'drivers/video/cyblafb.c')
-rw-r--r-- | drivers/video/cyblafb.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/video/cyblafb.c b/drivers/video/cyblafb.c index ae2762cb5608..6992100a508c 100644 --- a/drivers/video/cyblafb.c +++ b/drivers/video/cyblafb.c | |||
@@ -410,20 +410,21 @@ static void cyblafb_imageblit(struct fb_info *info, | |||
410 | out32(GE0C,point(image->dx+image->width-1,image->dy+image->height-1)); | 410 | out32(GE0C,point(image->dx+image->width-1,image->dy+image->height-1)); |
411 | 411 | ||
412 | while(index < index_end) { | 412 | while(index < index_end) { |
413 | const char *p = image->data + index; | ||
413 | for(i=0;i<width_dds;i++) { | 414 | for(i=0;i<width_dds;i++) { |
414 | out32(GE9C,*((u32*) ((u32)image->data + index))); | 415 | out32(GE9C,*(u32*)p); |
416 | p+=4; | ||
415 | index+=4; | 417 | index+=4; |
416 | } | 418 | } |
417 | switch(width_dbs) { | 419 | switch(width_dbs) { |
418 | case 0: break; | 420 | case 0: break; |
419 | case 8: out32(GE9C,*((u8*)((u32)image->data+index))); | 421 | case 8: out32(GE9C,*(u8*)p); |
420 | index+=1; | 422 | index+=1; |
421 | break; | 423 | break; |
422 | case 16: out32(GE9C,*((u16*)((u32)image->data+index))); | 424 | case 16: out32(GE9C,*(u16*)p); |
423 | index+=2; | 425 | index+=2; |
424 | break; | 426 | break; |
425 | case 24: out32(GE9C,(u32)(*((u16*)((u32)image->data+index))) | | 427 | case 24: out32(GE9C,*(u16*)p | *(u8*)(p+2)<<16); |
426 | (u32)(*((u8*)((u32)image->data+index+2)))<<16); | ||
427 | index+=3; | 428 | index+=3; |
428 | break; | 429 | break; |
429 | } | 430 | } |