summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/gma500/mid_bios.c
diff options
context:
space:
mode:
authorAlan Cox2011-12-19 22:06:35 +0100
committerDave Airlie2011-12-20 11:25:10 +0100
commit0cecdd818cd79d092e36e70dfe3a71f2878d6b96 (patch)
treef7f6e5fbdfc77476a3408d3e545bbe4103293c4d /drivers/gpu/drm/gma500/mid_bios.c
parentgma500: SDVO DDC bus guessing isn't working so hardcode it instead (diff)
downloadkernel-qcow2-linux-0cecdd818cd79d092e36e70dfe3a71f2878d6b96.tar.gz
kernel-qcow2-linux-0cecdd818cd79d092e36e70dfe3a71f2878d6b96.tar.xz
kernel-qcow2-linux-0cecdd818cd79d092e36e70dfe3a71f2878d6b96.zip
gma500: Final enables for Oaktrail
This switches the ifdef to match the Kconfig so that Oaktrail probing occurs and adds some additional minor bulletproofing. Tested on a Fujtisu Stylistic Q550 internal display. HDMI might work but that remains to be seen. Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/gma500/mid_bios.c')
-rw-r--r--drivers/gpu/drm/gma500/mid_bios.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/drm/gma500/mid_bios.c b/drivers/gpu/drm/gma500/mid_bios.c
index 128e6bb37568..55fee10eefff 100644
--- a/drivers/gpu/drm/gma500/mid_bios.c
+++ b/drivers/gpu/drm/gma500/mid_bios.c
@@ -45,6 +45,12 @@ static void mid_get_fuse_settings(struct drm_device *dev)
#define FB_SKU_100 0
#define FB_SKU_100L 1
#define FB_SKU_83 2
+ if (pci_root == NULL) {
+ WARN_ON(1);
+ return;
+ }
+
+
pci_write_config_dword(pci_root, 0xD0, FB_REG06);
pci_read_config_dword(pci_root, 0xD4, &fuse_value);
@@ -101,6 +107,10 @@ static void mid_get_pci_revID(struct drm_psb_private *dev_priv)
uint32_t platform_rev_id = 0;
struct pci_dev *pci_gfx_root = pci_get_bus_and_slot(0, PCI_DEVFN(2, 0));
+ if (pci_gfx_root == NULL) {
+ WARN_ON(1);
+ return;
+ }
pci_read_config_dword(pci_gfx_root, 0x08, &platform_rev_id);
dev_priv->platform_rev_id = (uint8_t) platform_rev_id;
pci_dev_put(pci_gfx_root);
@@ -138,6 +148,10 @@ static void mid_get_vbt_data(struct drm_psb_private *dev_priv)
/* get the virtual address of the vbt */
vbt_virtual = ioremap(addr, sizeof(*vbt));
+ if (vbt_virtual == NULL) {
+ vbt->size = 0;
+ return;
+ }
memcpy(vbt, vbt_virtual, sizeof(*vbt));
iounmap(vbt_virtual); /* Free virtual address space */