Поделиться через


Другие объекты пространства имен ACPI

Для некоторых конкретных классов устройств существуют требования к тому, чтобы дополнительные объекты пространства имен Расширенной конфигурации и интерфейса питания (ACPI) отображались под этими устройствами в пространстве имен. В этом разделе перечислены дополнительные объекты, необходимые для платформ на основе SoC.

Объекты идентификации процессора

Процессоры должны быть перечислены в пространстве имен ACPI. Процессоры объявляются в разделе \_SB с помощью оператора Device, как и для других устройств на платформе. Устройства процессора должны содержать следующие объекты:

  • _HID: ACPI0007
  • _UID: уникальное число, соответствующее записи процессора в MADT.

Объекты, относящиеся к отображению

Дополнительные сведения об объектах, зависящих от отображения, см. в приложении B, "Расширения видео" спецификации ACPI 5.0.

Требования к объекту Display-Specific

Метод Описание Требование
_DOS Включение и отключение переключения выходных данных. Требуется, если система поддерживает переключение дисплея или уровни яркости ЖК-дисплея.
_DOD Перечисление всех устройств, подключенных к видеоадаптере. Требуется, если интегрированный контроллер поддерживает переключение вывода.
_ROM Получение данных ПЗУ. Требуется, если образ ПЗУ хранится в проприетарном формате.
_GPD Получение устройства POST. Требуется при реализации _VPO.
_SPD Задайте устройство POST. Требуется при реализации _VPO.
_VPO Параметры POST видео. Требуется, если система поддерживает изменение устройства после VGA.
_ADR Возвращает уникальный идентификатор для этого устройства. Обязательный.
_BCL Список поддерживаемых уровней управления яркостью. Требуется, если встроенный ЖК-дисплей поддерживает управление яркостью.
_BCM Задайте уровень яркости. Требуется при реализации _BCL.
_DDC Возвращает EDID для этого устройства. Требуется, если встроенный ЖК-дисплей не поддерживает возврат EDID через стандартный интерфейс.
_DCS Возвращает состояние устройства вывода. Требуется, если система поддерживает переключение дисплея (с помощью горячей клавиши).
_DGS Запрос состояния графики. Требуется, если система поддерживает переключение дисплея (с помощью горячей клавиши).
_DSS Набор состояний устройства. Требуется, если система поддерживает переключение дисплея (с помощью горячей клавиши).

Контроллеры и устройства узла USB

Usb-контроллеры узлов используются на платформах SoC для подключения внутренних и внешних устройств. Windows включает драйверы для папки "Входящие" для стандартных USB-контроллеров узлов, соответствующих спецификациям EHCI или XHCI.

На платформах на основе SoC контроллер узла USB можно перечислить с помощью ACPI. Windows использует следующие объекты пространства имен ACPI при перечислении и настройке совместимого usb-оборудования:

  • Назначаемый поставщиком acpi-совместимый идентификатор оборудования (_HID).

  • Объект Уникального идентификатора (_UID), если в пространстве имен имеется несколько экземпляров USB-контроллера (то есть два или более узлов с идентичными объектами идентификации устройств).

  • Совместимый идентификатор (_CID) для хост-контроллера USB, совместимого с EHCI или XHCI Standard (EHCI: PNP0D20), (XHCI: PNP0D10).

  • Текущие параметры ресурсов (_CRS), назначенные USB-контроллеру. Ресурсы контроллера описаны в соответствующей спецификации интерфейса оборудования (EHCI или XHCI).

Метод Device-Specific USB (_DSM)

Windows определяет метод Device-Specific (_DSM) для поддержки конфигурации подсистемы USB, зависят от класса устройства. Дополнительные сведения см. в разделе Метод USB Device-Specific.

Поддержка встроенного в USB транслятора транзакций (TT) (_HRV)

Контроллеры узла EHCI уровня "Стандартный" поддерживают только высокоскоростные USB-устройства. На платформах SoC Windows поддерживает две распространенные конструкции EHCI-совместимых хост-контроллеров, которые реализуют интегрированный переводчик транзакций для низкоскоростных и полноскоростных USB-устройств. Объект Hardware Revision (_HRV) указывает тип встроенной поддержки TT для драйвера USB-контроллера узла.

_HRV задается в соответствии со следующими критериями:

  • NoIntegratedTT — _HRV = 0

    Стандартные контроллеры узла EHCI не реализуют интегрированные переводчики транзакций, и значение _HRV 0 допустимо только для этих контроллеров. Нет необходимости включать объект _HRV для этих контроллеров.

  • IntegratedTTSpeedInPortSc — _HRV = 1

    Включите встроенную поддержку TT. Этот интерфейс включает биты LowSpeed и HiSpeed в регистре PORTSC. Эти биты имеют битовые смещения 26 и 27 соответственно. При определении скорости драйвер EHCI считывает PORTSC и извлекает сведения о скорости из этих битов.

  • IntegratedTTSpeedInHostPc — _HRV = 2

    Включите встроенную поддержку TT. Этот интерфейс включает биты LowSpeed и HiSpeed в отдельном регистре HOSTPC. Когда драйверу EHCI необходимо определить скорость порта, он считывает регистр HOSTPC, соответствующий интересующему порту, и извлекает сведения о скорости.

Поддержка USB XHCI D3cold

В дополнение к выборочной приостановке внутренние USB-устройства, подключенные к контроллерам XHCI, могут быть переведены в состояние D3cold и отключены, если они не используются. Дополнительные сведения см. в разделе Управление питанием устройств. Все драйверы функций USB-устройства должны согласиться на D3cold.

Объекты, зависящие от USB-порта

Windows должна знать видимость и возможность подключения USB-портов в системе. Это необходимо для предоставления пользователю точной информации о портах и устройствах. Для этой цели используются два объекта: Физическое расположение устройства (_PLD) и Возможности USB-порта (_UPC). Дополнительные сведения см. в следующих разделах:

Контроллеры и устройства узла SD

Контроллеры узла SD используются на платформах SoC для доступа к хранилищу, а также к устройствам ввода-вывода. Windows включает драйвер папки "Входящие" для оборудования SDA-стандартного хост-контроллера. Для совместимости с этим драйвером устройство хост-контроллера SD должно соответствовать спецификации SD Host Controller (Sd Association).

На платформах SoC контроллер узла SD можно перечислить с помощью ACPI. Windows использует следующие объекты пространства имен ACPI при перечислении и настройке совместимого оборудования SD:

  • Назначаемый поставщиком acpi-совместимый идентификатор оборудования (_HID).

  • Объект Уникального идентификатора (_UID), если в пространстве имен имеется несколько экземпляров контроллера SD (то есть два или более узлов с идентичными объектами идентификации устройств).

  • Совместимый идентификатор (_CID) для совместимого со стандартом SDA хост-контроллера SD (PNP0D40).

  • Текущие параметры ресурсов (_CRS), назначенные контроллеру. Ресурсы контроллера описываются следующим образом:

    • Включаются аппаратные ресурсы для всех реализованных слотов. Слот — это точка подключения в шине SDIO для памяти или устройства ввода-вывода. Каждый слот связан со стандартным набором регистров и прерыванием в хост-контроллере SD, которые используются для связи с подключенным устройством. Контроллеры узла SD могут реализовывать любое количество слотов, но на платформах SoC обычно существует только один.

    • Ресурсы слота перечислены вместе в порядке номера слота (ресурсы слота 0 являются первыми, ресурсы слота 1 — вторыми и т. д.).

    • Для каждого слота ресурсы перечислены в следующем порядке:

      • Базовый адрес стандартного набора регистров SD для слота.

      • Стандартное прерывание SD для слота.

      • Ресурс прерывания GPIO для слота для сигнализации карта вставки и удаления (если стандартный интерфейс SD карта обнаружения поддерживается не во всех состояниях питания).

      • Входной ресурс GPIO для слота для считывания того, находится ли карта в данный момент в слоте (если стандартный интерфейс SD карта обнаружения поддерживается не во всех состояниях питания). Использует тот же контакт, что и прерывание вставки или удаления.

      • Второй входной ресурс GPIO для считывания того, защищено ли карта в слоте (если стандартный защищенный интерфейс SD не поддерживается во время всех состояний питания).

Прерывания должны поддерживать пробуждение (описано как "SharedAndWake" или "ExclusiveAndWake").

Встроенные sd-устройства

Устройства, подключенные к SD, перечисляются драйвером шины SD. Устройства SD, интегрированные в платформу, также должны быть указаны в пространстве имен ACPI в качестве дочерних элементов контроллера узла SD. Это требование позволяет операционной системе связывать устройство, перечисленное в шине, с атрибутами конкретной платформы, предоставляемыми для устройства объектами ACPI (например, несъемность, состояния питания устройства, потребляемые ресурсы GPIO или SPB и т. д.). Чтобы установить эту связь, пространству имен устройства требуется объект Address (_ADR), который передает адрес устройства в шине SDIO. Объект _ADR возвращает целое число.

Для шины SDIO значение этого целого числа определяется следующим образом:

  • Высокое слово — номер слота (0 — первый слот)

  • Low word — номер функции (определения см. в спецификации SD).

Пространство имен внедренного sd-устройства также должно включать:

  • Объект метода Remove (_RMV), возвращающий значение 0 (чтобы указать, что устройство не удается удалить).

  • Объект _CRS для ресурсов боковой полосы, необходимых устройству (например, контактов GPIO или подключений SPB), если таковые требуются.

Устройства класса обработки изображений (камеры)

Устройства камеры могут быть перечислены с помощью графического драйвера или USB. В любом случае Windows необходимо знать физическое расположение камеры, чтобы можно было отображать соответствующий пользовательский интерфейс. Для этого устройства камеры, встроенные в корпус системы и имеющие механически фиксированное направление, включаются в пространство имен ACPI и предоставляют объект Физическое расположение устройства (_PLD). Для этого требуется:

  • Устройство камеры, которое будет отображаться в качестве дочернего (вложенного) устройства перечислителя (устройства GPU или USB-устройства).

  • Устройство камеры для предоставления объекта Address (_ADR), содержащего адрес камеры в шине родительского устройства.

    • Для USB см . раздел Иерархия пространства имен ACPI и _ADR для встроенных USB-устройств в следующем разделе ниже.

    • Для графики это идентификатор, указанный в методе _DOD, предоставленном в устройстве GPU. Дополнительные сведения см. в приложении B, "Расширения для видео" спецификации ACPI 5.0.

  • Устройство камеры для предоставления объекта _PLD.

  • Если драйверу камеры требуются какие-либо ресурсы боковой полосы (например, прерывание GPIO, подключения ввода-вывода или spb), для этих ресурсов предоставляется объект _CRS.

В объекте _PLD поля Панель (биты 67–69), Крышка (бит 66) и Поле Dock (бит 65) задаются для исправления значений поверхности, на которой установлена камера. Все остальные поля являются необязательными. Для портативных мобильных устройств, включая планшеты, на передней панели находится экран дисплея, а ее начало находится в левом нижнем углу, когда дисплей просматривается в книжной ориентации. Если использовать эту ссылку, "Front" означает, что камера просматривает пользователя (веб-камеру), а "Назад" означает, что камера находится далеко от пользователя (все еще или видеокамера). Дополнительные сведения см. в разделе 6.1.8 "_PLD (физическое расположение устройства)" в спецификации ACPI 5.0.

Иерархия пространства имен ACPI и _ADR для встроенных USB-устройств

При добавлении встроенных USB-устройств в пространство имен ACPI иерархия узлов устройств должна точно совпадать с иерархией устройств, перечисляемых драйвером WINDOWS USB. Это можно определить, изучив windows диспетчер устройств в режиме "Просмотр по подключению". Должна быть включена вся иерархия, начиная с хост-контроллера USB и до встраиваемого устройства. Свойство "Адрес", указанное в диспетчер устройств для каждого устройства, — это адрес, который встроенное ПО должно сообщить в _ADR устройства.

Спецификация ACPI 5.0 определяет адреса для USB-устройств следующим образом:

Корневой КОНЦЕНТРАТОР USB: только дочерний элемент хост-контроллера. Он должен иметь _ADR 0. Другие дочерние элементы или значения _ADR не допускаются.

USB-порты: номер порта (1–n)

USB-устройства, подключенные к определенному порту, используют адрес этого порта.

Если устройство, подключенное к порту, является составным USB-устройством, функции на составном устройстве должны использовать следующий адрес:

Функция USB в составном USB-устройстве: номер порта, к которому подключено составное устройство, а также первый номер интерфейса функции. (Арифметическое сложение).

Дополнительные сведения см. в разделе Определение расположения внутренних камер.

Примеры кода ASL

В следующем примере кода ASL описывается веб-камера USB, подключенная непосредственно к USB-порту 3.

Device (EHCI) {
    ...  // Objects required for EHCI devices
    Device {RHUB) {         // the Root HUB
     Name (_ADR, ZERO)      // Address is always 0.
     Device (CAM0) {          // Camera connected directly to USB
                       //   port number 3 under the Root.
            Name (_ADR, 3)      // Address is the same as the port.
            Method (_PLD, 0, Serialized) {...}
            }  //  End of Camera device
    } // End of Root Hub Device
}  // End of EHCI device

В следующем примере кода ASL описывается составное USB-устройство, которое реализует веб-камеру в качестве функции 2.

Device (EHCI) {
    ...  // Objects required for EHCI devices
    Device {RHUB) {
     Name (_ADR, ZERO)
     Device (CUSB) {        // Composite USB device
                    //   connected to USB port number 3
                    //   under the Root.
            Name (_ADR, 3)      // Address is the same as the port.
            Device (CAM0) { // Camera function within the
                    //   Composite USB device.
                Name (_ADR, 5)  // Camera function has a first
                    //   Interface number of 2, so
                    //   Address is 3 + 2  = 5.
                Method (_PLD, 0, Serialized) {...}
            }  //  End of Camera device
        } // End of Composite USB Device
    } // End of Root Hub Device
}  // End of EHCI device

В следующем примере кода ASL описывается веб-камера, подключенная через I2C.

Device (GPU0) {
    ... // Other objects required for graphics devices
    Name (_DOD, Package ()  // Identifies the children of this graphics device.
                // Each integer must be unique within the GPU0 namespace.
                {
                    0x00024321,  // The ID for CAM0. It is a non-VGA
                    //   device, cannot be detected by
                    //   the VGA BIOS, and uses a vendor-
                    //   specific ID format in bits 15:0
                    //   (see the _DOD specification).
                    ...     // Other child device IDs (for
                    //   example, display output ports)
                })
    Device (CAM0) {
        Name (_ADR, 0x00024321) // The identifier for this device
                    //   (Same as in _DOD above)
        Name (_CRS, ResourceTemplate()
            {
            // I2C Resource
            // GPIO interrupt resource(s), if required by
            //   driver
            // GPIO I/O resource(s), if required by driver
                ...
            })
        Method (_PLD, 0, Serialized) {...}
    } // End of CAM0 device
} // End of GPU0 device

Устройства HID-over-I2C

Windows включает драйвер класса для устройств HID. Этот драйвер обеспечивает универсальную поддержку широкого спектра устройств ввода (таких как сенсорные панели, клавиатуры, мыши и датчики). На платформах SoC устройства HID можно подключить к платформе по протоколу I2C и перечислить с помощью ACPI. Для совместимости с поддержкой класса HID в Windows используются следующие объекты пространства имен:

  • _HID конкретного поставщика

  • A _CID of PNP0C50

  • _CRS со следующими параметрами:

    • Ресурс I2CSerialBusConnection для доступа к устройству

    • Ресурс GpioInt для прерываний

  • Метод HIDI2C _DSM для возврата адреса регистрации дескриптора HID на устройстве. Дополнительные сведения см. в разделе Метод Device-Specific HIDI2C (_DSM).

Устройства с кнопками

Для платформ SoC Windows поддерживает как кнопку питания метода управления, определяемого ACPI, так и совместимый с Windows массив с пятью кнопками. Кнопка питания, реализованная как кнопка управления ACPI или как часть совместимого с Windows массива кнопок, выполняет следующие действия:

  • Приводит к включению питания платформы, если она отключена.

  • Создает событие переопределения кнопки питания при удержании. Дополнительные сведения см. в разделе 4.8.2.2.1.3 "Переопределение кнопки питания" спецификации ACPI 5.0.

Кнопка питания метода управления

Конструкции clamshell и другие системы со встроенными или подключенными клавиатурами реализуют кнопку питания метода управления, определяемого ACPI (раздел 4.8.2.2.1.2 спецификации ACPI 5.0), используя GPIO-Signaled событий ACPI (раздел 5.6.5 спецификации ACPI 5.0). Для поддержки устройства кнопки питания пространство имен:

  • Описывает контакт прерывания GPIO кнопки питания как ресурс прерывания GPIO без общего доступа (монопольный).

  • Перечисляет ресурс прерывания GPIO кнопки питания в объекте _AEI контроллера GPIO, к которому он подключен.

  • Предоставляет связанный метод события (Lxx/Exx/EVT) на устройстве контроллера GPIO. Этот метод события уведомляет драйвер кнопки метода управления в операционной системе о возникновении события кнопки.

Дополнительные сведения см. в разделе Аппаратные кнопки для Windows 8 планшетов и кабриолетов.

Совместимый с Windows массив кнопок

Для платформ с сенсорным вводом (без клавиатуры), таких как слайты, Windows предоставляет универсальный драйвер для массива из пяти кнопок. Каждая кнопка в массиве имеет определенную функцию (см. нумерованные элементы в списке ниже), а некоторые сочетания кнопок удержания и нажатия имеют дополнительное значение в пользовательском интерфейсе. Не определены сочетания кнопок, для которых требуется удерживать кнопку питания. Для совместимости с драйвером кнопки "Входящие" Windows реализовано совместимое с Windows устройство ACPI массива кнопок. Устройство определяется следующим образом:

  • Каждая из пяти кнопок подключена к отдельному выделенному закреплению прерываний на платформе.

  • Каждое закрепление прерывания настраивается как ресурс прерываний без общего доступа (монопольный), активированный по краю (Edge), который прерывает работу на обоих ребрах (ActiveBoth).

  • Пространство имен устройства содержит определенный поставщиком _HID а также _CID PNP0C40.

  • Ресурсы прерываний GPIO в объекте _CRS перечислены в следующем порядке:

    1. Прерывание, соответствующее кнопке "Питание"

      Кнопка "Питание" должна поддерживать пробуждение (ExclusiveAndWake).

    2. Прерывание, соответствующее кнопке "Windows"

      Кнопка Windows должна поддерживать пробуждение (ExclusiveAndWake).

    3. Прерывание, соответствующее кнопке "Увеличение громкости"

      Кнопка "Увеличение громкости" не должна поддерживать пробуждение (должна использовать монопольную).

    4. Прерывание, соответствующее кнопке "Уменьшение громкости"

      Кнопка "Уменьшение громкости" не должна поддерживать пробуждение (должна использоваться монопольная).

    5. Прерывание, соответствующее кнопке "Блокировка поворота", если это поддерживается

      Кнопка "Блокировка поворота" не должна поддерживать пробуждение (должна использовать монопольную).

Дополнительные сведения см. в разделе Аппаратные кнопки для Windows 8 планшетов и кабриолетов.

Для поддержки развития пользовательского интерфейса кнопки Windows Windows определяет метод Device-Specific (_DSM) для устройства с массивом кнопок Windows. Дополнительные сведения см. в статье Метод Device-Specific массива кнопок Windows (_DSM)..

Устройства для закрепления и преобразования компьютеров

Windows поддерживает док-станции и кабриолеты (со списком раскладушки или планшета) за счет использования двух устройств зондирования в пространстве имен ACPI. Эти устройства поддерживаются драйвером кнопки "Входящие" Windows. Обратите внимание, что те же требования, которые применяются к устройству Button Array, также применяются к этим устройствам:

  • Прерывания GPIO ActiveBoth должны быть подключены к контроллеру GPIO on-SoC (а не к контроллеру GPIO, подключенном к SPB).

  • Контроллер GPIO должен поддерживать прерывания режима уровня и динамическое перепрограммирование полярности.

  • Драйвер контроллера GPIO должен использовать эмуляцию ActiveBoth, предоставляемую расширением платформы GPIO (GpioClx).

  • Если состояние утверждения ("Закреплено" или "Преобразовано") не является низким уровнем логики, контроллер GPIO _DSM метод требуется для переопределения поведения стека драйверов GPIO по умолчанию. Дополнительные сведения см. в разделе Устройства контроллера GPIO статьи Ввод-вывод общего назначения (GPIO).

Дополнительные сведения см. в разделе Аппаратные кнопки для Windows 8 планшетов и кабриолетов.

Устройство для зондирования док-станции

Устройство с док-станцией прерывает работу системы, когда док-станция подключена к системе или отключается от нее. Эта информация об изменении режима используется для обновления пользовательского интерфейса ввода и вывода по мере необходимости. Для пространства имен устройства требуется:

  • _HID для конкретного поставщика

  • A _CID of PNP0C70

  • _CRS с одним прерыванием ActiveBoth

    Прерывание не поддерживает пробуждение.

Устройство для зондирования кабриолетов

Устройство, чувствительное к преобразованию ПК, прерывает работу системы, когда преобразуемый пк переключается с планшета на раскладной форм-фактор. Эта информация об изменении режима используется для обновления пользовательского интерфейса ввода и вывода по мере необходимости. Для пространства имен устройства требуется:

  • _HID для конкретного поставщика

  • A _CID of PNP0C60

  • _CRS с одним прерыванием ActiveBoth

    Прерывание не поддерживает пробуждение.