[Letux-kernel] drm/omap: Remove panel-dpi driver

H. Nikolaus Schaller hns at goldelico.com
Fri Apr 19 12:12:02 CEST 2019


Hi,

> Am 18.04.2019 um 21:59 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> 
> Hi Tomi,
> just a short update.
> 
>> Am 11.04.2019 um 09:19 schrieb Tomi Valkeinen <tomi.valkeinen at ti.com>:
>> 
>>>>>> You will need the panel data to be added to the simple panel driver, as
>>>>>> it won't read the timings from the DT (unfortunately, in my opinion).
>>>>> 
>>>>> Hm. How does this work? Is there a description? I have no experience with
>>>>> DRM simple panel.
>>>> 
>>>> See drivers/gpu/drm/panel/panel-simple.c, it just has a list of
>>>> compatibles, and pointers to the (more or less) same data as is in the
>>>> DT. And see a commit that adds a new panel, e.g. "drm/panel: simple: Add
>>>> OSD070T1718-19TS panel support".
>>> 
>>> Ok, I see. So the task is converting the nice and tested DTS properties to
>>> magic numbers in code... Let's hope without introducing new bugs.
> 
> I have started with this and it was easy to add new panels to the database
> in panel-simple. But it seems not to probe successfully and omapdss does
> not initialize. Even if I modprobe panel_simple manually.
> 
> The DTS looks like (is still working with 5.1 panel-dpi driver):
> 
> / {
> 	model = "Goldelico GTA04b3/Letux 7004";
> 	lcd: lcd {
> 		compatible =	"sharp,lq070y3dg3b",
> 				"panel-dpi";
> 		label = "lcd";
> 		enable-gpios = <&gpio1 12 0>;
> 
> 		panel-timing {
> 			clock-frequency = <33260000>;
> 
> 			hback-porch = <64>;
> 			hactive = <800>;
> 			hfront-porch = <64>;
> 			hsync-len = <128>;
> 
> 			vback-porch = <35>;
> 			vactive = <480>;
> 			vfront-porch = <8>;
> 			vsync-len = <2>;
> 
> 			hsync-active = <0>;
> 			vsync-active = <0>;
> 			de-active = <1>;
> 			pixelclk-active = <1>;
> 
> 		};
> 
> 		port {
> 			lcd_in: endpoint {
> 				remote-endpoint = <&dpi_out>;
> 			};
> 		};
> 	};
> };
> 
> and the module database knows the compatible string:
> 
> root at letux:~# modprobe -c | fgrep sharp,lq070y3dg3b
> alias of:N*T*Csharp,lq070y3dg3b panel_simple
> alias of:N*T*Csharp,lq070y3dg3bC* panel_simple
> root at letux:~# 
> 
> Next thing I plan do is to find out why the panel-simple driver is not matched
> by the panel DTS record.

There is something strange:

root at letux:/proc/device-tree/lcd# xxd compatible
0000000: 6f6d 6170 6473 732c 7368 6172 702c 6c71  omapdss,sharp,lq
0000010: 3037 3079 3364 6733 6200 6f6d 6170 6473  070y3dg3b.omapds
0000020: 732c 7061 6e65 6c2d 6470 6900            s,panel-dpi.
root at letux:/proc/device-tree/lcd# fdtdump /sys/firmware/fdt | fgrep lq070
        compatible = "sharp,lq070y3dg3b", "panel-dpi";
root at letux:/proc/device-tree/lcd# 

which means that somehow the device tree is rewritten to prefix the panel name
by "omapdss,".

What I have done is to use 5.1-rc5, apply the "drm/omap: Remove panel-dpi driver"
patch and add database records to panel-simple.

If I add to panel-simple
 	}, {
		.compatible = "omapdss,sharp,lq070y3dg3b",
		.data = &sharp_lq070y3dg3b,
	}, {

the driver is loaded during boot, but still not working. Probing of omapdss_dss
fails and I don't get a /dev/fb0.

Am I missing another patch from linux-next to make panel-dpi removal completely work?

BR and thanks,
Nikolaus



More information about the Letux-kernel mailing list