Subversion Repositories Kolibri OS

Rev

Rev 2330 | Rev 3031 | Go to most recent revision | Show entire file | Ignore 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 248... Line 244...
248
 
244
 
249
	DRM_DEBUG_DRIVER("set backlight PWM = %d\n", level);
245
	DRM_DEBUG_DRIVER("set backlight PWM = %d\n", level);
Line 250... Line 246...
250
 
246
 
251
	if (HAS_PCH_SPLIT(dev))
247
	if (HAS_PCH_SPLIT(dev))
252
		return intel_pch_panel_set_backlight(dev, level);
248
		return intel_pch_panel_set_backlight(dev, level);
Line 253... Line 249...
253
 
249
 
254
	if (is_backlight_combination_mode(dev)){
250
	if (is_backlight_combination_mode(dev)) {
255
		u32 max = intel_panel_get_max_backlight(dev);
251
		u32 max = intel_panel_get_max_backlight(dev);
256
		u8 lbpc;
252
		u8 lbpc;
Line 257... Line 253...
257
 
253
 
258
		lbpc = level * 0xfe / max + 1;
254
		lbpc = level * 0xfe / max + 1;
259
		level /= lbpc;
-
 
260
		pci_write_config_byte(dev->pdev, PCI_LBPC, lbpc);
255
		level /= lbpc;
261
	}
-
 
262
 
256
		pci_write_config_byte(dev->pdev, PCI_LBPC, lbpc);
263
	tmp = I915_READ(BLC_PWM_CTL);
257
	}
264
	if (IS_PINEVIEW(dev)) {
258
 
Line -... Line 259...
-
 
259
	tmp = I915_READ(BLC_PWM_CTL);
-
 
260
	if (INTEL_INFO(dev)->gen < 4) 
-
 
261
		level <<= 1;
-
 
262
		tmp &= ~BACKLIGHT_DUTY_CYCLE_MASK;
-
 
263
	I915_WRITE(BLC_PWM_CTL, tmp | level);
-
 
264
}
-
 
265
 
-
 
266
void intel_panel_set_backlight(struct drm_device *dev, u32 level)
-
 
267
{
265
		tmp &= ~(BACKLIGHT_DUTY_CYCLE_MASK - 1);
268
	struct drm_i915_private *dev_priv = dev->dev_private;
266
		level <<= 1;
269
 
267
	} else
270
	dev_priv->backlight_level = level;
Line 268... Line -...
268
		tmp &= ~BACKLIGHT_DUTY_CYCLE_MASK;
-
 
269
	I915_WRITE(BLC_PWM_CTL, tmp | level);
-
 
270
}
271
	if (dev_priv->backlight_enabled)
271
 
-
 
272
void intel_panel_disable_backlight(struct drm_device *dev)
-
 
273
{
272
		intel_panel_actually_set_backlight(dev, level);
274
	struct drm_i915_private *dev_priv = dev->dev_private;
273
}
Line 275... Line 274...
275
 
274
 
276
	if (dev_priv->backlight_enabled) {
275
void intel_panel_disable_backlight(struct drm_device *dev)
277
		dev_priv->backlight_level = intel_panel_get_backlight(dev);
276
{
Line 278... Line 277...
278
		dev_priv->backlight_enabled = false;
277
	struct drm_i915_private *dev_priv = dev->dev_private;
279
	}
278
 
Line 280... Line -...
280
 
-
 
281
	intel_panel_set_backlight(dev, 0);
279
		dev_priv->backlight_enabled = false;
-
 
280
	intel_panel_actually_set_backlight(dev, 0);
282
}
281
}
Line 283... Line 282...
283
 
282
 
284
void intel_panel_enable_backlight(struct drm_device *dev)
283
void intel_panel_enable_backlight(struct drm_device *dev)
285
{
284
{
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 = {