gma500: begin the config based split
authorAlan Cox <alan@linux.intel.com>
Tue, 5 Jul 2011 14:41:56 +0000 (15:41 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 5 Jul 2011 15:20:43 +0000 (08:20 -0700)
We don't want to carry all the extra gunk around on every device so use the
splitting work so far to tidy this up. Poulsbo is still mandatory as it is
used in bits by the other drivers and not neatly modularised.

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/gma500/Kconfig
drivers/staging/gma500/Makefile
drivers/staging/gma500/psb_drv.c
drivers/staging/gma500/psb_irq.c

index ce8bedaeaac21589f84768e4788bbc4939b36488..bfe2166acda6d4f14d4131c43cd58dbe9be7759a 100644 (file)
@@ -1,5 +1,5 @@
 config DRM_PSB
-       tristate "Intel GMA500 KMS Framebuffer"
+       tristate "Intel GMA5/600 KMS Framebuffer"
        depends on DRM && PCI && X86
        select FB_CFB_COPYAREA
         select FB_CFB_FILLRECT
@@ -7,6 +7,27 @@ config DRM_PSB
         select DRM_KMS_HELPER
         select DRM_TTM
        help
-         Say yes for an experimental KMS framebuffer driver for the
-         Intel GMA500 ('Poulsbo') graphics support.
+         Say yes for an experimental 2D KMS framebuffer driver for the
+         Intel GMA500 ('Poulsbo') and other Intel IMG based graphics
+         devices.
 
+config DRM_PSB_MRST
+       bool "Intel GMA600 support (Experimental)"
+       depends on DRM_PSB
+       help
+         Say yes to include support for GMA600 (Intel Moorestown/Oaktrail)
+         platforms with LVDS ports. HDMI and MIPI are not currently
+         supported.
+
+config DRM_PSB_MFLD
+       bool "Intel Medfield support (Experimental)"
+       depends on DRM_PSB
+       help
+         Say yes to include support for Intel Medfield platforms with MIPI
+         interfaces.
+       
+config DRM_PSB_CDV
+       bool "Intel Cedarview support (Experimental)"
+       depends on DRM_PSB
+       help
+         Say yes to include support for Intel Cedarview platforms
index 0603949ee74519a17c6db631b9794f26085ba996..aa6092687431de53274163179822f232a11aabc9 100644 (file)
@@ -22,12 +22,15 @@ psb_gfx-y += gem_glue.o \
          psb_mmu.o \
          psb_irq.o \
          psb_device.o \
-         cdv_device.o \
-         mid_bios.o \
-         mrst_device.o \
+         mid_bios.o
+
+psb_gfx-$(CONFIG_DRM_PSB_CDV) +=  cdv_device.o
+
+psb_gfx-$(CONFIG_DRM_PSB_MRST) += mrst_device.o \
          mrst_crtc.o \
-         mrst_lvds.o \
-         mdfld_device.o \
+         mrst_lvds.o
+
+psb_gfx-$(CONFIG_DRM_PSB_MFLD) += mdfld_device.o \
          mdfld_output.o \
          mdfld_pyr_cmd.o \
          mdfld_tmd_vid.o \
index 4114ffd74f18c9fa6c9835814186a63b136e1c19..69ab61b192ca7cc6944b036289682d014966f12c 100644 (file)
@@ -52,6 +52,7 @@ module_param_named(trap_pagefaults, drm_psb_trap_pagefaults, int, 0600);
 static DEFINE_PCI_DEVICE_TABLE(pciidlist) = {
        { 0x8086, 0x8108, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &psb_chip_ops },
        { 0x8086, 0x8109, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &psb_chip_ops },
+#if defined(CONFIG_DRM_PSB_MRST)       
        { 0x8086, 0x4100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mrst_chip_ops},
        { 0x8086, 0x4101, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mrst_chip_ops},
        { 0x8086, 0x4102, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mrst_chip_ops},
@@ -60,6 +61,8 @@ static DEFINE_PCI_DEVICE_TABLE(pciidlist) = {
        { 0x8086, 0x4105, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mrst_chip_ops},
        { 0x8086, 0x4106, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mrst_chip_ops},
        { 0x8086, 0x4107, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mrst_chip_ops},
+#endif
+#if defined(CONFIG_DRM_PSB_MFLD)
        { 0x8086, 0x0130, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mdfld_chip_ops},
        { 0x8086, 0x0131, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mdfld_chip_ops},
        { 0x8086, 0x0132, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mdfld_chip_ops},
@@ -68,6 +71,8 @@ static DEFINE_PCI_DEVICE_TABLE(pciidlist) = {
        { 0x8086, 0x0135, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mdfld_chip_ops},
        { 0x8086, 0x0136, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mdfld_chip_ops},
        { 0x8086, 0x0137, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &mdfld_chip_ops},
+#endif
+#if defined(CONFIG_DRM_PSB_CDV)        
        { 0x8086, 0x0be0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
        { 0x8086, 0x0be1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
        { 0x8086, 0x0be2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
@@ -76,6 +81,7 @@ static DEFINE_PCI_DEVICE_TABLE(pciidlist) = {
        { 0x8086, 0x0be5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
        { 0x8086, 0x0be6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
        { 0x8086, 0x0be7, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
+#endif 
        { 0, 0, 0}
 };
 MODULE_DEVICE_TABLE(pci, pciidlist);
@@ -396,6 +402,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
 
        dev->driver->get_vblank_counter = psb_get_vblank_counter;
 
+#if defined(CONFIG_DRM_PSB_MFLD)
        /* FIXME: this is not the right place for this stuff ! */
        if (IS_MFLD(dev)) {
 #ifdef CONFIG_MDFLD_DSI_DPU
@@ -406,7 +413,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
 #endif /*CONFIG_MDFLD_DSI_DPU*/
                /* INIT_WORK(&dev_priv->te_work, mdfld_te_handler_work);*/
        }
-
+#endif
        if (drm_psb_no_fb == 0) {
                psb_modeset_init(dev);
                psb_fbdev_init(dev);
index 3768cf19cc9d193d7cc1f37d814648b479d3d411..8fc7070c6cf9427c04d33e3743dc8f2aba2a3b67 100644 (file)
@@ -455,11 +455,12 @@ int psb_enable_vblank(struct drm_device *dev, int pipe)
        uint32_t reg_val = 0;
        uint32_t pipeconf_reg = mid_pipeconf(pipe);
 
+#if defined(CONFIG_DRM_PSB_MFLD)
        /* Medfield is different - we should perhaps extract out vblank
           and blacklight etc ops */
        if (IS_MFLD(dev) && !mdfld_panel_dpi(dev))
                return mdfld_enable_te(dev, pipe);
-
+#endif
        if (gma_power_begin(dev, false)) {
                reg_val = REG_READ(pipeconf_reg);
                gma_power_end(dev);
@@ -486,8 +487,10 @@ void psb_disable_vblank(struct drm_device *dev, int pipe)
        struct drm_psb_private *dev_priv = dev->dev_private;
        unsigned long irqflags;
 
+#if defined(CONFIG_DRM_PSB_MFLD)
        if (IS_MFLD(dev) && !mdfld_panel_dpi(dev))
                mdfld_disable_te(dev, pipe);
+#endif
        spin_lock_irqsave(&dev_priv->irqmask_lock, irqflags);
 
        mid_disable_pipe_event(dev_priv, pipe);