From 46ac89bbe7e5821a6a7d6410994bb2e110b5e33e Mon Sep 17 00:00:00 2001 From: Li Peng Date: Sat, 28 Apr 2012 23:50:29 +0800 Subject: [PATCH] TMD 6x10: fixes to MCG side of the MCG display panel code merge Fixes to MCG PVR code to get the MCG's TMD 6x10 display panel driver compiling and running in the hybrid kernel. Signed-off-by: Li Peng Signed-off-by: Markus Lehtonen --- drivers/staging/mrst.mcg/drv/mdfld_dsi_dbi.c | 62 ++--------- drivers/staging/mrst.mcg/drv/mdfld_dsi_dpi.c | 126 ++-------------------- drivers/staging/mrst.mcg/drv/mdfld_dsi_output.c | 136 ------------------------ drivers/staging/mrst.mcg/drv/mdfld_output.c | 89 ---------------- drivers/staging/mrst.mcg/drv/tmd_6x10_vid.c | 2 +- drivers/staging/mrst/drv/psb_drv.h | 2 + 6 files changed, 18 insertions(+), 399 deletions(-) diff --git a/drivers/staging/mrst.mcg/drv/mdfld_dsi_dbi.c b/drivers/staging/mrst.mcg/drv/mdfld_dsi_dbi.c index cf79b53..ad3b892 100644 --- a/drivers/staging/mrst.mcg/drv/mdfld_dsi_dbi.c +++ b/drivers/staging/mrst.mcg/drv/mdfld_dsi_dbi.c @@ -29,40 +29,11 @@ #include "mdfld_dsi_dbi_dpu.h" #include "mdfld_dsi_pkg_sender.h" - #include "psb_powermgmt.h" -#ifdef CONFIG_GFX_RTPM - #include -#endif - -int enable_gfx_rtpm = 0; +#include "psb_powermgmt.h" int enter_dsr = 0; struct mdfld_dsi_dbi_output *gdbi_output; -#ifdef CONFIG_GFX_RTPM -static void psb_runtimepm_wq_handler(struct work_struct *work); -DECLARE_DELAYED_WORK(rtpm_work, psb_runtimepm_wq_handler); - -void psb_runtimepm_wq_handler(struct work_struct *work) -{ - struct drm_psb_private * dev_priv = gpDrmDevice->dev_private; - - if(drm_psb_ospm && !enable_gfx_rtpm) { - printk(KERN_ALERT "Enable GFX runtime_pm \n"); - - dev_priv->rpm_enabled = 1; - - enable_gfx_rtpm = 1; - - pm_runtime_enable(&gpDrmDevice->pdev->dev); - pm_runtime_set_active(&gpDrmDevice->pdev->dev); - - pm_runtime_allow(&gpDrmDevice->pdev->dev); - } -} -#endif - - /** * set refreshing area */ @@ -461,8 +432,8 @@ void mdfld_dsi_dbi_enter_dsr (struct mdfld_dsi_dbi_output * dbi_output, int pipe } p_funcs = dbi_output->p_funcs; - if (p_funcs && (p_funcs->esd_detection)) - mdfld_error_detect_correct_timer_end(dev); + //if (p_funcs && (p_funcs->esd_detection)) + // mdfld_error_detect_correct_timer_end(dev); mdfld_disable_te(dev, pipe); @@ -607,8 +578,8 @@ static void mdfld_dbi_output_exit_dsr (struct mdfld_dsi_dbi_output * dbi_output, /*clean IN_DSR flag*/ dbi_output->mode_flags &= ~MODE_SETTING_IN_DSR; - if (p_funcs && (p_funcs->esd_detection)) - mdfld_error_detect_correct_timer_start(dev); + //if (p_funcs && (p_funcs->esd_detection)) + // mdfld_error_detect_correct_timer_start(dev); fun_exit: spin_unlock(&dev_priv->dsr_lock); } @@ -711,13 +682,6 @@ void mdfld_dsi_dbi_exit_dsr (struct drm_device *dev, u32 update_src, void *p_sur dbi_output = dsr_info->dbi_outputs; -#ifdef CONFIG_PM_RUNTIME - if(drm_psb_ospm && !enable_gfx_rtpm) { -// pm_runtime_allow(&gpDrmDevice->pdev->dev); -// schedule_delayed_work(&rtpm_work, 120 * 1000); - } -#endif - /*for each output, exit dsr*/ for(i=0; idbi_output_num; i++) { /*if panel has been turned off, skip*/ @@ -1078,12 +1042,6 @@ struct mdfld_dsi_encoder *mdfld_dsi_dbi_init(struct drm_device *dev, else p_funcs->dsi_controller_init(dsi_config, pipe, true); } - if (dsi_connector->status == connector_status_connected) { - if (pipe == 0) - dev_priv->panel_desc |= DISPLAY_A; - if (pipe == 2) - dev_priv->panel_desc |= DISPLAY_C; - } /* mdfld_dsi_controller_dbi_init(dsi_config, pipe); */ /* TODO: get panel info from DDB */ @@ -1136,13 +1094,9 @@ struct mdfld_dsi_encoder *mdfld_dsi_dbi_init(struct drm_device *dev, dev_priv->dsr_fb_update = 0; dev_priv->b_dsr_enable = false; - dev_priv->b_async_flip_enable = false; - dev_priv->exit_idle = mdfld_dsi_dbi_exit_dsr; - dev_priv->async_flip_update_fb = mdfld_dsi_dbi_async_flip_fb_update; - dev_priv->async_check_fifo_empty = mdfld_dsi_dbi_async_check_fifo_empty; -#if defined(CONFIG_MDFLD_DSI_DPU) || defined(CONFIG_MDFLD_DSI_DSR) - dev_priv->b_dsr_enable_config = true; -#endif /*CONFIG_MDFLD_DSI_DSR*/ + //dev_priv->b_async_flip_enable = false; + //dev_priv->async_flip_update_fb = mdfld_dsi_dbi_async_flip_fb_update; + //dev_priv->async_check_fifo_empty = mdfld_dsi_dbi_async_check_fifo_empty; dbi_output->first_boot = true; dbi_output->mode_flags = MODE_SETTING_IN_ENCODER; diff --git a/drivers/staging/mrst.mcg/drv/mdfld_dsi_dpi.c b/drivers/staging/mrst.mcg/drv/mdfld_dsi_dpi.c index 7434e00..a2cf8b2 100644 --- a/drivers/staging/mrst.mcg/drv/mdfld_dsi_dpi.c +++ b/drivers/staging/mrst.mcg/drv/mdfld_dsi_dpi.c @@ -1759,13 +1759,10 @@ static int __dpi_panel_power_off(struct mdfld_dsi_config *dsi_config, OSPM_UHB_FORCE_POWER_ON)) return -EAGAIN; - ctx->lastbrightnesslevel = psb_brightness; if (p_funcs->set_brightness(dsi_config, 0)) DRM_ERROR("Failed to set panel brightness\n"); /*save the plane informaton, for it will updated*/ - ctx->dspsurf = dev_priv->init_screen_start; - ctx->dsplinoff = dev_priv->init_screen_offset; ctx->pipestat = REG_READ(regs->pipestat_reg); ctx->dspcntr = REG_READ(regs->dspcntr_reg); ctx->dspstride= REG_READ(regs->dspstride_reg); @@ -1907,16 +1904,12 @@ static int __mdfld_dsi_dpi_set_power(struct drm_encoder *encoder, bool on) int pipe; struct drm_device *dev; struct drm_psb_private *dev_priv; - static int last_ospm_suspend = -1; if (!encoder) { DRM_ERROR("Invalid encoder\n"); return -EINVAL; } - PSB_DEBUG_ENTRY("%s, last_ospm_suspend = %s\n", (on ? "on" : "off"), - (last_ospm_suspend ? "true" : "false")); - dsi_encoder = MDFLD_DSI_ENCODER(encoder); dpi_output = MDFLD_DSI_DPI_OUTPUT(dsi_encoder); dsi_config = mdfld_dsi_encoder_get_config(dsi_encoder); @@ -1929,40 +1922,25 @@ static int __mdfld_dsi_dpi_set_power(struct drm_encoder *encoder, bool on) if (dsi_connector->status != connector_status_connected) return 0; - mutex_lock(&dsi_config->context_lock); - - if (last_ospm_suspend == -1) - last_ospm_suspend = false; - if (dpi_output->first_boot && dsi_config->dsi_hw_context.panel_on) { printk(KERN_ALERT "skip panle power setting for first boot!" " panel is already powered on\n"); goto fun_exit; } - /** - * if ospm has turned panel off, but dpms tries to turn panel on, skip - */ - if (dev_priv->dpms_on_off && on && last_ospm_suspend) - goto fun_exit; - switch (on) { case true: /* panel is already on */ if (dsi_config->dsi_hw_context.panel_on) goto fun_exit; /* For DPMS case, just turn on/off panel */ - if (dev_priv->dpms_on_off) { + { if (mdfld_dsi_dpi_panel_turn_on(dsi_config)) { DRM_ERROR("Faild to turn on panel\n"); goto set_power_err; } - } else { - if (__dpi_panel_power_on(dsi_config, p_funcs)) { - DRM_ERROR("Faild to turn on panel\n"); - goto set_power_err; - } - } + } + /** * If power on, turn off color mode by default, * let panel in full color mode @@ -1970,23 +1948,13 @@ static int __mdfld_dsi_dpi_set_power(struct drm_encoder *encoder, bool on) mdfld_dsi_dpi_set_color_mode(dsi_config, false); dsi_config->dsi_hw_context.panel_on = 1; - last_ospm_suspend = false; break; case false: - if (dev_priv->dpms_on_off && - dsi_config->dsi_hw_context.panel_on) { + if (dsi_config->dsi_hw_context.panel_on) { if (mdfld_dsi_dpi_panel_shut_down(dsi_config)) DRM_ERROR("Faild to shutdown panel\n"); - - last_ospm_suspend = false; - } else if (!dev_priv->dpms_on_off && !last_ospm_suspend) { - if (__dpi_panel_power_off(dsi_config, p_funcs)) { - DRM_ERROR("Faild to turn off panel\n"); - goto set_power_err; - } - /* ospm suspend called? */ - last_ospm_suspend = true; } + dsi_config->dsi_hw_context.panel_on = 0; break; default: @@ -1994,11 +1962,9 @@ static int __mdfld_dsi_dpi_set_power(struct drm_encoder *encoder, bool on) } fun_exit: - mutex_unlock(&dsi_config->context_lock); PSB_DEBUG_ENTRY("successfully\n"); return 0; set_power_err: - mutex_unlock(&dsi_config->context_lock); PSB_DEBUG_ENTRY("unsuccessfully!!!!\n"); return -EAGAIN; } @@ -2019,11 +1985,6 @@ void mdfld_dsi_dpi_set_power(struct drm_encoder *encoder, bool on) dpi_output = MDFLD_DSI_DPI_OUTPUT(dsi_encoder); - if (pipe) - if (!(dev_priv->panel_desc & DISPLAY_B) || - !(dev_priv->panel_desc & DISPLAY_C)) - return; - if (pipe) { mipi_reg = MIPI_C; pipeconf_reg = PIPECCONF; @@ -2094,20 +2055,11 @@ void mdfld_dsi_dpi_dpms(struct drm_encoder *encoder, int mode) PSB_DEBUG_ENTRY( "%s\n", (mode == DRM_MODE_DPMS_ON ? "on" : "off")); - if (!gbdispstatus) { - PSB_DEBUG_ENTRY( - "panel in suspend status, skip turn on/off from DMPS"); - return ; - } - mutex_lock(&dev_priv->dpms_mutex); - dev_priv->dpms_on_off = true; if (mode == DRM_MODE_DPMS_ON) mdfld_dsi_dpi_set_power(encoder, true); else mdfld_dsi_dpi_set_power(encoder, false); - dev_priv->dpms_on_off = false; - mutex_unlock(&dev_priv->dpms_mutex); } bool mdfld_dsi_dpi_mode_fixup(struct drm_encoder *encoder, @@ -2586,60 +2538,12 @@ mode_set_err: void mdfld_dsi_dpi_save(struct drm_encoder *encoder) { - printk(KERN_ALERT"%s\n", __func__); - - if (!encoder) - return; - - /*turn off*/ - __mdfld_dsi_dpi_set_power(encoder, false); + return; } void mdfld_dsi_dpi_restore(struct drm_encoder *encoder) { - printk(KERN_ALERT"%s\n", __func__); - - if (!encoder) - return; - - /*turn on*/ - __mdfld_dsi_dpi_set_power(encoder, true); -} - -/** - * Exit from DSR - */ -void mdfld_dsi_dpi_exit_idle(struct drm_device *dev, - u32 update_src, - void *p_surfaceAddr, - bool check_hw_on_only) -{ - struct drm_psb_private * dev_priv = dev->dev_private; - unsigned long irqflags; - - /* PSB_DEBUG_ENTRY("\n"); */ - - if (!ospm_power_is_hw_on(OSPM_DISPLAY_ISLAND)) { - DRM_ERROR("hw begin failed\n"); - return; - } - - spin_lock_irqsave(&dev_priv->irqmask_lock, irqflags); - if (dev_priv->b_is_in_idle) { - /* update the surface base address. */ - if (p_surfaceAddr) { - REG_WRITE(DSPASURF, *((u32 *)p_surfaceAddr)); -#if defined(CONFIG_MDFD_DUAL_MIPI) - REG_WRITE(DSPCSURF, *((u32 *)p_surfaceAddr)); -#endif - } - - mid_enable_pipe_event(dev_priv, 0); - psb_enable_pipestat(dev_priv, 0, PIPE_VBLANK_INTERRUPT_ENABLE); - dev_priv->b_is_in_idle = false; - dev_priv->dsr_idle_count = 0; - } - spin_unlock_irqrestore(&dev_priv->irqmask_lock, irqflags); + return; } /* @@ -2718,17 +2622,6 @@ struct mdfld_dsi_encoder *mdfld_dsi_dpi_init(struct drm_device *dev, dsi_connector->status = connector_status_connected; #endif - /** - * TODO: can we keep these code out of display driver as - * it will make display driver hard to be maintained - */ - if (dsi_connector->status == connector_status_connected) { - if (pipe == 0) - dev_priv->panel_desc |= DISPLAY_A; - if (pipe == 2) - dev_priv->panel_desc |= DISPLAY_C; - } - dpi_output = kzalloc(sizeof(struct mdfld_dsi_dpi_output), GFP_KERNEL); if (!dpi_output) { DRM_ERROR("No memory\n"); @@ -2789,11 +2682,6 @@ struct mdfld_dsi_encoder *mdfld_dsi_dpi_init(struct drm_device *dev, dev_priv->dsr_fb_update = 0; dev_priv->b_dsr_enable = false; - dev_priv->exit_idle = mdfld_dsi_dpi_exit_idle; -#if defined(CONFIG_MDFLD_DSI_DPU) || defined(CONFIG_MDFLD_DSI_DSR) - dev_priv->b_dsr_enable_config = true; -#endif /*CONFIG_MDFLD_DSI_DSR*/ - #ifdef CONFIG_SUPPORT_TOSHIBA_MIPI_DISPLAY dev_priv->dpi_panel_on = true; diff --git a/drivers/staging/mrst.mcg/drv/mdfld_dsi_output.c b/drivers/staging/mrst.mcg/drv/mdfld_dsi_output.c index 866b46a..575e594 100755 --- a/drivers/staging/mrst.mcg/drv/mdfld_dsi_output.c +++ b/drivers/staging/mrst.mcg/drv/mdfld_dsi_output.c @@ -462,79 +462,6 @@ static enum drm_connector_status mdfld_dsi_connector_detect return dsi_connector->status; } -static int mdfld_dsi_connector_set_property(struct drm_connector *connector, - struct drm_property *property, - uint64_t value) -{ - struct drm_encoder *encoder = connector->encoder; - struct backlight_device *psb_bd; - - PSB_DEBUG_ENTRY("\n"); - - if (!strcmp(property->name, "scaling mode") && encoder) { - struct psb_intel_crtc * psb_crtc = to_psb_intel_crtc(encoder->crtc); - bool bTransitionFromToCentered; - uint64_t curValue; - - if (!psb_crtc) - goto set_prop_error; - - switch (value) { - case DRM_MODE_SCALE_FULLSCREEN: - break; - case DRM_MODE_SCALE_CENTER: - break; - case DRM_MODE_SCALE_NO_SCALE: - break; - case DRM_MODE_SCALE_ASPECT: - break; - default: - goto set_prop_error; - } - - if (drm_connector_property_get_value(connector, property, &curValue)) - goto set_prop_error; - - if (curValue == value) - goto set_prop_done; - - if (drm_connector_property_set_value(connector, property, value)) - goto set_prop_error; - - bTransitionFromToCentered = (curValue == DRM_MODE_SCALE_NO_SCALE) || - (value == DRM_MODE_SCALE_NO_SCALE); - - if (psb_crtc->saved_mode.hdisplay != 0 && - psb_crtc->saved_mode.vdisplay != 0) { - if (bTransitionFromToCentered) { - if (!drm_crtc_helper_set_mode(encoder->crtc, &psb_crtc->saved_mode, - encoder->crtc->x, encoder->crtc->y, encoder->crtc->fb)) - goto set_prop_error; - } else { - struct drm_encoder_helper_funcs *pEncHFuncs = encoder->helper_private; - pEncHFuncs->mode_set(encoder, &psb_crtc->saved_mode, - &psb_crtc->saved_adjusted_mode); - } - } - } else if (!strcmp(property->name, "backlight") && encoder) { - PSB_DEBUG_ENTRY("backlight level = %d\n", (int)value); - if (drm_connector_property_set_value(connector, property, value)) - goto set_prop_error; - else { - PSB_DEBUG_ENTRY("set brightness to %d", (int)value); - psb_bd = psb_get_backlight_device(); - if(psb_bd) { - psb_bd->props.brightness = value; - psb_set_brightness(psb_bd); - } - } - } -set_prop_done: - return 0; -set_prop_error: - return -1; -} - static void mdfld_dsi_connector_destroy(struct drm_connector * connector) { struct psb_intel_output * psb_output = to_psb_intel_output(connector); @@ -620,57 +547,7 @@ static int mdfld_dsi_connector_mode_valid(struct drm_connector * connector, stru static void mdfld_dsi_connector_dpms(struct drm_connector *connector, int mode) { -#ifdef CONFIG_PM_RUNTIME - struct drm_device * dev = connector->dev; - struct drm_psb_private * dev_priv = dev->dev_private; - bool panel_on, panel_on1, panel_on2; -#endif - /*first, execute dpms*/ drm_helper_connector_dpms(connector, mode); - -#ifdef CONFIG_PM_RUNTIME - if(is_panel_vid_or_cmd(dev)) { - /*DPI panel*/ - panel_on = dev_priv->dpi_panel_on; - panel_on2 = dev_priv->dpi_panel_on2; - } else { - /*DBI panel*/ - panel_on = dev_priv->dbi_panel_on; - panel_on2 = dev_priv->dbi_panel_on2; - } - - - if (!ospm_power_using_hw_begin(OSPM_DISPLAY_ISLAND, - OSPM_UHB_ONLY_IF_ON)) - return ; - - acquire_ospm_lock(); - if (dev_priv->bhdmiconnected) - panel_on1 = (REG_READ(HDMIB_CONTROL) & HDMIB_PORT_EN); - else - panel_on1 = false; - release_ospm_lock(); - - /*then check all display panels + monitors status*/ - if (!panel_on && !panel_on2 && !panel_on1) { - /*request rpm idle*/ - if(dev_priv->rpm_enabled) { - pm_request_idle(&dev->pdev->dev); - } - } - - /** - * if rpm wasn't enabled yet, try to allow it - * FIXME: won't enable rpm for DPI since DPI - * CRTC setting is a little messy now. - * Enable it later! - */ -#if 0 /* revist to check if we can enable rpm for DPI */ - if(!dev_priv->rpm_enabled && !is_panel_vid_or_cmd(dev)) - ospm_runtime_pm_allow(dev); -#endif - ospm_power_using_hw_end(OSPM_DISPLAY_ISLAND); -#endif } static struct drm_encoder * mdfld_dsi_connector_best_encoder(struct drm_connector * connector) @@ -706,7 +583,6 @@ static const struct drm_connector_funcs mdfld_dsi_connector_funcs = { .restore = mdfld_dsi_connector_restore, .detect = mdfld_dsi_connector_detect, .fill_modes = drm_helper_probe_single_connector_modes, - .set_property = mdfld_dsi_connector_set_property, .destroy = mdfld_dsi_connector_destroy, }; @@ -1162,12 +1038,6 @@ int mdfld_dsi_output_init(struct drm_device *dev, } encoder->private = dsi_config; dsi_config->encoders[MDFLD_DSI_ENCODER_DBI] = encoder; - - if (pipe == 2) - dev_priv->encoder2 = encoder; - - if (pipe == 0) - dev_priv->encoder0 = encoder; } if(p_vid_funcs) { @@ -1178,12 +1048,6 @@ int mdfld_dsi_output_init(struct drm_device *dev, } encoder->private = dsi_config; dsi_config->encoders[MDFLD_DSI_ENCODER_DPI] = encoder; - - if (pipe == 2) - dev_priv->encoder2 = encoder; - - if (pipe == 0) - dev_priv->encoder0 = encoder; } drm_sysfs_connector_add(connector); diff --git a/drivers/staging/mrst.mcg/drv/mdfld_output.c b/drivers/staging/mrst.mcg/drv/mdfld_output.c index 30c4730..da80019d 100644 --- a/drivers/staging/mrst.mcg/drv/mdfld_output.c +++ b/drivers/staging/mrst.mcg/drv/mdfld_output.c @@ -33,17 +33,8 @@ #include "displays/tpo_cmd.h" #include "displays/tpo_vid.h" -#include "displays/tmd_cmd.h" #include "displays/tmd_vid.h" -#include "displays/pyr_cmd.h" -#include "displays/pyr_vid.h" #include "displays/tmd_6x10_vid.h" -#include "displays/h8c7_vid.h" -#include "displays/auo_sc1_vid.h" -#include "displays/auo_sc1_cmd.h" -#include "displays/gi_sony_vid.h" -#include "displays/gi_sony_cmd.h" -#include "displays/h8c7_cmd.h" #include "displays/hdmi.h" #include "psb_drv.h" @@ -114,58 +105,10 @@ void init_panel(struct drm_device* dev, int mipi_pipe, enum panel_type p_type) struct panel_funcs * p_vid_funcs = NULL; int ret = 0; - dev_priv->cur_pipe = mipi_pipe; p_cmd_funcs = kzalloc(sizeof(struct panel_funcs), GFP_KERNEL); p_vid_funcs = kzalloc(sizeof(struct panel_funcs), GFP_KERNEL); switch (p_type) { - case TPO_CMD: - kfree(p_vid_funcs); - p_vid_funcs = NULL; - tpo_cmd_init(dev, p_cmd_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, p_cmd_funcs, NULL); - break; - case TPO_VID: - kfree(p_cmd_funcs); - p_cmd_funcs = NULL; - tpo_vid_init(dev, p_vid_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, NULL, p_vid_funcs); - break; - case AUO_SC1_CMD: - kfree(p_vid_funcs); - p_vid_funcs = NULL; - auo_sc1_cmd_init(dev, p_cmd_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, p_cmd_funcs, - NULL); - break; - case AUO_SC1_VID: - kfree(p_cmd_funcs); - p_cmd_funcs = NULL; - auo_sc1_vid_init(dev, p_vid_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, NULL, - p_vid_funcs); - break; - case GI_SONY_CMD: - kfree(p_vid_funcs); - p_vid_funcs = NULL; - gi_sony_cmd_init(dev, p_cmd_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, p_cmd_funcs, - NULL); - break; - case H8C7_CMD: - kfree(p_vid_funcs); - p_vid_funcs = NULL; - h8c7_cmd_init(dev, p_cmd_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, p_cmd_funcs, - NULL); - break; - case GI_SONY_VID: - kfree(p_cmd_funcs); - p_cmd_funcs = NULL; - gi_sony_vid_init(dev, p_vid_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, NULL, - p_vid_funcs); - break; case TMD_6X10_VID: kfree(p_cmd_funcs); p_cmd_funcs = NULL; @@ -175,44 +118,12 @@ void init_panel(struct drm_device* dev, int mipi_pipe, enum panel_type p_type) NULL, p_vid_funcs); break; - case H8C7_VID: - kfree(p_cmd_funcs); - p_cmd_funcs = NULL; - h8c7_vid_init(dev, p_vid_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, - NULL, - NULL, - p_vid_funcs); - break; case TMD_CMD: /*tmd_cmd_init(dev, p_cmd_funcs);*/ kfree(p_vid_funcs); p_vid_funcs = NULL; ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, p_cmd_funcs, NULL); break; - case TMD_VID: - kfree(p_cmd_funcs); - p_cmd_funcs = NULL; - tmd_vid_init(dev, p_vid_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, NULL, p_vid_funcs); - break; - case PYR_CMD: - kfree(p_vid_funcs); - p_vid_funcs = NULL; - pyr_cmd_init(dev, p_cmd_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, p_cmd_funcs, NULL); - break; - case PYR_VID: - /*pyr_vid_init(dev, p_vid_funcs);*/ - kfree(p_cmd_funcs); - p_cmd_funcs = NULL; - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, NULL, p_vid_funcs); - break; - case TPO: /*TPO panel supports both cmd & vid interfaces*/ - tpo_cmd_init(dev, p_cmd_funcs); - tpo_vid_init(dev, p_vid_funcs); - ret = mdfld_dsi_output_init(dev, mipi_pipe, NULL, p_cmd_funcs, p_vid_funcs); - break; case TMD: case PYR: kfree(p_vid_funcs); diff --git a/drivers/staging/mrst.mcg/drv/tmd_6x10_vid.c b/drivers/staging/mrst.mcg/drv/tmd_6x10_vid.c index 1c7af16..00eff4d 100755 --- a/drivers/staging/mrst.mcg/drv/tmd_6x10_vid.c +++ b/drivers/staging/mrst.mcg/drv/tmd_6x10_vid.c @@ -657,7 +657,7 @@ struct drm_display_mode *pr2_vid_get_config_mode(struct drm_device *dev) PSB_DEBUG_ENTRY("vtotal is %d\n", mode->vtotal); PSB_DEBUG_ENTRY("clock is %d\n", mode->clock); } else { - mode->hdisplay = 800; + mode->hdisplay = 600; mode->vdisplay = 1024; mode->hsync_start = 823; mode->hsync_end = 831; diff --git a/drivers/staging/mrst/drv/psb_drv.h b/drivers/staging/mrst/drv/psb_drv.h index 3845907..64b2b75 100644 --- a/drivers/staging/mrst/drv/psb_drv.h +++ b/drivers/staging/mrst/drv/psb_drv.h @@ -922,6 +922,8 @@ struct drm_psb_private { */ uint32_t swap_chain_flag; + spinlock_t dsr_lock; + bool hdmi_done_reading_edid; bool xserver_start; -- 2.7.4