From 5b85050a8f1e7db530f803627ba6371ca9c0ba9b Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sat, 11 Jul 2009 23:24:49 +0100 Subject: De-bodge pixel clocks .. or re-bodge them, depending on your perspective. This makes mode->clock contain a value in Hz, in line with the KMS convention. This is at the expense of more calculations when generating the mode from the mach_info and when setting the mode. Signed-off-by: Thomas White --- drivers/mfd/glamo/glamo-display.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'drivers/mfd') diff --git a/drivers/mfd/glamo/glamo-display.c b/drivers/mfd/glamo/glamo-display.c index ceffb18331c..93f056dce43 100644 --- a/drivers/mfd/glamo/glamo-display.c +++ b/drivers/mfd/glamo/glamo-display.c @@ -310,6 +310,7 @@ static void glamo_crtc_mode_set(struct drm_crtc *crtc, struct glamodrm_handle *gdrm; struct glamo_crtc *gcrtc; int retr_start, retr_end, disp_start, disp_end; + int ps; printk(KERN_CRIT "glamo_crtc_mode_set\n"); @@ -318,8 +319,11 @@ static void glamo_crtc_mode_set(struct drm_crtc *crtc, gdrm = gcrtc->gdrm; /* Here it is! */ glamo_lcd_cmd_mode(gdrm, 1); - glamo_engine_reclock(gdrm->glamo_core, GLAMO_ENGINE_LCD, mode->clock); - gdrm->saved_clock = mode->clock; + ps = mode->clock / 1000; /* Hz -> kHz */ + ps = 1000000000UL / ps; /* kHz -> ps */ + printk(KERN_INFO "[glamo-drm] Reclocking LCD engine to %i ps\n", ps); + glamo_engine_reclock(gdrm->glamo_core, GLAMO_ENGINE_LCD, ps); + gdrm->saved_clock = ps; reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_WIDTH, GLAMO_LCD_WIDTH_MASK, mode->hdisplay); @@ -453,7 +457,8 @@ static int glamo_connector_get_modes(struct drm_connector *connector) mode->type = DRM_MODE_TYPE_DEFAULT | DRM_MODE_TYPE_PREFERRED; /* Convert framebuffer timings into KMS timings */ - mode->clock = 1000000 / mach_info->pixclock; /* ps -> Hz */ + mode->clock = 1000000000UL / mach_info->pixclock; /* ps -> kHz */ + mode->clock *= 1000; /* kHz -> Hz */ mode->hdisplay = mach_info->xres.defval; mode->hsync_start = mach_info->right_margin + mode->hdisplay; mode->hsync_end = mode->hsync_start + mach_info->hsync_len; -- cgit v1.2.3