Subversion Repositories Kolibri OS

Rev

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 = {