I am seeking some help / directions as I am developing / testing a DRM based MIPI-DSI driver for a display.
My test platform is Bullseye Lite, Pi-3B : armv7l, Kernel 6.1.21-v7+ and I'm using DSI0 (two lanes on
the 15 pin connector). I have tested these with both dtoverlay of KMS vc4-kms-v3d as well as the FKMS vc4-fkms-v3d.
I have looked at some existing DRM/DSI drivers and put together a driver as a kernel module (compiled to an XX.ko) and a DT (compiled to a DTBO for overlay) for testing.
The relevant DT fragment attaches under "target = <&dsi0>" -- as I am using the DSI0 interface.
I dtoverlay the DTBO manually, and then insmod the XX.ko.
I have placed printk(..) prints on all driver entry points to figure out what's going on.
From printk outputs, I see that:
XX_dsi_probe called --> i.e. the probe function is getting called, so far so good.
The probe function then proceeds to call drm_panel_init(..) with our driver structure specifying entry points /
function pointers for .prepare, .unprepare, .enable, .disable and .get_modes. This was successful (returned 0).
After that the probe function calls drm_panel_add() with the pointer to the panel object,
and also mipi_dsi_attach() -- these are also successful.
However, beyond that point I do not see any driver functions like .prepare or .enable being invoked.
(There are printk's on every entry point).
I was expecting an FB device (like /dev/fbX) to appear, but found none (I have tried FKMS too, same results).
No new devices appeared under /dev/dri/ either. (There was a /dev/dri/card0 and a /dev/dri/renderD128, they are GPU card and GPU render respectively).
Am I missing some steps? What should I try next? Do I need to get Xorg going to see if discovers a DRM device on its own? Will any devices appear under /dev which I should look for?
Appreciate any help / guidance.
Thanks
My test platform is Bullseye Lite, Pi-3B : armv7l, Kernel 6.1.21-v7+ and I'm using DSI0 (two lanes on
the 15 pin connector). I have tested these with both dtoverlay of KMS vc4-kms-v3d as well as the FKMS vc4-fkms-v3d.
I have looked at some existing DRM/DSI drivers and put together a driver as a kernel module (compiled to an XX.ko) and a DT (compiled to a DTBO for overlay) for testing.
The relevant DT fragment attaches under "target = <&dsi0>" -- as I am using the DSI0 interface.
I dtoverlay the DTBO manually, and then insmod the XX.ko.
I have placed printk(..) prints on all driver entry points to figure out what's going on.
From printk outputs, I see that:
XX_dsi_probe called --> i.e. the probe function is getting called, so far so good.
The probe function then proceeds to call drm_panel_init(..) with our driver structure specifying entry points /
function pointers for .prepare, .unprepare, .enable, .disable and .get_modes. This was successful (returned 0).
After that the probe function calls drm_panel_add() with the pointer to the panel object,
and also mipi_dsi_attach() -- these are also successful.
However, beyond that point I do not see any driver functions like .prepare or .enable being invoked.
(There are printk's on every entry point).
I was expecting an FB device (like /dev/fbX) to appear, but found none (I have tried FKMS too, same results).
No new devices appeared under /dev/dri/ either. (There was a /dev/dri/card0 and a /dev/dri/renderD128, they are GPU card and GPU render respectively).
Am I missing some steps? What should I try next? Do I need to get Xorg going to see if discovers a DRM device on its own? Will any devices appear under /dev which I should look for?
Appreciate any help / guidance.
Thanks
Statistics: Posted by ajith-n-XS — Mon Jul 08, 2024 4:54 am