Казус с производительностью USB-шины, заявивший о себе на Xiaomi Mi A2, поставил задачу разобраться с тем, как устроен USB-контроллер в процессорах семейства Qualcomm Snapdragon SDM630, SDM636 и SDM660. Документации на эти чипы в открытом доступе нет, а процедура согласования для ее получения обвешана гроздьями утомительных формальностей. По этой причине будем ссылаться на рекламный проспект Qualcomm Snapdragon 630 Mobile Hardware Development Kit, параллельно заглядывая в полное руководство по выпущенному ранее Snapdragon 600E Processor APQ8064E. Свои предположения и догадки будем проверять на аппаратной платформе ASUS Zenfone 4, она же Z01KD (по заводской кодификации ZE554KL).
Что с USB в 600-й серии Snapdragon?
Архитектура USB-шины процессоров APQ8064E предельно прозрачна: в кристалле есть три контроллера, один из которых предназначен исключительно для обслуживания SIM-карт. Он формирует внутреннюю шину и к периферийным устройствам никакого отношения не имеет. По современной классификации SIM-карты — это уже UICC-устройства, их производительность полностью удовлетворяется Full-Speed режимом обмена, хотя подключение и выполняется к контроллеру USB 2.0, реализованному в составе Qualcomm Snapdragon 600E.

Вспомним, что Full-Speed — это максимум 12 мегабит в секунду. Данный режим присущ USB 1.1 и контроллер USB 2.0 не умеет его поддерживать без хитрых трюков (на персональных платформах ранних выпусков с этой целью устанавливались контроллеры-компаньоны).
Primary-контроллер в составе процессора Snapdragon не только соответствует спецификации USB 2.0, но и способен в зависимости от подключения менять свои роли. Он может быть и хостом, обслуживающим внешнюю флешку, и периферийным устройством, доступным для персональной платформы. Вот это последнее с опорой на Android Composite ADB драйвер и обеспечивает MTP-обмен компьютера со смартфоном.
В документации на процессор есть существенная ремарка: несмотря на свои High-Speed таланты, Primary-контроллер в состоянии оперировать только скоростями Low-Speed и Full-Speed (дословно: can support USB operations at lowspeed and full-speed). Запомним этот твит.
И только Secondary-контроллер, по уверениям Qualcomm, способен обеспечить High-Speed, как того требует спецификация USB 2.0, на скорости до 480 мегабит в секунду. Но, судя по всему, ему недоступны функции USB On-The-Go.
О разъеме USB Type-C
Для многих будет сюрпризом — смартфоны на базе Qualcomm Snapdragon SDM630/SDM660 (не Snapdragon 600E!) оснащаются интерфейсом USB Type-C с поддержкой USB 2.0. Не исключение и ASUS Zenfone 4, и пресловутый Xiaomi Mi A2. В словосочетании USB 2.0 Type-C противоречия нет. Это может означать, например, следующую комбинацию функциональностей:
- Разъем Type-C
- Сигналы Type-C Configuration Channel
- Способность передачи повышенных токов — поддержка Power Delivery
- Дифференциальная пара (D+, D–) для реализации интерфейса USB 2.0
- Дифференциальные пары SSTX/SSRX для USB 3.0 отсутствуют
Под неотъемлемыми атрибутами Type-C стоит понимать не только наличие сигналов Configuration Channel, но и поддержку альтернативной функциональности. В отсутствие режима Super-Speed (и выше) коммутация линий USB-шины для передачи видео выглядит задачей нереально сложной. Она, как минимум, определяется наличием транспорта — дифференциальных пар SSTX/SSRX. Впрочем, это необходимое, но недостаточное условие: функциональность DisplayPort Alt Mode должна поддерживаться еще и системной логикой.
Ищем DisplayPort на USB-шине
Оценим состояние альтернативного DisplayPort с помощью ASUS Mini Dock — внешнего Billboard-контроллера. К его гнезду Typa-AF можно подключить стандартную USB-периферию, к гнезду Type-C — питание, персональную платформу или «свою» периферию. Гнездо HDMI обеспечивает вывод изображения на экран.

Стендовые показания подтвердили догадку — ASUS Zenfone 4 не поддерживает DisplayPort Alt Mode — проброс графического интерфейса с использованием линий USB-порта. Аналогичный результат был и у редакции IXBT со смартфоном Xiaomi Mi A2. Там, правда, в качестве Billboard-контроллера был задействован адаптер Tronsmart CTHA1.
По-видимому, коммутация между USB-контроллером и графическим чипом смартфона в рамках существующей архитектуры Qualcomm Snapdragon SDM630/SDM660 нереализуема: объектом коммутации должны быть линии USB 3.0 интерфейса SSTX/SSRX, а для конфигурирования и управления нужен интерфейса USB 2.0. Если он занят обменом, ни о какой альтернативной функциональности не может быть и речи.
USB-шина в ASUS Zenfone 4
Убедимся в правильности своих предположений, исследуя USB-шину в смартфоне ASUS Zenfone 4. У нас должно быть два сценария диагностики, которые определены спецификацией USB OTG. Для начала посмотрим, как смартфон видит подключенные через ASUS Mini Dock периферийные устройства? С помощью мобильного приложения USB Host Test оценим ситуацию с флеш-драйвом от ADATA.

Похоже, у нас на разъеме USB Type-C действительно задействованы только линии +5V, GND, D+, D–. Они формируют самый обычный USB 2.0 порт.
А теперь обратимся к Zenfone 4 со стороны персональной платформы. Для этого запустим диагностическую утилиту AIDA64:

Как же тогда смартфон ухитряется поддерживать симметричность USB Type-C порта? В отличие от сигнальных цепей USB 3.0, количество которых соответствует двум портам, сигнальные линии USB 2.0 порта в разъеме USB-C подключены к одному порту. Для того, чтобы интерфейс сохранял работоспособность при переворачивании разъема, соответствующие контакты просто закорачиваются.
Итоги и перспективы
За рамками статьи осталась диагностика схем внешней зарядки. А ведь в разъеме USB Type-C линии Configuration channel задают также напряжение питания, обеспечивая согласование параметров источника и потребителя. Правда, и логически, и физически это совсем не USB-протокол.
Источники
- Qualcomm Snapdragon 630 Mobile Platform Product Brief
- Qualcomm Snapdragon 660 Mobile Platform Product Brief
- Qualcomm Snapdragon 660 Mobile Hardware Development Kit
- Qualcomm Snapdragon 600E Processor APQ8064E Device Specification
- Qualcomm Snapdragon 600E Processor APQ8064E Recommended Memory Controller and Device Settings