Igor
I guess I realized the condition what is causing the problem. Our product is based in your reference board and besides our lcd driver, I noticed there are other two drivers being loaded in the following order:
1) mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver lcd --> nxp fb
2) lcdif_init: 1 --> which indicates is the lcdif driver probe was triggered
2) LCD Driver: ==lcd_newhaven_probe (our lcd)
the mxc_sdc_fb and lcd_newhaven are calling the fb_set_var() function and causing the problem.
mxc_sdc_fb() falls in the following register function:
static int mxcfb_register(struct fb_info *fbi) {
...
...
<some code here>
...
...
if (!mxcfbi->late_init) {
fbi->var.activate |= FB_ACTIVATE_FORCE;
console_lock();
fbi->flags |= FBINFO_MISC_USEREVENT;
ret = fb_set_var(fbi, &fbi->var);
fbi->flags &= ~FBINFO_MISC_USEREVENT;
console_unlock();
if (ret < 0) {
dev_err(fbi->device, "Error fb_set_var ret:%d\n", ret);
goto err4;
}
and my LCD driver():
static void lcd_newhaven_init_fb(struct fb_info *info)
{
struct fb_var_screeninfo var;
memset(&var, 0, sizeof(var));
fb_videomode_to_var(&var, &video_modes[0]);
var.bits_per_pixel = DEF_BIT_PER_PIXEL;
var.activate = FB_ACTIVATE_ALL;
var.yres_virtual = var.yres * 3;
console_lock();
info->flags |= FBINFO_MISC_USEREVENT;
fb_set_var(info, &var);
info->flags &= ~FBINFO_MISC_USEREVENT;
console_unlock();
}
I am not sure why but the right way to implement this without this warning I mentioned in the first question. Could you please give me some advise and tell me what I am doing wrong ?
Many thanks!