lkml.org 
[lkml]   [2005]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: Trying to fix radeonfb suspending on IBM Thinkpad T41
From
Date
Ühel kenal päeval (esmaspäev, 24. jaanuar 2005, 16:01-0500), kirjutas
Volker Braun:
> Hi,
>
> This does the trick. In fact, i only need to get rid of the second
> OUTREG() call. No idea what that is good for. I'll update the bugzilla
> kernel entry with your patch and some additional information.

Ok, Great!

I have made another patch that disables this call altogether.
As far as I can understand it programs some registers that are related
to AGP clocking and according to some guys inside ATI, it is North
Bridge and Radeon chip dependent, but I don't know jack about ATI HW
programming so I might be seriously off here.
My laptop seems to do well without reprogramming this register and it
manages to crash Yours (and crashed mine with old driver) so I think it
should be left untouched until we get more information on how to do it
properly.

Can You please upload this patch to bugzilla instead?

If anyone tests the patch on some other thinkpad model please post it to
bugzilla so I we can get an impression how well it performs as well as
update the whitelist.

--
Antti Andreimann - Security Expert
Using Linux since 1993
Member of ELUG since 29.01.2000
--- linux-2.6.11-rc2-tank/drivers/video/aty/radeon_pm.c.orig 2005-01-24 23:52:17.000000000 +0200
+++ linux-2.6.11-rc2-tank/drivers/video/aty/radeon_pm.c 2005-01-25 00:00:24.000000000 +0200
@@ -25,8 +25,39 @@
#include <asm/pmac_feature.h>
#endif

+/* For detecting supported PC laptops */
+#ifdef CONFIG_X86
+#include <linux/dmi.h>
+#endif
+
#include "ati_ids.h"

+#ifdef CONFIG_X86
+/* This array holds a list of supported PC laptops.
+ * Currently only few IBM models are tested.
+ * If you want to experiment, use dmidecode to find out
+ * vendor and product codes for Your laptop.
+ */
+static struct dmi_system_id __devinitdata radeonfb_dmi_table[] = {
+ {
+ .ident = "IBM ThinkPad T41 (2373-2FG)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "23732FG"),
+ },
+ },
+ {
+ /* Reported by Volker Braun <vbraun@physics.upenn.edu> */
+ .ident = "IBM ThinkPad T41 (2379-DJU)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2379DJU"),
+ },
+ },
+ { },
+};
+#endif
+
void radeon_pm_disable_dynamic_mode(struct radeonfb_info *rinfo)
{
u32 tmp;
@@ -853,6 +884,13 @@
tmp = INPLL( pllMCLK_MISC) | MCLK_MISC__EN_MCLK_TRISTATE_IN_SUSPEND;
OUTPLL( pllMCLK_MISC, tmp);

+ /* BUS_CNTL1__MOBILE_PLATORM_SEL setting is northbridge chipset
+ * and radeon chip dependent. Thus we only enable it on Mac for
+ * now (until we get more info on how to compute the correct
+ * value for various X86 bridges).
+ */
+
+#ifdef CONFIG_PPC_PMAC
/* AGP PLL control */
if (rinfo->family <= CHIP_FAMILY_RV280) {
OUTREG(BUS_CNTL1, INREG(BUS_CNTL1) | BUS_CNTL1__AGPCLK_VALID);
@@ -864,6 +902,7 @@
OUTREG(BUS_CNTL1, INREG(BUS_CNTL1));
OUTREG(BUS_CNTL1, (INREG(BUS_CNTL1) & ~0x4000) | 0x8000);
}
+#endif

OUTREG(CRTC_OFFSET_CNTL, (INREG(CRTC_OFFSET_CNTL)
& ~CRTC_OFFSET_CNTL__CRTC_STEREO_SYNC_OUT_EN));
@@ -2748,6 +2787,24 @@
OUTREG(TV_DAC_CNTL, INREG(TV_DAC_CNTL) | 0x07000000);
}
#endif /* defined(CONFIG_PM) && defined(CONFIG_PPC_OF) */
+
+/* The PM code also works on some PC laptops.
+ * Only a few models are actually tested so Your mileage may vary.
+ * We can do D2 on at least M7 and M9 on some IBM ThinkPad T41 models.
+ */
+#if defined(CONFIG_PM) && defined(CONFIG_X86)
+ if (dmi_check_system(radeonfb_dmi_table)) {
+ if (rinfo->is_mobility && rinfo->pm_reg &&
+ rinfo->family <= CHIP_FAMILY_RV250)
+ rinfo->pm_mode |= radeon_pm_d2;
+
+ /* Power down TV DAC, that saves a significant amount of power,
+ * we'll have something better once we actually have some TVOut
+ * support
+ */
+ OUTREG(TV_DAC_CNTL, INREG(TV_DAC_CNTL) | 0x07000000);
+ }
+#endif /* defined(CONFIG_PM) && defined(CONFIG_X86) */
}

void radeonfb_pm_exit(struct radeonfb_info *rinfo)
\
 
 \ /
  Last update: 2005-03-22 14:09    [W:0.988 / U:0.352 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site