Acpi Patcher Windows

Acpi Patcher Windows

F6x0X.png' alt='Acpi Patcher Windows' title='Acpi Patcher Windows' />Что такое ACPI и для чего оно нужно, я объяснять не стану это выходит за рамки топика, к тому. Все это делается в той же программе ACPI Patcher под Windows. Сразу скажу, что программа иногда выдает ошибки, тогда просто. Настройка оборудования на раннем этапе загрузки средствами ACPI на примере Free. BSD Хабрахабр. Несколько лет назад, когда Card. Bus и Fire. Wire IEEE 1. PCIXX2. 1 и PCIXX1. Texas Instruments один небольшой чип обеспечивал поддержку не только упомянутых интерфейсов, но и многих популярных стандартов сменных карт памяти. Такой чип а именно, PCI7. NEC Versa S9. 50. Этот малоизвестный ноутбук я в свое время предпочел даже Think. Pad серии практически исключительно из за более лучшей поддержки Free. BSD оборудования в целом и спящего режима в частности специально тестировал в новосибирском Техносити перед покупкой. Долгое время я не пользовался встроенным кард ридером, по привычке обходясь USBшными свистками. Но недавно я обнаружил, что Free. BSD до сих пор его не поддерживает. И если лет пять шесть назад это можно было объяснить отсутствием нормального драйвера для этих контроллеров нужно было что то скачивать и собирать самому, то теперь я точно знал, что они из коробки поддерживаются во Free. BSD драйвером sdhci4, о чем прямо сказано на странице руководства и позже подтвердилось чтением исходников. Я начал неспешно гуглить на эту тему, и картина стала вырисовываться невеселая. Оказалось, что таких счастливчиков, как я, немало. Многие постили в рассылки и форумы портянки dmesg и pciconf lv, заводили баги в трекерах например, Open. BSD PR i. 38. 65. Более того, фактически поставив точку в вопросе, Александр Мотин, автор драйвера sdhci4, в 2. В свою очередь, Theo de Raadt закрыл i. We do what we can. If you can find this information on some other operating system, or in some vendor documentation, we would be thrilled. В отчаянии я загрузился с Ubuntu Live. CD. И очень удивился тому, что в Linux кард ридер работает. Алекс Дубов написал Linux драйвер для TI Flash. Media ридеров. Я скачал исходники и принялся их изучать, надеясь впоследствии доработать sdhci4 или даже спортировать драйвер целиком. В первую очередь я посмотрел список поддерживаемых PCI vendordevice ids, чтобы сравнить с нашим драйвером. Он оказался небольшим cat linuxpci. А вот кусок кода из sdhci. Free. BSD static const struct sdhci. Кроме того, я обратил внимание, что контроллеры Card. Bus 0x. 80. 31. 10. Fire. Wire 0x. 80. PCI селекторы всех устройств отличаются только номером функции, а устройство у них у всех одно и то же none. Texas Instruments TI. PCIxx. 21x. 51. 5 Cardbus Controller. PCI Card. Bus. none. Texas Instruments TI. OHCI Compliant IEEE 1. Fire. Wire Controller. Fire. Wire. Вспомнив слова Саши Мотина о том, что чип на самом деле реализует оба контроллера SDHCI и Flash. Media, я стал искать более целенаправленно, и вскоре наткнулся на еще один пост, а затем на сообщение в рассылке freebsd mobile о похожей но немного другой проблеме на HP NC6. Рабочее решение нигде не предлагалось, но, в отличие от большинства дискуссий, которые сводились к дурацким советам типа попробуйте последнюю версию драйвера или банальным сожалею, но, похоже, вы в пролете, теперь, по крайней мере, стало понятно, что конфигурация чипа как то отображается в дампе PCI function а значит, возможно, ее получится поменять, а главное, что таки доступна документация PCIXXX2. PCIXXX1. 1 Implementation Guide. И вот тут мне стало по настоящему интересно. Забегая вперед, скажу, что удивительнее всего то, что люди, раскопав практически datasheet на капризный чип, останавливались в шаге от решения проблемы. Я так и не нашел ни у кого рецепта, как правильно воспользоваться документацией что и побудило меня написать этот пост. Но обо всем по порядку. PCIXXX2. 1PCIXXX1. Implementation Guide документ о 1. Подробно его разбирать смысла не имеет самое важное, что я из него почерпнул контроллер действительно реализует пять функций Card. Bus, 1. 39. 4, Flash. Media, SD Host и Smart. Card начальная конфигурация обычно берется из EEPROM. Главный регистр конфигурации General Control Register раздел 1. Eh 1. Fh в ROM нас интересует только нулевой байт, т. Теперь За дело. Для начала посмотрим, что нам скажет утилита pciconf8 про PCI configuration space головной нулевой функции чипа, т. Free. BSD, селектора pci. Ради краткости я не буду приводить дамп всех 2. Интересно. Смотрим в табличку на 6. Smart. Card socket power control и OHCI 1. А вот верхний нибл как раз маскирует включает выключает логику остальных контроллеров таблицу целиком не привожу опять же для экономии места 0x. D это 1. 10. 1, т. Следовательно, чтобы оживить контроллер SD Host, нам, по логике, надо сбросить DISABLE. Маске 1. 01. 1 соответсвует значение 0x. B, т. е. Проблема, однако, в том, что сделать это нужно сильно заранее, до того, как чип будет проинициализирован, вернее, до того, как он определит, какие контроллеры включать. После того, как система загрузилась, менять конфигурацию бесполезно все устройства уже в строю. И вот тут нам на помощь приходит. ACPI. Что такое ACPI и для чего оно нужно, я объяснять не стану это выходит за рамки топика, к тому же, на Хабре уже был хороший пост на эту тему. В данном случае нам важен вопрос можно ли пропатчить DSDT до инициализации чипа так, чтобы он включил нужный контроллер SD Host и выключил ненужный, для которого у нас нет драйвера Flash. Media. Посмотрим, какие у нас есть средства отладки и вывода информации в рамках интерпретатора виртуальной машины ACPI. В спецификации ACPI параграф 1. Debug, который операционная система должна донести до пользователя. Во Free. BSD за это отвечает системная переменная debug. Осталось придумать, как заставить ACPI выдавать интересующую нас информацию по требованию. Для начала сдампим и дизассемблируем DSDT ноута, и поизучаем его acpidump dt s. Я решил найти метод, который вызывается через какое либо внешнее воздействие или внутреннее, но периодическое, типа опроса батарейки, при этом практически не затрагивая работу железа. Изучая код DSDT, я наткнулся на любопытный кусок Method. На клавиатуре многих ноутбуков одна из функциональных клавиш в сочетании с Fn модификатором переключает видео вывод с внутреннего дисплея на внешний. На моей версе это F3. Попробуем модифицировать код метода следующим образом Method. Errors, 0 Warnings, 0 Remarks, 9. Optimizations. cp tmpacpidump. Чтобы Free. BSD использовала нашу таблицу при загрузке, добавим в bootloader. Теперь, когда мы более менее умеем взаимодействовать с ACPI, самое время попробовать. Достучаться до регистра 8. Физические адресные пространства всевозможных устройств оперативная память, порты ввода вывода, платы расширения, CMOS, IPMI и пр. ACPI в виде т. Operation. Чертежи Двутавров Dwg далее. Region для нашего контроллера может выглядеть, например, так Operation. Region PCIC, PCI. Устройства в DSDT задаются через ключевое слово Device параграф 1. Так, все PCI устройства находятся чаще всего внутри пространства устройства. В нашем случае помните вывод pciconf lv function 0, device 7, bus 6. То есть устройство, видимо, должно выглядеть как то так Device XX1. И где она в DSDTПосмотрим лог загрузки ядра dmesg dmesg. Номер 6 как и 4 для моста ей достался потому, что Free. BSD так распределила устройства. Внутри DSDT никаких шести шин и четырех мостов, конечно, нет. Мост Device PCIB там ровно один, как и ожидалось. Полностью наше описание должно выглядеть так привожу краткий вариант, не раскладывая регистр на отдельные биты Scope. Если мы все сделали верно, то должны увидеть то же самое значение, которое мы ранее читали через pciconf8 Реализация функции для записи значения регистра напрямую в видеопамять оставляется читателю в качестве легкого упражнения. Нам остается ответить на самый главный вопрос получится ли изменить значение регистра и заставить чип сконфигурировать себя так, как нам нужноСтандарт ACPI определяет специальный метод для инициализации устройств,. Добавим в наше устройство следующий код Method. Смотрим на. Результат. Прежде всего, обратим внимание, что контроллер 0x.

Acpi Patcher Windows
© 2017