diff options
Diffstat (limited to 'drivers/gpu/drm/gma500/psb_drv.c')
-rw-r--r-- | drivers/gpu/drm/gma500/psb_drv.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c index 6ec3a905fdd2..92e7e5795398 100644 --- a/drivers/gpu/drm/gma500/psb_drv.c +++ b/drivers/gpu/drm/gma500/psb_drv.c | |||
@@ -212,6 +212,8 @@ static int psb_driver_unload(struct drm_device *dev) | |||
212 | } | 212 | } |
213 | if (dev_priv->aux_pdev) | 213 | if (dev_priv->aux_pdev) |
214 | pci_dev_put(dev_priv->aux_pdev); | 214 | pci_dev_put(dev_priv->aux_pdev); |
215 | if (dev_priv->lpc_pdev) | ||
216 | pci_dev_put(dev_priv->lpc_pdev); | ||
215 | 217 | ||
216 | /* Destroy VBT data */ | 218 | /* Destroy VBT data */ |
217 | psb_intel_destroy_bios(dev); | 219 | psb_intel_destroy_bios(dev); |
@@ -280,6 +282,24 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags) | |||
280 | DRM_DEBUG_KMS("Couldn't find aux pci device"); | 282 | DRM_DEBUG_KMS("Couldn't find aux pci device"); |
281 | } | 283 | } |
282 | dev_priv->gmbus_reg = dev_priv->aux_reg; | 284 | dev_priv->gmbus_reg = dev_priv->aux_reg; |
285 | |||
286 | dev_priv->lpc_pdev = pci_get_bus_and_slot(0, PCI_DEVFN(31, 0)); | ||
287 | if (dev_priv->lpc_pdev) { | ||
288 | pci_read_config_word(dev_priv->lpc_pdev, PSB_LPC_GBA, | ||
289 | &dev_priv->lpc_gpio_base); | ||
290 | pci_write_config_dword(dev_priv->lpc_pdev, PSB_LPC_GBA, | ||
291 | (u32)dev_priv->lpc_gpio_base | (1L<<31)); | ||
292 | pci_read_config_word(dev_priv->lpc_pdev, PSB_LPC_GBA, | ||
293 | &dev_priv->lpc_gpio_base); | ||
294 | dev_priv->lpc_gpio_base &= 0xffc0; | ||
295 | if (dev_priv->lpc_gpio_base) | ||
296 | DRM_DEBUG_KMS("Found LPC GPIO at 0x%04x\n", | ||
297 | dev_priv->lpc_gpio_base); | ||
298 | else { | ||
299 | pci_dev_put(dev_priv->lpc_pdev); | ||
300 | dev_priv->lpc_pdev = NULL; | ||
301 | } | ||
302 | } | ||
283 | } else { | 303 | } else { |
284 | dev_priv->gmbus_reg = dev_priv->vdc_reg; | 304 | dev_priv->gmbus_reg = dev_priv->vdc_reg; |
285 | } | 305 | } |