Messages in this thread Patch in this message | | | Subject | Re: Trying to fix radeonfb suspending on IBM Thinkpad T41 | From | Antti Andreimann <> | Date | Mon, 24 Jan 2005 02:54:00 +0200 |
| |
Ühel kenal päeval (pühapäev, 23. jaanuar 2005, 16:54-0500), kirjutas Volker Braun: > Update: I compiled a kernel with the radeonfb-massive-update-of-pm- > code.patch. Now I can successfully resume from acpi S3 again. The power > drain issue remains, it still uses about 5W in the suspend state.
radeonfb power management is not enabled on PC platform. I cooked up some code to turn D2 sleep mode on for selected PC-s and managed to get my ThinkPad to work. Try this patch on top of radeonfb-massive. NB! The patch has a model specific triger, so You MUST add Your laptop model number to the top of the drivers/video/aty/radeon_pm.c.
-- 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-23 14:55:57.000000000 +0200 +++ linux-2.6.11-rc2-tank/drivers/video/aty/radeon_pm.c 2005-01-23 21:53:47.000000000 +0200 @@ -25,8 +25,31 @@ #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"), + }, + }, + { }, +}; +#endif + void radeon_pm_disable_dynamic_mode(struct radeonfb_info *rinfo) { u32 tmp; @@ -2748,6 +2771,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) | |