Subversion Repositories Kolibri OS

Rev

Rev 3482 | Rev 4104 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3482 Rev 3746
Line 284... Line 284...
284
 
284
 
285
void intel_panel_set_backlight(struct drm_device *dev, u32 level)
285
void intel_panel_set_backlight(struct drm_device *dev, u32 level)
286
{
286
{
Line 287... Line 287...
287
	struct drm_i915_private *dev_priv = dev->dev_private;
287
	struct drm_i915_private *dev_priv = dev->dev_private;
-
 
288
 
-
 
289
	dev_priv->backlight.level = level;
-
 
290
//   if (dev_priv->backlight.device)
288
 
291
//       dev_priv->backlight.device->props.brightness = level;
289
	dev_priv->backlight_level = level;
292
 
290
	if (dev_priv->backlight_enabled)
293
//   if (dev_priv->backlight.enabled)
Line 291... Line 294...
291
		intel_panel_actually_set_backlight(dev, level);
294
//       intel_panel_actually_set_backlight(dev, level);
292
}
295
}
293
 
296
 
Line 294... Line 297...
294
void intel_panel_disable_backlight(struct drm_device *dev)
297
void intel_panel_disable_backlight(struct drm_device *dev)
295
{
298
{
Line 296... Line 299...
296
	struct drm_i915_private *dev_priv = dev->dev_private;
299
	struct drm_i915_private *dev_priv = dev->dev_private;
297
 
300
 
Line 316... Line 319...
316
void intel_panel_enable_backlight(struct drm_device *dev,
319
void intel_panel_enable_backlight(struct drm_device *dev,
317
				  enum pipe pipe)
320
				  enum pipe pipe)
318
{
321
{
319
	struct drm_i915_private *dev_priv = dev->dev_private;
322
	struct drm_i915_private *dev_priv = dev->dev_private;
Line 320... Line 323...
320
 
323
 
321
	if (dev_priv->backlight_level == 0)
324
	if (dev_priv->backlight.level == 0) {
-
 
325
		dev_priv->backlight.level = intel_panel_get_max_backlight(dev);
-
 
326
//       if (dev_priv->backlight.device)
-
 
327
//           dev_priv->backlight.device->props.brightness =
-
 
328
//               dev_priv->backlight.level;
Line 322... Line 329...
322
		dev_priv->backlight_level = intel_panel_get_max_backlight(dev);
329
	}
323
 
330
 
Line 324... Line 331...
324
	if (INTEL_INFO(dev)->gen >= 4) {
331
	if (INTEL_INFO(dev)->gen >= 4) {
Line 333... Line 340...
333
		 * we don't track the backlight dpms state, hence check whether
340
		 * we don't track the backlight dpms state, hence check whether
334
		 * we have to do anything first. */
341
		 * we have to do anything first. */
335
		if (tmp & BLM_PWM_ENABLE)
342
		if (tmp & BLM_PWM_ENABLE)
336
			goto set_level;
343
			goto set_level;
Line 337... Line 344...
337
 
344
 
338
		if (dev_priv->num_pipe == 3)
345
		if (INTEL_INFO(dev)->num_pipes == 3)
339
			tmp &= ~BLM_PIPE_SELECT_IVB;
346
			tmp &= ~BLM_PIPE_SELECT_IVB;
340
		else
347
		else
Line 341... Line 348...
341
			tmp &= ~BLM_PIPE_SELECT;
348
			tmp &= ~BLM_PIPE_SELECT;
Line 358... Line 365...
358
set_level:
365
set_level:
359
	/* Call below after setting BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1.
366
	/* Call below after setting BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1.
360
	 * BLC_PWM_CPU_CTL may be cleared to zero automatically when these
367
	 * BLC_PWM_CPU_CTL may be cleared to zero automatically when these
361
	 * registers are set.
368
	 * registers are set.
362
	 */
369
	 */
363
	dev_priv->backlight_enabled = true;
370
	dev_priv->backlight.enabled = true;
364
	intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
371
	intel_panel_actually_set_backlight(dev, dev_priv->backlight.level);
365
}
372
}
Line 366... Line 373...
366
 
373
 
367
static void intel_panel_init_backlight(struct drm_device *dev)
374
static void intel_panel_init_backlight(struct drm_device *dev)
368
{
375
{
Line 369... Line 376...
369
	struct drm_i915_private *dev_priv = dev->dev_private;
376
	struct drm_i915_private *dev_priv = dev->dev_private;
370
 
377
 
371
	dev_priv->backlight_level = intel_panel_get_backlight(dev);
378
	dev_priv->backlight.level = intel_panel_get_backlight(dev);
Line 372... Line 379...
372
	dev_priv->backlight_enabled = dev_priv->backlight_level != 0;
379
	dev_priv->backlight.enabled = dev_priv->backlight.level != 0;
373
}
380
}
374
 
381
 
Line 403... Line 410...
403
}
410
}
Line 404... Line 411...
404
 
411
 
405
static int intel_panel_get_brightness(struct backlight_device *bd)
412
static int intel_panel_get_brightness(struct backlight_device *bd)
406
{
413
{
407
	struct drm_device *dev = bl_get_data(bd);
-
 
408
	struct drm_i915_private *dev_priv = dev->dev_private;
414
	struct drm_device *dev = bl_get_data(bd);
409
	return dev_priv->backlight_level;
415
	return intel_panel_get_backlight(dev);
Line 410... Line 416...
410
}
416
}
411
 
417
 
412
static const struct backlight_ops intel_panel_bl_ops = {
418
static const struct backlight_ops intel_panel_bl_ops = {
Line 420... Line 426...
420
	struct drm_i915_private *dev_priv = dev->dev_private;
426
	struct drm_i915_private *dev_priv = dev->dev_private;
421
	struct backlight_properties props;
427
	struct backlight_properties props;
Line 422... Line 428...
422
 
428
 
Line -... Line 429...
-
 
429
	intel_panel_init_backlight(dev);
-
 
430
 
-
 
431
	if (WARN_ON(dev_priv->backlight.device))
423
	intel_panel_init_backlight(dev);
432
		return -ENODEV;
424
 
433
 
-
 
434
	memset(&props, 0, sizeof(props));
425
	memset(&props, 0, sizeof(props));
435
	props.type = BACKLIGHT_RAW;
426
	props.type = BACKLIGHT_RAW;
436
	props.brightness = dev_priv->backlight.level;
427
	props.max_brightness = _intel_panel_get_max_backlight(dev);
437
	props.max_brightness = _intel_panel_get_max_backlight(dev);
428
	if (props.max_brightness == 0) {
438
	if (props.max_brightness == 0) {
429
		DRM_DEBUG_DRIVER("Failed to get maximum backlight value\n");
439
		DRM_DEBUG_DRIVER("Failed to get maximum backlight value\n");
430
		return -ENODEV;
440
		return -ENODEV;
431
	}
441
	}
432
	dev_priv->backlight =
442
	dev_priv->backlight.device =
433
		backlight_device_register("intel_backlight",
443
		backlight_device_register("intel_backlight",
Line 434... Line 444...
434
					  &connector->kdev, dev,
444
					  &connector->kdev, dev,
435
					  &intel_panel_bl_ops, &props);
445
					  &intel_panel_bl_ops, &props);
436
 
446
 
437
	if (IS_ERR(dev_priv->backlight)) {
447
	if (IS_ERR(dev_priv->backlight.device)) {
438
		DRM_ERROR("Failed to register backlight: %ld\n",
448
		DRM_ERROR("Failed to register backlight: %ld\n",
439
			  PTR_ERR(dev_priv->backlight));
449
			  PTR_ERR(dev_priv->backlight.device));
440
		dev_priv->backlight = NULL;
-
 
441
		return -ENODEV;
450
		dev_priv->backlight.device = NULL;
442
	}
451
		return -ENODEV;
Line 443... Line 452...
443
	dev_priv->backlight->props.brightness = intel_panel_get_backlight(dev);
452
	}
444
	return 0;
453
	return 0;
445
}
454
}
446
 
455
 
447
void intel_panel_destroy_backlight(struct drm_device *dev)
456
void intel_panel_destroy_backlight(struct drm_device *dev)
-
 
457
{
-
 
458
	struct drm_i915_private *dev_priv = dev->dev_private;
448
{
459
	if (dev_priv->backlight.device) {
449
	struct drm_i915_private *dev_priv = dev->dev_private;
460
		backlight_device_unregister(dev_priv->backlight.device);
450
	if (dev_priv->backlight)
461
		dev_priv->backlight.device = NULL;
451
		backlight_device_unregister(dev_priv->backlight);
462
	}
452
}
463
}