[Bug 15166] Changing brightness of backlight freezes kernel with radeon kms enabled.

2010-05-03 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=15166





--- Comment #45 from Alexey Diomin diomi...@gmail.com  2010-05-03 08:35:05 ---
For testing I switch to drm-radeon-testing branch

commit 6b8b1786a8c29ce6e32298b93ac8d4a18a2b11c4 resolved bug.

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.

--
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH] drm/radeon/kms: Expose backlight class device for legacy LVDS encoder.

2010-05-03 Thread Michel Dänzer
On Die, 2009-12-08 at 12:24 +0100, Rafał Miłecki wrote: 
 W dniu 8 grudnia 2009 12:03 użytkownik Michel Dänzer
 mic...@daenzer.net napisał:
  On Tue, 2009-12-08 at 11:32 +0100, Rafał Miłecki wrote:
  2009/12/8 Michel Dänzer mic...@daenzer.net:
   From: Michel Dänzer daen...@vmware.com
  
   Allows e.g. power management daemons to control the backlight level. 
   Inspired
   by the corresponding code in radeonfb.
  
   Signed-off-by: Michel Dänzer daen...@vmware.com
 
  I posted something similar but AFAIR got response we don't want this
  until fixing backlight class design.
 
  Unfortunately I'm not aware of any other available method to control the
  backlight on Apple PowerPC laptops. I'm open for suggestions though how
  this code could be disabled when another method is available.
 
 It's not that we don't want solution you wrote. It's absolutely
 wanted. But we need to improve backlight class because we start
 register many devices that control same display which drivers us to
 inconsistency.
 
 Please, check http://marc.info/?t=12593682454r=1w=2
 
 Hopefully I'll find some time to do that before .33 and we will able
 to include our patches then.

Any news on this?


Per demand from IRC, I'm posting the patch rebased against a newer
kernel tree.


commit f380d3bc243ade263c4dc034ce0873fbe9d96f75
Author: Michel Dänzer daen...@vmware.com
Date:   Thu Feb 25 16:47:00 2010 +0100

drm/radeon/kms: Expose backlight class device for legacy LVDS encoder.

Allows e.g. power management daemons to control the backlight level. 
Inspired
by the corresponding code in radeonfb.

Signed-off-by: Michel Dänzer daen...@vmware.com

diff --git a/drivers/gpu/drm/radeon/Kconfig b/drivers/gpu/drm/radeon/Kconfig
index 1c02d23..9746fee 100644
--- a/drivers/gpu/drm/radeon/Kconfig
+++ b/drivers/gpu/drm/radeon/Kconfig
@@ -1,6 +1,7 @@
 config DRM_RADEON_KMS
bool Enable modesetting on radeon by default - NEW DRIVER
depends on DRM_RADEON
+   select BACKLIGHT_CLASS_DEVICE
help
  Choose this option if you want kernel modesetting enabled by default.
 
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c 
b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
index cf389ce..fbc2df3 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
@@ -29,6 +29,10 @@
 #include radeon.h
 #include atom.h
 
+#ifdef CONFIG_PMAC_BACKLIGHT
+#include asm/backlight.h
+#endif
+
 static void radeon_legacy_encoder_disable(struct drm_encoder *encoder)
 {
struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
@@ -39,7 +43,7 @@ static void radeon_legacy_encoder_disable(struct drm_encoder 
*encoder)
radeon_encoder-active_device = 0;
 }
 
-static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
+static void radeon_legacy_lvds_update(struct drm_encoder *encoder, int mode)
 {
struct drm_device *dev = encoder-dev;
struct radeon_device *rdev = dev-dev_private;
@@ -47,15 +51,23 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder 
*encoder, int mode)
uint32_t lvds_gen_cntl, lvds_pll_cntl, pixclks_cntl, disp_pwr_man;
int panel_pwr_delay = 2000;
bool is_mac = false;
+   uint8_t backlight_level;
DRM_DEBUG(\n);
 
+   lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL);
+   backlight_level = (lvds_gen_cntl  RADEON_LVDS_BL_MOD_LEVEL_SHIFT)  
0xff;
+
if (radeon_encoder-enc_priv) {
if (rdev-is_atom_bios) {
struct radeon_encoder_atom_dig *lvds = 
radeon_encoder-enc_priv;
panel_pwr_delay = lvds-panel_pwr_delay;
+   if (lvds-bl_dev)
+   backlight_level = lvds-backlight_level;
} else {
struct radeon_encoder_lvds *lvds = 
radeon_encoder-enc_priv;
panel_pwr_delay = lvds-panel_pwr_delay;
+   if (lvds-bl_dev)
+   backlight_level = lvds-backlight_level;
}
}
 
@@ -82,11 +94,13 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder 
*encoder, int mode)
lvds_pll_cntl = ~RADEON_LVDS_PLL_RESET;
WREG32(RADEON_LVDS_PLL_CNTL, lvds_pll_cntl);
 
-   lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL);
-   lvds_gen_cntl |= (RADEON_LVDS_ON | RADEON_LVDS_EN | 
RADEON_LVDS_DIGON | RADEON_LVDS_BLON);
+   lvds_gen_cntl = ~(RADEON_LVDS_DISPLAY_DIS |
+  RADEON_LVDS_BL_MOD_LEVEL_MASK);
+   lvds_gen_cntl |= (RADEON_LVDS_ON | RADEON_LVDS_EN |
+ RADEON_LVDS_DIGON | RADEON_LVDS_BLON |
+ (backlight_level  
RADEON_LVDS_BL_MOD_LEVEL_SHIFT));
if (is_mac)
lvds_gen_cntl |= RADEON_LVDS_BL_MOD_EN;
-   lvds_gen_cntl = 

[Bug 15166] Changing brightness of backlight freezes kernel with radeon kms enabled.

2010-05-03 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=15166





--- Comment #46 from Manuel Ullmann ullman.b...@gmx.de  2010-05-03 21:58:30 
---
Confirmed. Fixed in drm-radeon-testing branch. No patch needed.

Aurélien Couderc, could you confirm this on your notebook?

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.
--
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel