We have a custom board equiped with a SAMA5d36 and a LCD touchscreen.
We have read this page to setup the atmel-hlcd driver.
linux4sam/bin/view/Linux4SAM/UsingAtmelDRMDriver
Our kernel is Linux 4.1.0-linux4sam_5.1.
Buildroot-2016.02
With a Display 640x480 everything is working fine. (ETMV570G2DHU)
Now we have another Display (same family) with a resolution 800x480. (ETM0500G0DH6)
We have tried to configure the atmel-hlcd driver, but it still does not work.
When I first boot up Linux, the screen flashes white and some vertical lines are displayed... nothing else after that.
When I run "modetest -M atmel-hlcdc -c", I see that I don't have "modes" for this Display. <- Something wrong with the driver???
Code: Select all
buildroot:~# modetest -M atmel-hlcdc -c
trying to open device 'i915'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...failed
trying to open device 'rockchip'...failed
trying to open device 'atmel-hlcdc'...done
Connectors:
id encoder status name size (mm) modes encoders
18 0 connected LVDS-1 108x64 0 17
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 3
Code: Select all
buildroot:~# modetest -M atmel-hlcdc -c
trying to open device 'i915'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...failed
trying to open device 'rockchip'...failed
trying to open device 'atmel-hlcdc'...done
Connectors:
id encoder status name size (mm) modes encoders
18 17 connected LVDS-1 108x64 1 17
[b]modes:
name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
640x480 60 640 656 720 800 480 481 484 497 flags: nhsync, pvsync; type: userdf[/b]
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
Here is part of our device tree
Code: Select all
hlcdc: hlcdc@f0030000 {
status = "okay";
hlcdc-display-controller {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb666>;
port@0 {
hlcdc_panel_output: endpoint@0 {
reg = <0>;
remote-endpoint = <&panel_input>;
};
};
};
};
panel: panel {
// compatible = "edt,et057090dhu", "simple-panel";//<- This is working fine: Display 640x480 ETMV570G2DHU
compatible = "edt,etm0500g0dh6", "simple-panel";//<- This is not working: Display 800x480 ETM0500G0DH6
backlight = <&backlight>;
power-supply = <&panel_reg>;
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
panel_input: endpoint@0 {
reg = <0>;
remote-endpoint = <&hlcdc_panel_output>;
};
};
};
Code: Select all
static const struct drm_display_mode edt_etm0500g0dh6_mode = {
.clock = 33260,
.hdisplay = 800,
.hsync_start = 800 + 40,
.hsync_end = 800 + 40 + 128,
.htotal = 800 + 40 + 128 + 88,
.vdisplay = 480,
.vsync_start = 480 + 10,
.vsync_end = 480 + 10 + 2,
.vtotal = 480 + 10 + 2 + 35,
.vrefresh = 60,
.flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
};
static const struct panel_desc edt_etm0500g0dh6 = {
.modes = &edt_etm0500g0dh6_mode,
.num_modes = 1,
.bpc = 6,
.size = {
.width = 108,
.height = 64,
},
};
Thanks for any suggestion,
Ramiro.