LINUX.ORG.RU

Проблемы с подсветкой (свист моника)

 , , ,


0

2

Привет, ЛОР. Собственно я опечален, долго капал, перебирал и решил таки спросить и попросить помощи тут по проблеме. А собственно дело было еще полтора года назад, когда я обновил ядро на Manjaro и спустя некоторое время начал замечать что с монитором что-то не так. А «не так» вот в чем выраженно: на максимальной подсветке при 100% яркость всеравно ниже той реальной которую я знаю. При уменьшении подсветки монитор ноута начинает издавать более отчетливый свист (точнее свистит инвертор) и лампы подсветки начинают моргать отчетливо для глаз. Сразу скажу - думал менять инвертор, вроде как все понятно ведь свистит то он, но решил накатить по старой винду. И каково было мое удивление, что там все в порядке и дело не в аппаратной, а в программной части :(

Подведу итоги: новые ядра пока не проверял, ибо сейчас на Ubuntu 14.04 все так же как было полтора года назад. Может кто знает решение или куда копать? Не верю что за столько времени этой проблеме нет решения. Конечно можно загнать старое ядро, года этак 2013 выпуска (основной ветки), но как-то не хочется пока что, если только не окажется, что это единственный вариант. Оборудование- ноут Asus F3Sr.



Последнее исправление: cetjs2 (всего исправлений: 2)

новые ядра пока не проверял

О чём разговор вообще тогда? Или смотри новые ядра, или качаешь git репу ведра, и ищешь с помощью git bisect где поломали

false ★★★★★
()

у меня тоже была подобная история: отвалился датчик приближения на Cyanogenmod'е. Bisect'нул до коммита, меняющего логику его работы, revert'нул его — заработал. Вернулся на чужие сборки — перестало. Зарепортил баг, посидел полмесяца подождал, а потом попробовал еще раз revert'нуть — а он не заработал. Оказывается, что чем активнее его тестируешь, тем сильнее он загрязняется и тем реже работает, а тот коммит тут ни разу не при чем. Протирать его надо почаще и все будет. Пришлось извиняться.

Это я к чему: не верю я тебе.

t184256 ★★★★★
()
Ответ на: комментарий от false

Попробую

Вечером буду копать, отпишусь что получилось.

Biogent
() автор топика

Проверка, итоги

Собственно, сегодня буду пробовать прав ли я. Я нашел причину, точнее нашел commit после которого у меня перестала нормально работать подсветка на мониторе ноута. Собственно виновник: 201bb62402e0227375c655446ea04fcd0acf7287.

diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
index 95ac45e..a3ab59a 100644
--- a/drivers/gpu/drm/radeon/atombios_encoders.c
+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
@@ -183,7 +183,6 @@  void radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder,
 	struct backlight_properties props;
 	struct radeon_backlight_privdata *pdata;
 	struct radeon_encoder_atom_dig *dig;
-	u8 backlight_level;
 	char bl_name[16];

 	/* Mac laptops with multiple GPUs use the gmux driver for backlight
@@ -222,12 +221,17 @@  void radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder,

 	pdata->encoder = radeon_encoder;

-	backlight_level = radeon_atom_get_backlight_level_from_reg(rdev);
-
 	dig = radeon_encoder->enc_priv;
 	dig->bl_dev = bd;

 	bd->props.brightness = radeon_atom_backlight_get_brightness(bd);
+	/* Set a reasonable default here if the level is 0 otherwise
+	 * fbdev will attempt to turn the backlight on after console
+	 * unblanking and it will try and restore 0 which turns the backlight
+	 * off again.
+	 */
+	if (bd->props.brightness == 0)
+		bd->props.brightness = RADEON_MAX_BL_LEVEL;
 	bd->props.power = FB_BLANK_UNBLANK;
 	backlight_update_status(bd);

Реверс делать бессмысленно, так как от этих изменений ушло куча других, можно погрязнуть в конфликтах с другими системами. Поэтому начал рыть что же делать. В итоге мой взор пал на «drm/radeon: disable native backlight control on pre-r6xx asics (v2)» - то что надо, вырубить нах эту хрень, что и сделал.

diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index 9a19e52..6b670b0 100644
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
@@ -179,6 +179,9 @@ static void radeon_encoder_add_backlight(struct radeon_encoder *radeon_encoder,
 		    (rdev->pdev->subsystem_vendor == 0x1734) &&
 		    (rdev->pdev->subsystem_device == 0x1107))
 			use_bl = false;
+		/* disable native backlight control on older asics */
+		else if (rdev->family < CHIP_R600)
+			use_bl = false;
 		else
 			use_bl = true;
 	}

В последнем случае, поставил use_bl = false, то есть фактически вырубил фичу для всех чипов ATI/AMD. Отпишу что получилось позже.

Biogent
() автор топика
9 октября 2016 г.
Ответ на: Проверка, итоги от Biogent

Друг как ты там? Удалось решить проблему? У меня на ms51sr (radeon hd2400) те же грабли.

leowerd
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.