Rev 2330 | Rev 3031 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2330 | Rev 2342 | ||
---|---|---|---|
Line 191... | Line 191... | ||
191 | } |
191 | } |
Line 192... | Line 192... | ||
192 | 192 | ||
193 | if (HAS_PCH_SPLIT(dev)) { |
193 | if (HAS_PCH_SPLIT(dev)) { |
194 | max >>= 16; |
194 | max >>= 16; |
195 | } else { |
195 | } else { |
196 | if (IS_PINEVIEW(dev)) { |
196 | if (INTEL_INFO(dev)->gen < 4) |
197 | max >>= 17; |
197 | max >>= 17; |
198 | } else { |
198 | else |
199 | max >>= 16; |
- | |
200 | if (INTEL_INFO(dev)->gen < 4) |
- | |
201 | max &= ~1; |
- | |
Line 202... | Line 199... | ||
202 | } |
199 | max >>= 16; |
203 | 200 | ||
204 | if (is_backlight_combination_mode(dev)) |
201 | if (is_backlight_combination_mode(dev)) |
Line 216... | Line 213... | ||
216 | 213 | ||
217 | if (HAS_PCH_SPLIT(dev)) { |
214 | if (HAS_PCH_SPLIT(dev)) { |
218 | val = I915_READ(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; |
215 | val = I915_READ(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; |
219 | } else { |
216 | } else { |
220 | val = I915_READ(BLC_PWM_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; |
217 | val = I915_READ(BLC_PWM_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; |
221 | if (IS_PINEVIEW(dev)) |
218 | if (INTEL_INFO(dev)->gen < 4) |
Line 222... | Line 219... | ||
222 | val >>= 1; |
219 | val >>= 1; |
223 | 220 | ||
Line 224... | Line -... | ||
224 | if (is_backlight_combination_mode(dev)){ |
- | |
225 | u8 lbpc; |
221 | if (is_backlight_combination_mode(dev)) { |
226 | 222 | u8 lbpc; |
|
227 | val &= ~1; |
223 | |
228 | pci_read_config_byte(dev->pdev, PCI_LBPC, &lbpc); |
224 | pci_read_config_byte(dev->pdev, PCI_LBPC, &lbpc); |
Line 239... | Line 235... | ||
239 | struct drm_i915_private *dev_priv = dev->dev_private; |
235 | struct drm_i915_private *dev_priv = dev->dev_private; |
240 | u32 val = I915_READ(BLC_PWM_CPU_CTL) & ~BACKLIGHT_DUTY_CYCLE_MASK; |
236 | u32 val = I915_READ(BLC_PWM_CPU_CTL) & ~BACKLIGHT_DUTY_CYCLE_MASK; |
241 | I915_WRITE(BLC_PWM_CPU_CTL, val | level); |
237 | I915_WRITE(BLC_PWM_CPU_CTL, val | level); |
242 | } |
238 | } |
Line 243... | Line 239... | ||
243 | 239 | ||
244 | void intel_panel_set_backlight(struct drm_device *dev, u32 level) |
240 | static void intel_panel_actually_set_backlight(struct drm_device *dev, u32 level) |
245 | { |
241 | { |
246 | struct drm_i915_private *dev_priv = dev->dev_private; |
242 | struct drm_i915_private *dev_priv = dev->dev_private; |
Line 247... | Line 243... | ||
247 | u32 tmp; |
243 | u32 tmp; |
Line 259... | Line 255... | ||
259 | level /= lbpc; |
255 | level /= lbpc; |
260 | pci_write_config_byte(dev->pdev, PCI_LBPC, lbpc); |
256 | pci_write_config_byte(dev->pdev, PCI_LBPC, lbpc); |
261 | } |
257 | } |
Line 262... | Line 258... | ||
262 | 258 | ||
263 | tmp = I915_READ(BLC_PWM_CTL); |
259 | tmp = I915_READ(BLC_PWM_CTL); |
264 | if (IS_PINEVIEW(dev)) { |
- | |
265 | tmp &= ~(BACKLIGHT_DUTY_CYCLE_MASK - 1); |
260 | if (INTEL_INFO(dev)->gen < 4) |
266 | level <<= 1; |
- | |
267 | } else |
261 | level <<= 1; |
268 | tmp &= ~BACKLIGHT_DUTY_CYCLE_MASK; |
262 | tmp &= ~BACKLIGHT_DUTY_CYCLE_MASK; |
269 | I915_WRITE(BLC_PWM_CTL, tmp | level); |
263 | I915_WRITE(BLC_PWM_CTL, tmp | level); |
Line 270... | Line 264... | ||
270 | } |
264 | } |
271 | 265 | ||
272 | void intel_panel_disable_backlight(struct drm_device *dev) |
266 | void intel_panel_set_backlight(struct drm_device *dev, u32 level) |
Line 273... | Line 267... | ||
273 | { |
267 | { |
274 | struct drm_i915_private *dev_priv = dev->dev_private; |
268 | struct drm_i915_private *dev_priv = dev->dev_private; |
275 | 269 | ||
276 | if (dev_priv->backlight_enabled) { |
270 | dev_priv->backlight_level = level; |
Line -... | Line 271... | ||
- | 271 | if (dev_priv->backlight_enabled) |
|
- | 272 | intel_panel_actually_set_backlight(dev, level); |
|
- | 273 | } |
|
- | 274 | ||
- | 275 | void intel_panel_disable_backlight(struct drm_device *dev) |
|
277 | dev_priv->backlight_level = intel_panel_get_backlight(dev); |
276 | { |
278 | dev_priv->backlight_enabled = false; |
277 | struct drm_i915_private *dev_priv = dev->dev_private; |
Line 279... | Line 278... | ||
279 | } |
278 | |
280 | 279 | dev_priv->backlight_enabled = false; |
|
281 | intel_panel_set_backlight(dev, 0); |
280 | intel_panel_actually_set_backlight(dev, 0); |
Line 282... | Line 281... | ||
282 | } |
281 | } |
283 | 282 | ||
Line 284... | Line -... | ||
284 | void intel_panel_enable_backlight(struct drm_device *dev) |
- | |
285 | { |
283 | void intel_panel_enable_backlight(struct drm_device *dev) |
- | 284 | { |
|
286 | struct drm_i915_private *dev_priv = dev->dev_private; |
285 | struct drm_i915_private *dev_priv = dev->dev_private; |
Line 287... | Line 286... | ||
287 | 286 | ||
288 | if (dev_priv->backlight_level == 0) |
287 | if (dev_priv->backlight_level == 0) |
289 | dev_priv->backlight_level = intel_panel_get_max_backlight(dev); |
288 | dev_priv->backlight_level = intel_panel_get_max_backlight(dev); |
Line 334... | Line 333... | ||
334 | } |
333 | } |
Line 335... | Line 334... | ||
335 | 334 | ||
336 | static int intel_panel_get_brightness(struct backlight_device *bd) |
335 | static int intel_panel_get_brightness(struct backlight_device *bd) |
337 | { |
336 | { |
- | 337 | struct drm_device *dev = bl_get_data(bd); |
|
338 | struct drm_device *dev = bl_get_data(bd); |
338 | struct drm_i915_private *dev_priv = dev->dev_private; |
339 | return intel_panel_get_backlight(dev); |
339 | return dev_priv->backlight_level; |
Line 340... | Line 340... | ||
340 | } |
340 | } |
341 | 341 | ||
342 | static const struct backlight_ops intel_panel_bl_ops = { |
342 | static const struct backlight_ops intel_panel_bl_ops = { |