Commit 06db4b8b authored by Noralf Trønnes's avatar Noralf Trønnes

drm/modes: Add DRM_SIMPLE_MODE()

This adds a helper macro to specify modes that only contain info about
resolution.

v2: Actually set the width and height (Ilia Mirkin)

Cc: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Reviewed-by: default avatarSam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20190210131039.52664-5-noralf@tronnes.org
parent ba3bf37e
...@@ -181,7 +181,7 @@ static const struct drm_simple_display_pipe_funcs hx8357d_pipe_funcs = { ...@@ -181,7 +181,7 @@ static const struct drm_simple_display_pipe_funcs hx8357d_pipe_funcs = {
}; };
static const struct drm_display_mode yx350hv15_mode = { static const struct drm_display_mode yx350hv15_mode = {
TINYDRM_MODE(320, 480, 60, 75), DRM_SIMPLE_MODE(320, 480, 60, 75),
}; };
DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops); DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
......
...@@ -332,7 +332,7 @@ static const struct drm_simple_display_pipe_funcs ili9225_pipe_funcs = { ...@@ -332,7 +332,7 @@ static const struct drm_simple_display_pipe_funcs ili9225_pipe_funcs = {
}; };
static const struct drm_display_mode ili9225_mode = { static const struct drm_display_mode ili9225_mode = {
TINYDRM_MODE(176, 220, 35, 44), DRM_SIMPLE_MODE(176, 220, 35, 44),
}; };
DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops); DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
......
...@@ -137,7 +137,7 @@ static const struct drm_simple_display_pipe_funcs ili9341_pipe_funcs = { ...@@ -137,7 +137,7 @@ static const struct drm_simple_display_pipe_funcs ili9341_pipe_funcs = {
}; };
static const struct drm_display_mode yx240qv29_mode = { static const struct drm_display_mode yx240qv29_mode = {
TINYDRM_MODE(240, 320, 37, 49), DRM_SIMPLE_MODE(240, 320, 37, 49),
}; };
DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops); DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
......
...@@ -145,7 +145,7 @@ static const struct drm_simple_display_pipe_funcs mi0283qt_pipe_funcs = { ...@@ -145,7 +145,7 @@ static const struct drm_simple_display_pipe_funcs mi0283qt_pipe_funcs = {
}; };
static const struct drm_display_mode mi0283qt_mode = { static const struct drm_display_mode mi0283qt_mode = {
TINYDRM_MODE(320, 240, 58, 43), DRM_SIMPLE_MODE(320, 240, 58, 43),
}; };
DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops); DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
......
...@@ -860,28 +860,28 @@ static const uint32_t repaper_formats[] = { ...@@ -860,28 +860,28 @@ static const uint32_t repaper_formats[] = {
}; };
static const struct drm_display_mode repaper_e1144cs021_mode = { static const struct drm_display_mode repaper_e1144cs021_mode = {
TINYDRM_MODE(128, 96, 29, 22), DRM_SIMPLE_MODE(128, 96, 29, 22),
}; };
static const u8 repaper_e1144cs021_cs[] = { 0x00, 0x00, 0x00, 0x00, static const u8 repaper_e1144cs021_cs[] = { 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xff, 0x00 }; 0x00, 0x0f, 0xff, 0x00 };
static const struct drm_display_mode repaper_e1190cs021_mode = { static const struct drm_display_mode repaper_e1190cs021_mode = {
TINYDRM_MODE(144, 128, 36, 32), DRM_SIMPLE_MODE(144, 128, 36, 32),
}; };
static const u8 repaper_e1190cs021_cs[] = { 0x00, 0x00, 0x00, 0x03, static const u8 repaper_e1190cs021_cs[] = { 0x00, 0x00, 0x00, 0x03,
0xfc, 0x00, 0x00, 0xff }; 0xfc, 0x00, 0x00, 0xff };
static const struct drm_display_mode repaper_e2200cs021_mode = { static const struct drm_display_mode repaper_e2200cs021_mode = {
TINYDRM_MODE(200, 96, 46, 22), DRM_SIMPLE_MODE(200, 96, 46, 22),
}; };
static const u8 repaper_e2200cs021_cs[] = { 0x00, 0x00, 0x00, 0x00, static const u8 repaper_e2200cs021_cs[] = { 0x00, 0x00, 0x00, 0x00,
0x01, 0xff, 0xe0, 0x00 }; 0x01, 0xff, 0xe0, 0x00 };
static const struct drm_display_mode repaper_e2271cs021_mode = { static const struct drm_display_mode repaper_e2271cs021_mode = {
TINYDRM_MODE(264, 176, 57, 38), DRM_SIMPLE_MODE(264, 176, 57, 38),
}; };
static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f, static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
......
...@@ -312,7 +312,7 @@ static const struct drm_simple_display_pipe_funcs st7586_pipe_funcs = { ...@@ -312,7 +312,7 @@ static const struct drm_simple_display_pipe_funcs st7586_pipe_funcs = {
}; };
static const struct drm_display_mode st7586_mode = { static const struct drm_display_mode st7586_mode = {
TINYDRM_MODE(178, 128, 37, 27), DRM_SIMPLE_MODE(178, 128, 37, 27),
}; };
DEFINE_DRM_GEM_CMA_FOPS(st7586_fops); DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
......
...@@ -111,7 +111,7 @@ static const struct drm_simple_display_pipe_funcs jd_t18003_t01_pipe_funcs = { ...@@ -111,7 +111,7 @@ static const struct drm_simple_display_pipe_funcs jd_t18003_t01_pipe_funcs = {
}; };
static const struct drm_display_mode jd_t18003_t01_mode = { static const struct drm_display_mode jd_t18003_t01_mode = {
TINYDRM_MODE(128, 160, 28, 35), DRM_SIMPLE_MODE(128, 160, 28, 35),
}; };
DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops); DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
......
...@@ -138,6 +138,23 @@ enum drm_mode_status { ...@@ -138,6 +138,23 @@ enum drm_mode_status {
.vsync_start = (vss), .vsync_end = (vse), .vtotal = (vt), \ .vsync_start = (vss), .vsync_end = (vse), .vtotal = (vt), \
.vscan = (vs), .flags = (f) .vscan = (vs), .flags = (f)
/**
* DRM_SIMPLE_MODE - Simple display mode
* @hd: Horizontal resolution, width
* @vd: Vertical resolution, height
* @hd_mm: Display width in millimeters
* @vd_mm: Display height in millimeters
*
* This macro initializes a &drm_display_mode that only contains info about
* resolution and physical size.
*/
#define DRM_SIMPLE_MODE(hd, vd, hd_mm, vd_mm) \
.type = DRM_MODE_TYPE_DRIVER, .clock = 1 /* pass validation */, \
.hdisplay = (hd), .hsync_start = (hd), .hsync_end = (hd), \
.htotal = (hd), .vdisplay = (vd), .vsync_start = (vd), \
.vsync_end = (vd), .vtotal = (vd), .width_mm = (hd_mm), \
.height_mm = (vd_mm)
#define CRTC_INTERLACE_HALVE_V (1 << 0) /* halve V values for interlacing */ #define CRTC_INTERLACE_HALVE_V (1 << 0) /* halve V values for interlacing */
#define CRTC_STEREO_DOUBLE (1 << 1) /* adjust timings for stereo modes */ #define CRTC_STEREO_DOUBLE (1 << 1) /* adjust timings for stereo modes */
#define CRTC_NO_DBLSCAN (1 << 2) /* don't adjust doublescan */ #define CRTC_NO_DBLSCAN (1 << 2) /* don't adjust doublescan */
......
...@@ -35,29 +35,6 @@ pipe_to_tinydrm(struct drm_simple_display_pipe *pipe) ...@@ -35,29 +35,6 @@ pipe_to_tinydrm(struct drm_simple_display_pipe *pipe)
return container_of(pipe, struct tinydrm_device, pipe); return container_of(pipe, struct tinydrm_device, pipe);
} }
/**
* TINYDRM_MODE - tinydrm display mode
* @hd: Horizontal resolution, width
* @vd: Vertical resolution, height
* @hd_mm: Display width in millimeters
* @vd_mm: Display height in millimeters
*
* This macro creates a &drm_display_mode for use with tinydrm.
*/
#define TINYDRM_MODE(hd, vd, hd_mm, vd_mm) \
.hdisplay = (hd), \
.hsync_start = (hd), \
.hsync_end = (hd), \
.htotal = (hd), \
.vdisplay = (vd), \
.vsync_start = (vd), \
.vsync_end = (vd), \
.vtotal = (vd), \
.width_mm = (hd_mm), \
.height_mm = (vd_mm), \
.type = DRM_MODE_TYPE_DRIVER, \
.clock = 1 /* pass validation */
int devm_tinydrm_init(struct device *parent, struct tinydrm_device *tdev, int devm_tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
struct drm_driver *driver); struct drm_driver *driver);
int devm_tinydrm_register(struct tinydrm_device *tdev); int devm_tinydrm_register(struct tinydrm_device *tdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment