opregion.c (d0034a7a4ac7fae708146ac0059b9c47a1543f0d) | opregion.c (f71635e893c3832790484f2e22b8d5825cc6ce1c) |
---|---|
1/* 2 * Copyright 2011 Intel Corporation 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the --- 133 unchanged lines hidden (view full) --- 142#define ASLE_PFMB_PWM_VALID (1<<31) 143 144#define ASLE_CBLV_VALID (1<<31) 145 146static struct psb_intel_opregion *system_opregion; 147 148static u32 asle_set_backlight(struct drm_device *dev, u32 bclp) 149{ | 1/* 2 * Copyright 2011 Intel Corporation 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the --- 133 unchanged lines hidden (view full) --- 142#define ASLE_PFMB_PWM_VALID (1<<31) 143 144#define ASLE_CBLV_VALID (1<<31) 145 146static struct psb_intel_opregion *system_opregion; 147 148static u32 asle_set_backlight(struct drm_device *dev, u32 bclp) 149{ |
150 struct drm_psb_private *dev_priv = dev->dev_private; | 150 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); |
151 struct opregion_asle *asle = dev_priv->opregion.asle; 152 struct backlight_device *bd = dev_priv->backlight_device; 153 154 DRM_DEBUG_DRIVER("asle set backlight %x\n", bclp); 155 156 if (!(bclp & ASLE_BCLP_VALID)) 157 return ASLE_BACKLIGHT_FAILED; 158 --- 34 unchanged lines hidden (view full) --- 193 asle_stat |= asle_set_backlight(dev_priv->dev, asle->bclp); 194 195 asle->aslc = asle_stat; 196 197} 198 199void psb_intel_opregion_asle_intr(struct drm_device *dev) 200{ | 151 struct opregion_asle *asle = dev_priv->opregion.asle; 152 struct backlight_device *bd = dev_priv->backlight_device; 153 154 DRM_DEBUG_DRIVER("asle set backlight %x\n", bclp); 155 156 if (!(bclp & ASLE_BCLP_VALID)) 157 return ASLE_BACKLIGHT_FAILED; 158 --- 34 unchanged lines hidden (view full) --- 193 asle_stat |= asle_set_backlight(dev_priv->dev, asle->bclp); 194 195 asle->aslc = asle_stat; 196 197} 198 199void psb_intel_opregion_asle_intr(struct drm_device *dev) 200{ |
201 struct drm_psb_private *dev_priv = dev->dev_private; | 201 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); |
202 203 if (dev_priv->opregion.asle) 204 schedule_work(&dev_priv->opregion.asle_work); 205} 206 207#define ASLE_ALS_EN (1<<0) 208#define ASLE_BLC_EN (1<<1) 209#define ASLE_PFIT_EN (1<<2) 210#define ASLE_PFMB_EN (1<<3) 211 212void psb_intel_opregion_enable_asle(struct drm_device *dev) 213{ | 202 203 if (dev_priv->opregion.asle) 204 schedule_work(&dev_priv->opregion.asle_work); 205} 206 207#define ASLE_ALS_EN (1<<0) 208#define ASLE_BLC_EN (1<<1) 209#define ASLE_PFIT_EN (1<<2) 210#define ASLE_PFMB_EN (1<<3) 211 212void psb_intel_opregion_enable_asle(struct drm_device *dev) 213{ |
214 struct drm_psb_private *dev_priv = dev->dev_private; | 214 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); |
215 struct opregion_asle *asle = dev_priv->opregion.asle; 216 217 if (asle && system_opregion ) { 218 /* Don't do this on Medfield or other non PC like devices, they 219 use the bit for something different altogether */ 220 psb_enable_pipestat(dev_priv, 0, PIPE_LEGACY_BLC_EVENT_ENABLE); 221 psb_enable_pipestat(dev_priv, 1, PIPE_LEGACY_BLC_EVENT_ENABLE); 222 --- 30 unchanged lines hidden (view full) --- 253} 254 255static struct notifier_block psb_intel_opregion_notifier = { 256 .notifier_call = psb_intel_opregion_video_event, 257}; 258 259void psb_intel_opregion_init(struct drm_device *dev) 260{ | 215 struct opregion_asle *asle = dev_priv->opregion.asle; 216 217 if (asle && system_opregion ) { 218 /* Don't do this on Medfield or other non PC like devices, they 219 use the bit for something different altogether */ 220 psb_enable_pipestat(dev_priv, 0, PIPE_LEGACY_BLC_EVENT_ENABLE); 221 psb_enable_pipestat(dev_priv, 1, PIPE_LEGACY_BLC_EVENT_ENABLE); 222 --- 30 unchanged lines hidden (view full) --- 253} 254 255static struct notifier_block psb_intel_opregion_notifier = { 256 .notifier_call = psb_intel_opregion_video_event, 257}; 258 259void psb_intel_opregion_init(struct drm_device *dev) 260{ |
261 struct drm_psb_private *dev_priv = dev->dev_private; | 261 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); |
262 struct psb_intel_opregion *opregion = &dev_priv->opregion; 263 264 if (!opregion->header) 265 return; 266 267 if (opregion->acpi) { 268 /* Notify BIOS we are ready to handle ACPI video ext notifs. 269 * Right now, all the events are handled by the ACPI video 270 * module. We don't actually need to do anything with them. */ 271 opregion->acpi->csts = 0; 272 opregion->acpi->drdy = 1; 273 274 system_opregion = opregion; 275 register_acpi_notifier(&psb_intel_opregion_notifier); 276 } 277} 278 279void psb_intel_opregion_fini(struct drm_device *dev) 280{ | 262 struct psb_intel_opregion *opregion = &dev_priv->opregion; 263 264 if (!opregion->header) 265 return; 266 267 if (opregion->acpi) { 268 /* Notify BIOS we are ready to handle ACPI video ext notifs. 269 * Right now, all the events are handled by the ACPI video 270 * module. We don't actually need to do anything with them. */ 271 opregion->acpi->csts = 0; 272 opregion->acpi->drdy = 1; 273 274 system_opregion = opregion; 275 register_acpi_notifier(&psb_intel_opregion_notifier); 276 } 277} 278 279void psb_intel_opregion_fini(struct drm_device *dev) 280{ |
281 struct drm_psb_private *dev_priv = dev->dev_private; | 281 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); |
282 struct psb_intel_opregion *opregion = &dev_priv->opregion; 283 284 if (!opregion->header) 285 return; 286 287 if (opregion->acpi) { 288 opregion->acpi->drdy = 0; 289 --- 9 unchanged lines hidden (view full) --- 299 opregion->acpi = NULL; 300 opregion->swsci = NULL; 301 opregion->asle = NULL; 302 opregion->vbt = NULL; 303} 304 305int psb_intel_opregion_setup(struct drm_device *dev) 306{ | 282 struct psb_intel_opregion *opregion = &dev_priv->opregion; 283 284 if (!opregion->header) 285 return; 286 287 if (opregion->acpi) { 288 opregion->acpi->drdy = 0; 289 --- 9 unchanged lines hidden (view full) --- 299 opregion->acpi = NULL; 300 opregion->swsci = NULL; 301 opregion->asle = NULL; 302 opregion->vbt = NULL; 303} 304 305int psb_intel_opregion_setup(struct drm_device *dev) 306{ |
307 struct drm_psb_private *dev_priv = dev->dev_private; | 307 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); |
308 struct pci_dev *pdev = to_pci_dev(dev->dev); 309 struct psb_intel_opregion *opregion = &dev_priv->opregion; 310 u32 opregion_phy, mboxes; 311 void __iomem *base; 312 int err = 0; 313 314 pci_read_config_dword(pdev, PCI_ASLS, &opregion_phy); 315 if (opregion_phy == 0) { --- 40 unchanged lines hidden --- | 308 struct pci_dev *pdev = to_pci_dev(dev->dev); 309 struct psb_intel_opregion *opregion = &dev_priv->opregion; 310 u32 opregion_phy, mboxes; 311 void __iomem *base; 312 int err = 0; 313 314 pci_read_config_dword(pdev, PCI_ASLS, &opregion_phy); 315 if (opregion_phy == 0) { --- 40 unchanged lines hidden --- |