Skip to content

Commit

Permalink
staging: gma500: begin adding Moorestown support
Browse files Browse the repository at this point in the history
The Moorestown systems have some graphics differences we care about and some
we don't need to.

To start with it has a single pipe and that pipe can be used for LVDS

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Alan Cox authored and Greg Kroah-Hartman committed Apr 5, 2011
1 parent 427beeb commit 2627aaa
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 10 deletions.
6 changes: 4 additions & 2 deletions drivers/staging/gma500/psb_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -586,8 +586,10 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
return -ENOMEM;
INIT_LIST_HEAD(&dev_priv->video_ctx);

dev_priv->num_pipe = 2;

if (IS_MRST(dev))
dev_priv->num_pipe = 1;
else
dev_priv->num_pipe = 2;

dev_priv->dev = dev;
bdev = &dev_priv->bdev;
Expand Down
6 changes: 2 additions & 4 deletions drivers/staging/gma500/psb_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,15 @@ enum {
CHIP_PSB_8109 = 1,
};

#define IS_MRST(dev) (((dev)->pci_device & 0xfffc) == 0x4100)

/*
*Hardware bugfixes
*/

#define DRIVER_NAME "pvrsrvkm"
#define DRIVER_DESC "drm driver for the Intel GMA500"
#define DRIVER_AUTHOR "Intel Corporation"
#define OSPM_PROC_ENTRY "ospm"
#define RTPM_PROC_ENTRY "rtpm"
#define BLC_PROC_ENTRY "mrst_blc"
#define DISPLAY_PROC_ENTRY "display_status"

#define PSB_DRM_DRIVER_DATE "2009-03-10"
#define PSB_DRM_DRIVER_MAJOR 8
Expand Down
6 changes: 5 additions & 1 deletion drivers/staging/gma500/psb_fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -716,7 +716,11 @@ static void psb_setup_outputs(struct drm_device *dev)
break;
case INTEL_OUTPUT_LVDS:
PSB_DEBUG_ENTRY("LVDS.\n");
crtc_mask = (1 << 1);
if (IS_MRST(dev))
crtc_mask = (1 << 0);
else
crtc_mask = (1 << 1);

clone_mask = (1 << INTEL_OUTPUT_LVDS);
break;
case INTEL_OUTPUT_MIPI:
Expand Down
4 changes: 3 additions & 1 deletion drivers/staging/gma500/psb_intel_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,9 @@ static int psb_intel_panel_fitter_pipe(struct drm_device *dev)
if ((pfit_control & PFIT_ENABLE) == 0)
return -1;
/* Must be on PIPE 1 for PSB */
return 1;
if (!IS_MRST(dev))
return 1;
return (pfit_control >> 29) & 3;
}

static int psb_intel_crtc_mode_set(struct drm_crtc *crtc,
Expand Down
8 changes: 6 additions & 2 deletions drivers/staging/gma500/psb_intel_lvds.c
Original file line number Diff line number Diff line change
Expand Up @@ -400,11 +400,15 @@ bool psb_intel_lvds_mode_fixup(struct drm_encoder *encoder,
if (psb_intel_output->type == INTEL_OUTPUT_MIPI2)
panel_fixed_mode = mode_dev->panel_fixed_mode2;

/* PSB doesn't appear to be GEN4 */
if (psb_intel_crtc->pipe == 0) {
/* PSB requires the LVDS is on pipe B, MRST has only one pipe anyway */
if (!IS_MRST(dev) && psb_intel_crtc->pipe == 0) {
printk(KERN_ERR "Can't support LVDS on pipe A\n");
return false;
}
if (IS_MRST(dev) && psb_intel_crtc->pipe != 0) {
printk(KERN_ERR "Must use PIPE A\n");
return false;
}
/* Should never happen!! */
list_for_each_entry(tmp_encoder, &dev->mode_config.encoder_list,
head) {
Expand Down

0 comments on commit 2627aaa

Please sign in to comment.