[РЕШЕНО] Intel GM45 при загрузке подсветка не включается

Здравствуйте. У меня проблема уже давно, пока пользуюсь костылями, но хотелось бы спросить, может тут есть знатоки, которые помогут мне исправить всё это.
Дело вот в чём. Начиная с ядра версии 2.6.37 при загрузке ноутбука eMachines E725, не включается подсветка дисплея. Она включается только если нажать комбинацию клавиш Fn+стрелки(у меня так уровень яркости регулируется).
Пока проблему обошёл, добавив в /etc/rc.local строку setpci -s 00:02.0 F4.B=0. Однако посветка загорается довольно поздно, уже перед самым окном логина, и я не вижу весь процесс загрузки, да и после гибернации, ждущего режима она не зажигается самостоятельно.
Если кто в курсе, как можно поправить, напишите пожалуйста.
lspci | grep Display
00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 09)
dmesg | grep Intel
agpgart-intel 0000:00:00.0: Intel GM45 Chipset
Только если можно, без пересборки ядра т.к. после этого с выходом каждой версии ( ну или даже если несколько пропускать), придётся ядро пересобирать заново. Это муторно и заниматься этим не очень хочется / есть возможность.
Попробуйте в /boot/grub/menu.lst в опцию загрузки ядра добавить
acpi_osi=Linux

Пример
kernel /vmlinuz-linux root=/dev/sda3 ro acpi_osi=Linux
corner
Попробуйте в /boot/grub/menu.lst в опцию загрузки ядра добавить
acpi_osi=Linux

Пример
kernel /vmlinuz-linux root=/dev/sda3 ro acpi_osi=Linux
Уже добавлено.
А это ?
acpi_backlight=vendor

Если не поможет, что говорят kernel.log, errors.log, everything.log ?
вместо rc.local, комманду можно прописать в rc.sysinit…
corner
А это ?
acpi_backlight=vendor
Не помогает.

Если не поможет, что говорят kernel.log, errors.log, everything.log ?
С acpi_backlight=vendor или без?

вместо rc.local, комманду можно прописать в rc.sysinit…
Ну это тоже костыль, и тем более после команды setpci -s 00:02.0 F4.B=0 подсветка включается на максимум и перестаёт реагировать на попытки регулирования таким образом.
Посмотрел - везде висит в багах. Единственно, у кого-то на kerhel lts вроде работало.
А так, наверное, надо ждать исправления. Хотя его уже не производят, судя по сайту, и производитель позиционируется по Windows…
Я так понимаю проблема в модуле i915. Его можно пересобрать без пересборки всего ядра, и как? Я где-то видел патчи для него.
При загрузке ноутбука подсветка исправлена:
diff -r -w -p i915_dma.c /usr/src/linux-3.0-ARCH/drivers/gpu/drm/i915/i915_dma.c
*** i915_dma.c	2011-08-30 00:56:30.000000000 +0400
--- /usr/src/linux-3.0-ARCH/drivers/gpu/drm/i915/i915_dma.c	2011-09-01 09:29:17.051459833 +0400
*************** int i915_driver_load(struct drm_device *
*** 1893,1898 ****
--- 1893,1899 ----
  	struct drm_i915_private *dev_priv;
  	int ret = 0, mmio_bar;
  	uint32_t agp_size;
+ 	u32 max;
  
  	/* i915 has 4 more counters */
  	dev->counters += 4;
*************** int i915_driver_load(struct drm_device *
*** 2068,2073 ****
--- 2069,2081 ----
  	spin_unlock(&mchdev_lock);
  
  	ips_ping_for_i915_load();
+ 	/* force backlight brightness
+         * this is useful if the BIOS can't control the backlight
+         */
+        if (i915_force_backlight > 0 && i915_force_backlight <= 100) {
+                max = intel_panel_get_max_backlight(dev);
+                intel_panel_set_backlight(dev, i915_force_backlight * max / 100);
+        }
  
  	return 0;
diff -r -w -p i915_drv.c /usr/src/linux-3.0-ARCH/drivers/gpu/drm/i915/i915_drv.c
*** i915_drv.c	2011-08-30 00:56:30.000000000 +0400
--- /usr/src/linux-3.0-ARCH/drivers/gpu/drm/i915/i915_drv.c	2011-09-01 09:29:59.821228130 +0400
*************** module_param_named(lvds_downclock, i915_
*** 64,69 ****
--- 64,72 ----
  unsigned int i915_panel_use_ssc = 1;
  module_param_named(lvds_use_ssc, i915_panel_use_ssc, int, 0600);
  
+ unsigned int i915_force_backlight = 0;
+ module_param_named(force_backlight, i915_force_backlight, int, 0600);
+ 
  int i915_vbt_sdvo_panel_type = -1;
  module_param_named(vbt_sdvo_panel_type, i915_vbt_sdvo_panel_type, int, 0600);
diff -r -w -p i915_drv.h /usr/src/linux-3.0-ARCH/drivers/gpu/drm/i915/i915_drv.h
*** i915_drv.h	2011-08-30 00:56:30.000000000 +0400
--- /usr/src/linux-3.0-ARCH/drivers/gpu/drm/i915/i915_drv.h	2011-09-01 09:31:00.230900861 +0400
*************** extern unsigned int i915_powersave;
*** 992,997 ****
--- 992,998 ----
  extern unsigned int i915_semaphores;
  extern unsigned int i915_lvds_downclock;
  extern unsigned int i915_panel_use_ssc;
+ extern unsigned int i915_force_backlight;
  extern int i915_vbt_sdvo_panel_type;
  extern unsigned int i915_enable_rc6;
  extern unsigned int i915_enable_fbc;
После этого можно передать параметр i915.force_backlight=N, и подсветка заработает сразу.
А вот после ухода ноутбука в гибернацию / ждущий режим и после смены разрешения экрана подсветка не восстанавливается. Пробдему ещё можно было бы решить, если модуль i915 можно было бы свободно выгружать и загружать заново. Но ему походу мешает Xorg и KMS.
нашел вот для ThinkPad'ов:

acpi_sleep=s3_bios — makes the system call the video BIOS to reenable video on resume from suspend-to-ram (use this if you experience a blank display after resume while your system seems elsewise awake)

может поможет?


UPD

Или прописать парамметр в /etc/sysctl.conf и в /etc/pm/ на событие “возврат из сна” обновлять его через sysctl
 
Зарегистрироваться или войдите чтобы оставить сообщение.