build/patch/kernel/sun8i-default/02-0007-fbdev-fixes.patch.patch
2016-04-13 09:25:21 +02:00

106 lines
4.2 KiB
Diff

diff -Nur a/drivers/video/sunxi/disp2/disp/dev_fb.c b/drivers/video/sunxi/disp2/disp/dev_fb.c
--- a/drivers/video/sunxi/disp2/disp/dev_fb.c 2016-01-05 19:45:42.000000000 +0100
+++ b/drivers/video/sunxi/disp2/disp/dev_fb.c 2016-02-16 18:24:35.505409579 +0100
@@ -41,9 +41,6 @@
extern disp_drv_info g_disp_drv;
-#define FBHANDTOID(handle) ((handle) - 100)
-#define FBIDTOHAND(ID) ((ID) + 100)
-
static struct __fb_addr_para g_fb_addr;
s32 sunxi_get_fb_addr_para(struct __fb_addr_para *fb_addr_para)
@@ -535,8 +532,6 @@
for(sel = 0; sel < num_screens; sel++) {
if(sel==g_fbi.fb_mode[info->node]) {
- u32 buffer_num = 1;
- u32 y_offset = 0;
s32 chan = g_fbi.layer_hdl[info->node][0];
s32 layer_id = g_fbi.layer_hdl[info->node][1];
disp_layer_config config;
@@ -550,10 +545,10 @@
__wrn("fb %d, get_layer_config(%d,%d,%d) fail\n", info->node, sel, chan, layer_id);
return -1;
}
- config.info.fb.crop.x = ((long long)var->xoffset) << 32;
- config.info.fb.crop.y = ((unsigned long long)(var->yoffset + y_offset)) << 32;;
- config.info.fb.crop.width = ((long long)var->xres) << 32;
- config.info.fb.crop.height = ((long long)(var->yres / buffer_num)) << 32;
+ config.info.fb.crop.x = ((long long)(var->xoffset)) << 32;
+ config.info.fb.crop.y = ((long long)(var->yoffset)) << 32;
+ config.info.fb.crop.width = ((long long)(var->xres)) << 32;
+ config.info.fb.crop.height = ((long long)(var->yres)) << 32;
if(0 != mgr->set_layer_config(mgr, &config, 1)) {
__wrn("fb %d, set_layer_config(%d,%d,%d) fail\n", info->node, sel, chan, layer_id);
return -1;
@@ -615,25 +610,25 @@
if(sel==g_fbi.fb_mode[info->node]) {
struct fb_var_screeninfo *var = &info->var;
struct fb_fix_screeninfo * fix = &info->fix;
- u32 buffer_num = 1;
- u32 y_offset = 0;
s32 chan = g_fbi.layer_hdl[info->node][0];
s32 layer_id = g_fbi.layer_hdl[info->node][1];
disp_layer_config config;
struct disp_manager *mgr = g_disp_drv.mgr[sel];
- if(mgr && mgr->get_layer_config && mgr->set_layer_config) {
+ if(mgr && mgr->get_layer_config) {
config.channel = chan;
config.layer_id = layer_id;
mgr->get_layer_config(mgr, &config, 1);
}
var_to_disp_fb(&(config.info.fb), var, fix);
- config.info.fb.crop.x = var->xoffset;
- config.info.fb.crop.y = var->yoffset + y_offset;
- config.info.fb.crop.width = var->xres;
- config.info.fb.crop.height = var->yres / buffer_num;
- if(mgr && mgr->get_layer_config && mgr->set_layer_config)
+ config.info.fb.crop.x = ((long long)(var->xoffset)) << 32;
+ config.info.fb.crop.y = ((long long)(var->yoffset)) << 32;
+ config.info.fb.crop.width = ((long long)(var->xres)) << 32;
+ config.info.fb.crop.height = ((long long)(var->yres)) << 32;
+ config.info.screen_win.width = var->xres;
+ config.info.screen_win.height = var->yres;
+ if(mgr && mgr->set_layer_config)
mgr->set_layer_config(mgr, &config, 1);
}
}
@@ -1136,7 +1131,7 @@
for(sel = 0; sel < num_screens; sel++) {
if(sel == fb_para->fb_mode) {
- u32 y_offset = 0, src_width = xres, src_height = yres;
+ u32 src_width = xres, src_height = yres;
disp_video_timings tt;
struct disp_manager *mgr = NULL;
mgr = g_disp_drv.mgr[sel];
@@ -1170,13 +1165,13 @@
Fb_map_kernel_logo(sel, info);
}
config.info.screen_win.width = (0 == fb_para->output_width)? src_width:fb_para->output_width;
- config.info.screen_win.height = (0 == fb_para->output_height)? src_width:fb_para->output_height;
+ config.info.screen_win.height = (0 == fb_para->output_height)? src_height:fb_para->output_height;
config.info.mode = LAYER_MODE_BUFFER;
config.info.alpha_mode = 1;
config.info.alpha_value = 0xff;
- config.info.fb.crop.x = ((long long)0) << 32;
- config.info.fb.crop.y = ((long long)y_offset) << 32;
+ config.info.fb.crop.x = 0LL;
+ config.info.fb.crop.y = 0LL;
config.info.fb.crop.width = ((long long)src_width) << 32;
config.info.fb.crop.height = ((long long)src_height) << 32;
config.info.screen_win.x = 0;
@@ -1401,7 +1396,7 @@
for(fb_id=0; fb_id<FB_MAX; fb_id++) {
if(g_fbi.fbinfo[fb_id] != NULL) {
- display_fb_release(FBIDTOHAND(fb_id));
+ display_fb_release(fb_id);
}
}