Skip to contentSkip to conversation

drm/panel: simple: Add Ampire am800480b3tmqw

PATCH In review Adam Ford 2 participants 2 messages Nov 1, 2018 – Nov 2, 2018

Subsystems (3)
lore
Share & tools
lore

Adam Ford

author
#0 lore raw

PATCH 1/1 drm/panel: simple: Add Ampire am800480b3tmqw

This adds support for the Ampire am800480b3tmqw display, a 7" 24-bit RGB panel wtih 800x480 resolution.

drivers/gpu/drm/panel/panel-simple.c +28 -0
index 97964f7f2ace..71e878f63c5b 100644
@@ -436,6 +436,31 @@ static const struct panel_desc ampire_am800480r3tmqwa1h = {
 	.bus_format = MEDIA_BUS_FMT_RGB666_1X18,
 };
 
+static const struct drm_display_mode ampire_am800480b3tmqw_mode = {
+	.clock = 30000,
+	.hdisplay = 800,
+	.hsync_start = 800 + 210,
+	.hsync_end = 800 + 210 + 46,
+	.htotal = 800 + 210 + 46 + 0,
+	.vdisplay = 480,
+	.vsync_start = 480 + 22,
+	.vsync_end = 480 + 22 + 23,
+	.vtotal = 480 + 22 + 23 + 0,
+	.vrefresh = 60,
+	.flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC,
+};
+
+static const struct panel_desc ampire_am800480b3tmqw = {
+	.modes = &ampire_am800480b3tmqw_mode,
+	.num_modes = 1,
+	.bpc = 6,
+	.size = {
+		.width = 152,
+		.height = 91,
+	},
+	.bus_format = MEDIA_BUS_FMT_RBG888_1X24,
+};
+
 static const struct drm_display_mode auo_b101aw03_mode = {
 	.clock = 51450,
 	.hdisplay = 1024,
@@ -2330,6 +2355,9 @@ static const struct of_device_id platform_of_match[] = {
 	}, {
 		.compatible = "ampire,am800480r3tmqwa1h",
 		.data = &ampire_am800480r3tmqwa1h,
+	}, {
+		.compatible = "ampire,am800480b3tmqw",
+		.data = &ampire_am800480b3tmqw,
 	}, {
 		.compatible = "auo,b101aw03",
 		.data = &auo_b101aw03,
Signature · 1 line
2.17.1
#1 lore raw

Hi Adam

Quoted 16 lines · Adam Ford

This adds support for the Ampire am800480b3tmqw display, a 7" 24-bit RGB panel wtih 800x480 resolution.

drivers/gpu/drm/panel/panel-simple.c +3 -0
index 97964f7f2ace..71e878f63c5b 100644
@@ -436,6 +436,31 @@ static const struct panel_desc ampire_am800480r3tmqwa1h = {
 	.bus_format = MEDIA_BUS_FMT_RGB666_1X18,
 };
 
+static const struct drm_display_mode ampire_am800480b3tmqw_mode = {
+	.clock = 30000,
+	.hdisplay = 800,

drivers/gpu/drm/panel/panel-simple.c static const struct panel_desc ampire_am800480r3tmqwa1h = { · line 451

Quoted 10 lines
drivers/gpu/drm/panel/panel-simple.c +10 -0
+	.hsync_start = 800 + 210,
+	.hsync_end = 800 + 210 + 46,
+	.htotal = 800 + 210 + 46 + 0,
+	.vdisplay = 480,
+	.vsync_start = 480 + 22,
+	.vsync_end = 480 + 22 + 23,
+	.vtotal = 480 + 22 + 23 + 0,
+	.vrefresh = 60,
+	.flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC,
+};

+1 to see .flags specified

drivers/gpu/drm/panel/panel-simple.c static const struct panel_desc ampire_am800480r3tmqwa1h = { · line 462

Quoted 11 lines
drivers/gpu/drm/panel/panel-simple.c +11 -0
+
+static const struct panel_desc ampire_am800480b3tmqw = {
+	.modes = &ampire_am800480b3tmqw_mode,
+	.num_modes = 1,
+	.bpc = 6,
+	.size = {
+		.width = 152,
+		.height = 91,
+	},
+	.bus_format = MEDIA_BUS_FMT_RBG888_1X24,
+};

Likewise good to see .bus_format specified.

But .bus_flags are not specified.

Quoted 1 line

From the header file:

<<<<<<<<<<<<<<<<<<<<
#define DRM_BUS_FLAG_DE_LOW (1<<0)
#define DRM_BUS_FLAG_DE_HIGH (1<<1)
/* drive data on pos. edge */
#define DRM_BUS_FLAG_PIXDATA_POSEDGE (1<<2)
/* drive data on neg. edge */
#define DRM_BUS_FLAG_PIXDATA_NEGEDGE (1<<3)
/* data is transmitted MSB to LSB on the bus */
#define DRM_BUS_FLAG_DATA_MSB_TO_LSB (1<<4)
/* data is transmitted LSB to MSB on the bus */
#define DRM_BUS_FLAG_DATA_LSB_TO_MSB (1<<5)
/* drive sync on pos. edge */
#define DRM_BUS_FLAG_SYNC_POSEDGE (1<<6)
/* drive sync on neg. edge */
#define DRM_BUS_FLAG_SYNC_NEGEDGE (1<<7)

        /**
         * @bus_flags: Additional information (like pixel signal polarity) for
         * the pixel data on the bus, using DRM_BUS_FLAGS\_ defines.
         */
        u32 bus_flags;
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

<

Many panels leave out .bus_flags - and I wonder if this is because default is OK or because most other panels does so.

I had problems with my display that the text looked blurred when bus_flags was no specified (using defaults). This was one issue I had when migrating from 4.4 kernel to a recent kernel.

So therefore it would good to have .bus_flags specified too if for nothing else then for documentation purposes.

Sam