diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-10-12 08:22:25 +0200 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-10-12 08:22:25 +0200 |
commit | c0c8b9ed1b0c14d91ff73624df6d918bb47c8a5e (patch) | |
tree | 7fb6f2c7c028cd4926b827d3b5937c49afefa63a /drivers/gpu/drm/sun4i/sun4i_tv.c | |
parent | 5a920b85f2c6e3fd7d9dd9bb3f3345e9085e2360 (diff) | |
parent | 69405d3da98b48633b78a49403e4f9cdb7c6a0f5 (diff) | |
download | op-kernel-dev-c0c8b9ed1b0c14d91ff73624df6d918bb47c8a5e.zip op-kernel-dev-c0c8b9ed1b0c14d91ff73624df6d918bb47c8a5e.tar.gz |
Merge tag 'drm-for-v4.9' into drm-intel-next-queued
It's been over two months, git definitely lost it's marbles. Conflicts
resolved by picking our version, plus manually checking the diff with
the parent in drm-intel-next-queued to make sure git didn't do
anything stupid. It did, so I removed 2 occasions where it
double-inserted a bit of code. The diff is now just
- kernel-doc changes
- drm format/name changes
- display-info changes
so looks all reasonable.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Diffstat (limited to 'drivers/gpu/drm/sun4i/sun4i_tv.c')
-rw-r--r-- | drivers/gpu/drm/sun4i/sun4i_tv.c | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c index b841478..1dd3d9e 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tv.c +++ b/drivers/gpu/drm/sun4i/sun4i_tv.c @@ -161,10 +161,10 @@ struct tv_mode { bool dac3_en; bool dac_bit25_en; - struct color_gains *color_gains; - struct burst_levels *burst_levels; - struct video_levels *video_levels; - struct resync_parameters *resync_params; + const struct color_gains *color_gains; + const struct burst_levels *burst_levels; + const struct video_levels *video_levels; + const struct resync_parameters *resync_params; }; struct sun4i_tv { @@ -178,39 +178,39 @@ struct sun4i_tv { struct sun4i_drv *drv; }; -struct video_levels ntsc_video_levels = { +static const struct video_levels ntsc_video_levels = { .black = 282, .blank = 240, }; -struct video_levels pal_video_levels = { +static const struct video_levels pal_video_levels = { .black = 252, .blank = 252, }; -struct burst_levels ntsc_burst_levels = { +static const struct burst_levels ntsc_burst_levels = { .cb = 79, .cr = 0, }; -struct burst_levels pal_burst_levels = { +static const struct burst_levels pal_burst_levels = { .cb = 40, .cr = 40, }; -struct color_gains ntsc_color_gains = { +static const struct color_gains ntsc_color_gains = { .cb = 160, .cr = 160, }; -struct color_gains pal_color_gains = { +static const struct color_gains pal_color_gains = { .cb = 224, .cr = 224, }; -struct resync_parameters ntsc_resync_parameters = { +static const struct resync_parameters ntsc_resync_parameters = { .field = false, .line = 14, .pixel = 12, }; -struct resync_parameters pal_resync_parameters = { +static const struct resync_parameters pal_resync_parameters = { .field = true, .line = 13, .pixel = 12, }; -struct tv_mode tv_modes[] = { +static const struct tv_mode tv_modes[] = { { .name = "NTSC", .mode = SUN4I_TVE_CFG0_RES_480i, @@ -289,13 +289,13 @@ drm_connector_to_sun4i_tv(struct drm_connector *connector) * So far, it doesn't seem to be preserved when the mode is passed by * to mode_set for some reason. */ -static struct tv_mode *sun4i_tv_find_tv_by_mode(struct drm_display_mode *mode) +static const struct tv_mode *sun4i_tv_find_tv_by_mode(const struct drm_display_mode *mode) { int i; /* First try to identify the mode by name */ for (i = 0; i < ARRAY_SIZE(tv_modes); i++) { - struct tv_mode *tv_mode = &tv_modes[i]; + const struct tv_mode *tv_mode = &tv_modes[i]; DRM_DEBUG_DRIVER("Comparing mode %s vs %s", mode->name, tv_mode->name); @@ -306,7 +306,7 @@ static struct tv_mode *sun4i_tv_find_tv_by_mode(struct drm_display_mode *mode) /* Then by number of lines */ for (i = 0; i < ARRAY_SIZE(tv_modes); i++) { - struct tv_mode *tv_mode = &tv_modes[i]; + const struct tv_mode *tv_mode = &tv_modes[i]; DRM_DEBUG_DRIVER("Comparing mode %s vs %s (X: %d vs %d)", mode->name, tv_mode->name, @@ -319,7 +319,7 @@ static struct tv_mode *sun4i_tv_find_tv_by_mode(struct drm_display_mode *mode) return NULL; } -static void sun4i_tv_mode_to_drm_mode(struct tv_mode *tv_mode, +static void sun4i_tv_mode_to_drm_mode(const struct tv_mode *tv_mode, struct drm_display_mode *mode) { DRM_DEBUG_DRIVER("Creating mode %s\n", mode->name); @@ -386,7 +386,7 @@ static void sun4i_tv_mode_set(struct drm_encoder *encoder, struct sun4i_tv *tv = drm_encoder_to_sun4i_tv(encoder); struct sun4i_drv *drv = tv->drv; struct sun4i_tcon *tcon = drv->tcon; - struct tv_mode *tv_mode = sun4i_tv_find_tv_by_mode(mode); + const struct tv_mode *tv_mode = sun4i_tv_find_tv_by_mode(mode); sun4i_tcon1_mode_set(tcon, mode); @@ -507,8 +507,14 @@ static int sun4i_tv_comp_get_modes(struct drm_connector *connector) int i; for (i = 0; i < ARRAY_SIZE(tv_modes); i++) { - struct drm_display_mode *mode = drm_mode_create(connector->dev); - struct tv_mode *tv_mode = &tv_modes[i]; + struct drm_display_mode *mode; + const struct tv_mode *tv_mode = &tv_modes[i]; + + mode = drm_mode_create(connector->dev); + if (!mode) { + DRM_ERROR("Failed to create a new display mode\n"); + return 0; + } strcpy(mode->name, tv_mode->name); |