Ldetect-lst — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(Видеокарты ATI/AMD)
Строка 4: Строка 4:
 
===Классы видеокарт-драйверов===
 
===Классы видеокарт-драйверов===
  
# vesa - все что не поддерживается свободными драйверами. Переключается автоматом, если нет фирмвари... (TODO проверить!)
+
# vesa - все что не поддерживается свободными драйверами. Переключается автоматом, если нет фирмвари... (TODO Просто добавить vesa если не держит radeon)
 
# radeon - видеокарты с поддержкой только с свободными драйверами. Список в файле '''ati_pciids.csv'''. В скрипте '''$ati_free_only'''. Генерация использует функцию '''read_ati_pciids_csv'''
 
# radeon - видеокарты с поддержкой только с свободными драйверами. Список в файле '''ati_pciids.csv'''. В скрипте '''$ati_free_only'''. Генерация использует функцию '''read_ati_pciids_csv'''
 
# fglrx-legacy - видеокарты поддерживаемые legacy драйвером. Список в файле '''fglrxko_pci_ids.h'''. В скрипте '''$ati_driver_legacy'''. Генерация использует функцию '''read_fglrxko_pci_ids_h_legacy'''.  
 
# fglrx-legacy - видеокарты поддерживаемые legacy драйвером. Список в файле '''fglrxko_pci_ids.h'''. В скрипте '''$ati_driver_legacy'''. Генерация использует функцию '''read_fglrxko_pci_ids_h_legacy'''.  
Строка 20: Строка 20:
  
 
===Логика работы===
 
===Логика работы===
 +
Порядок обновления придется оставить такой, как есть.
  
1. Формируем список карт, поддерживаемых
+
1 проход. Обновляем Legacy
 +
 
 +
  convert/merge2pcitable fglrxko_pci_ids_h_legacy /path/to/fglrxko_pci_ids.h lst/pcitable > pcitable.new
 +
 
 +
Формируем список карт, поддерживаемых legacy драйверами. Так как карты могут быть убраны или не существовать, то выполняем следующие шаги:
 +
 
 +
# Берет d_pci текущий и смотрим на наличие там карт $ati_driver_legacy, $ati_driver_fw и $ati_driver_vesa.
 +
# Если карта в d_in совпадает с картой из $ati_driver_fw или $ati_driver_vesa, то заменяем ей d_pci (карта поддерживается легаси дровами)
 +
# Иначе если совпадает pci_id или нету - добавляем карту (может быть имя придется обновить, поэтому просто добавляем) с заменой дров, которые там есть
 +
# Иначе дропаем ее и заменяем свободной $ati_free_only (поддержка кончилась)
 +
 
 +
2 проход. Затем по этим картам пробегаемся и включаем поддержку frglx дров
 +
 
 +
  convert/merge2pcitable fglrxko_pci_ids_h /path/to/fglrxko_pci_ids.h lst/pcitable > pcitable.new
 +
 
 +
# Берем d_pci текущий и смотрим на наличие карт $ati_driver_legacy, $ati_driver_fw, $ati_driver_vesa
 +
# Если карта в d_in совпадает с картой из $ati_driver_fw или $ati_driver_vesa, то заменяем ей d_pci (карта поддерживается vesa/fglrx дровами)
 +
# Иначе просто совпадает d_pci или нету - добавляем карту
 +
# Иначе дропаем и заменяем свободной $ati_free_only (поддержка кончилась)
 +
 
 +
3 проход - пробегаем снова по картам и где можно переключаем назад vesa/fgrlx на radeon/fgrlx с поддержкой свободных дров и добавляем просто свободные драйвера где еще не сделано и дропаем на vesa где уже не поддерживает!
 +
 
 +
convert/merge2pcitable read_ati_pciids_csv /path/to/ati_pciids.csv lst/pcitable > pcitable.new
 +
 
 +
# Берем d_pci текущий и смотрим на наличие карт $ati_driver_vesa
 +
# Проверяем на совпадение. Если карта есть в наличии, то заменяем d_pci c $ati_driver_vesa на $ati_driver_fw
 +
# Берем d_pci и смотрим на наличие карт $ati_free_only. Если есть совпадения с d_in, то оставляем как есть, иначе ставим просто 'vesa' (свободные дрова тоже уже не держат).
 +
 
 +
FIXME (проверить, если дропает на веса fglrx-legacy, то добавить аналог vesa-legacy!)

Версия 16:41, 29 октября 2012

Rework механизма обнаружения оборудования...

Видеокарты ATI/AMD

Классы видеокарт-драйверов

  1. vesa - все что не поддерживается свободными драйверами. Переключается автоматом, если нет фирмвари... (TODO Просто добавить vesa если не держит radeon)
  2. radeon - видеокарты с поддержкой только с свободными драйверами. Список в файле ati_pciids.csv. В скрипте $ati_free_only. Генерация использует функцию read_ati_pciids_csv
  3. fglrx-legacy - видеокарты поддерживаемые legacy драйвером. Список в файле fglrxko_pci_ids.h. В скрипте $ati_driver_legacy. Генерация использует функцию read_fglrxko_pci_ids_h_legacy.

FIXME все ли legacy карты поддерживаются radeon?

  1. fglrx - видеокарты, поддерживаемые и свободными и простыми драйверами. Список в файле fglrxko_pci_ids.h. В скрипте $ati_driver_vesa. Генерация использует функцию read_fglrxko_pci_ids_h
  2. radeon/fglrx - видеокарты с поддержкой и свободных и проприетарных драйверов. В скрипте $ati_driver_fw
# UPDATE ME WHEN UPDATING ../lst/Cards+:
my $ati_driver_legacy  = 'Card:ATI Radeon HD 2000 to HD 4870 (radeon/fglrx-legacy)';
my $ati_driver_fw   = 'Card:ATI Radeon HD 6400 and later (radeon/fglrx)';
my $ati_driver_vesa = 'Card:ATI Radeon HD 5000 and later without free driver (vesa/fglrx)';
my $ati_free_only   = 'Card:ATI Radeon HD 4870 and earlier';

Логика работы

Порядок обновления придется оставить такой, как есть.

1 проход. Обновляем Legacy

 convert/merge2pcitable fglrxko_pci_ids_h_legacy /path/to/fglrxko_pci_ids.h lst/pcitable > pcitable.new

Формируем список карт, поддерживаемых legacy драйверами. Так как карты могут быть убраны или не существовать, то выполняем следующие шаги:

  1. Берет d_pci текущий и смотрим на наличие там карт $ati_driver_legacy, $ati_driver_fw и $ati_driver_vesa.
  2. Если карта в d_in совпадает с картой из $ati_driver_fw или $ati_driver_vesa, то заменяем ей d_pci (карта поддерживается легаси дровами)
  3. Иначе если совпадает pci_id или нету - добавляем карту (может быть имя придется обновить, поэтому просто добавляем) с заменой дров, которые там есть
  4. Иначе дропаем ее и заменяем свободной $ati_free_only (поддержка кончилась)

2 проход. Затем по этим картам пробегаемся и включаем поддержку frglx дров

 convert/merge2pcitable fglrxko_pci_ids_h /path/to/fglrxko_pci_ids.h lst/pcitable > pcitable.new
  1. Берем d_pci текущий и смотрим на наличие карт $ati_driver_legacy, $ati_driver_fw, $ati_driver_vesa
  2. Если карта в d_in совпадает с картой из $ati_driver_fw или $ati_driver_vesa, то заменяем ей d_pci (карта поддерживается vesa/fglrx дровами)
  3. Иначе просто совпадает d_pci или нету - добавляем карту
  4. Иначе дропаем и заменяем свободной $ati_free_only (поддержка кончилась)

3 проход - пробегаем снова по картам и где можно переключаем назад vesa/fgrlx на radeon/fgrlx с поддержкой свободных дров и добавляем просто свободные драйвера где еще не сделано и дропаем на vesa где уже не поддерживает!

convert/merge2pcitable read_ati_pciids_csv /path/to/ati_pciids.csv lst/pcitable > pcitable.new
  1. Берем d_pci текущий и смотрим на наличие карт $ati_driver_vesa
  2. Проверяем на совпадение. Если карта есть в наличии, то заменяем d_pci c $ati_driver_vesa на $ati_driver_fw
  3. Берем d_pci и смотрим на наличие карт $ati_free_only. Если есть совпадения с d_in, то оставляем как есть, иначе ставим просто 'vesa' (свободные дрова тоже уже не держат).

FIXME (проверить, если дропает на веса fglrx-legacy, то добавить аналог vesa-legacy!)