Ldetect-lst
Материал из Rosalab Wiki
Rework механизма обнаружения оборудования...
Видеокарты ATI/AMD
Классы видеокарт-драйверов
- vesa - все что не поддерживается свободными драйверами. Переключается автоматом, если нет фирмвари... (TODO Просто добавить vesa если не держит radeon)
- 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.
FIXME все ли legacy карты поддерживаются radeon?
- fglrx - видеокарты, поддерживаемые и свободными и простыми драйверами. Список в файле fglrxko_pci_ids.h. В скрипте $ati_driver_vesa. Генерация использует функцию read_fglrxko_pci_ids_h
- 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.pl 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 (карта поддерживается легаси дровами)
- Иначе если совпадает d_pci или d_in нету в текущем списке - оставляем или добавляем карту (может быть имя придется обновить, поэтому просто добавляем) с заменой дров, которые там есть
- Иначе дропаем ее и заменяем свободной $ati_free_only (поддержка кончилась)
2 проход. Затем по этим картам пробегаемся и включаем поддержку frglx дров
convert/merge2pcitable.pl 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_legacy, то заменяем ей d_pci (карта поддерживается vesa/fglrx дровами)
- Иначе просто совпадает d_pci или нету - оставляем или добавляем карту
- Иначе дропаем и заменяем свободной $ati_free_only (поддержка кончилась)
3 проход - пробегаем снова по картам и где можно переключаем назад vesa/fgrlx на radeon/fgrlx с поддержкой свободных дров и добавляем просто свободные драйвера где еще не сделано и дропаем на vesa где уже не поддерживает!
convert/merge2pcitable.pl 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!)