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

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Apr 19 15:07:37 CEST 2019


Hi Nikolaus,

On Fri, Apr 19, 2019 at 12:12:02PM +0200, H. Nikolaus Schaller wrote:
> > Am 18.04.2019 um 21:59 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> >> 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?

You need to remove panel-dpi from the omapdss_of_fixups_whitelist[]
array in drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c. It looks like
I missed that. Would you like me to submit a patch or to do it yourself
?

-- 
Regards,

Laurent Pinchart


More information about the Letux-kernel mailing list