Hi Artur,
I have two LCD displays connected on the parallel interface.
I never saw anyone using two parallel LCD's simultaneously on a board with IMX6 SoC.
The examples you pointed me to show a combination of hdmi, lvds, LCD but nothing about 2 LCDs working simultaneously.
I have the sensation that this scenario was never tested.
The problem is that when the second fb registers it says that the ipu is already in use.
I did some search in kernel on why this problem occurs and I found an answer.
The problem seems to be in the "mxc_dispdrv.c" source at the function "mxc_dispdrv_gethandle".
I made a patch that now allows the fb to register both LCD interfaces, on the correct IPU's.
diff --git a/drivers/video/mxc/mxc_dispdrv.c b/drivers/video/mxc/mxc_dispdrv.c
index 5193c7d..5682df4 100644
--- a/drivers/video/mxc/mxc_dispdrv.c
+++ b/drivers/video/mxc/mxc_dispdrv.c
struct mxc_dispdrv_handle *mxc_dispdrv_gethandle(char *name,
struct mxc_dispdrv_setting *setting)
{
int ret, found = 0;
struct mxc_dispdrv_entry *entry;
mutex_lock(&dispdrv_lock);
list_for_each_entry(entry, &dispdrv_list, list) {
+ if(entry->active == true)
+ continue;
if (!strcmp(entry->drv->name, name) && (entry->drv->init)) {
ret = entry->drv->init((struct mxc_dispdrv_handle *)
entry, setting);
if (ret >= 0) {
entry->active = true;
found = 1;
break;
}
}
}
mutex_unlock(&dispdrv_lock);
return found ? (struct mxc_dispdrv_handle *)entry:ERR_PTR(-ENODEV);
}
It seems that before applying the patch, the same entry from the list was retrieved every time the funcion was called and the loop was breaking.
This was the cause of the error of ipu already in use.
I did not managed yet to make the second LCD display work since I have another problem with it but I expect it to work.
I will provide further information when I will have it.
Thank you!