Rockchip · AI & Linux Hub

Linux и загрузка

Тестирование сигнала Rockchip DP: регистры и настройка USBDP PHY RK3576/RK3588

Полное руководство по амплитуде DP PHY, эквализации, скорости фронтов, SSC, AUX и настройке драйвера с исходными таблицами регистров и замечаниями к источнику.

· ArmSoM Editorial · Rockchip source documentation · 11 мин чтения

Это полное изложение Rockchip DP Signal Test Guide V1.0.0 (RK-KF-YF-C13) для RK3576/RK3588 и Rockchip BSP с Linux 5.10/6.1. Официальная документация подтверждает RK3576 у ArmSoM Sige5 и RK3588 у Sige7. Это справочник по платформе: перед применением необходимо проверить разводку платы, экземпляр PHY, интерфейс DP/Type-C, коммит SDK/BSP, версии ядра и драйвера. Проверка на оборудовании ArmSoM не проводилась.

Предоставлен только китайский PDF (13 страниц); английская и русская версии полностью переведены с него. Отдельных технических иллюстраций в источнике нет. Все таблицы регистров восстановлены в редактируемом виде; наличие английских оригиналов рисунков не заявляется. Удалены указанные служебные заявления, контакты, целевая аудитория и история редакций; техническая версия и весь технический текст сохранены.

Сначала проверка, затем применение: примеры io -4 напрямую записывают аппаратные регистры и не являются универсальной настройкой платы. В источнике есть команды без пробелов и противоречия в разрядности, смещениях и заголовках. Они сохранены для прослеживаемости. Не выполняйте спорные строки копированием; сначала прочитайте замечания ниже и сверьтесь с TRM/BSP.

1. Обзор DP PHY

В RK3576 и RK3588 PHY USBDP совместно используется DP и USB. Ниже рассматривается настройка сигнала при работе PHY в режиме DP. Адрес регистра равен базовому адресу выбранного PHY плюс смещение регистра.

USBDP PHY Базовый адрес USBDP PHY
RK3588 USBDP PHY0 0xfed88000
RK3588 USBDP PHY1 0xfed98000
RK3576 USBDP PHY 0x2b018000

2. Настройка сигнала DP

Команды IO приведены для Lane0 PHY0 RK3588. Для других линий требуется изменить смещение, а для PHY1 RK3588 и PHY RK3576 — базовый адрес (здесь в источнике указано RK3756; см. замечания). Один регистр обычно управляет несколькими функциями. Перед совместной настройкой прочитайте текущее значение, примените операцию ИЛИ с новыми настраиваемыми битами согласно источнику и запишите результат, иначе предыдущие настройки будут перезаписаны.

2.1 Управление амплитудой DP

2.1.1 Уровень основного отвода передатчика DP

При настройке напряжения источник рекомендует сначала изменять этот регистр. Смещения приведены ниже; bit5 включает настройку, значение по умолчанию — 0x0f.

lane0: 0x0810[5:0]
lane1: 0x1010[5:0]
lane2: 0x1810[5:0]
lane3: 0x2010[5:0]

Диапазоны и команды ниже относятся к Lane0. Например, адрес Lane1 — 0xfed89010 (0xfed88810 + 0x800).

Амплитуда Команда [ reg offset 0x0810, bit 5:0]
4’b1010 : 1200mv (макс.) io -4 0xfed88810 0x2a
4’b1001: io -4 0xfed88810 0x29
4’b1000: io -4 0xfed888100x28
4’b0111: io -4 0xfed88810 0x27
4’b0110 : io -4 0xfed88810 0x26
4’b0101: io -4 0xfed88810 0x25
4’b0100: io -4 0xfed88810 0x24
4’b0011: io -4 0xfed88810 0x23
4’b0010 : io -4 0xfed88810 0x22
4’b0001: io -4 0xfed88810 0x21
4’b0000: 400mv (мин.) io -4 0xfed88810 0x20

2.1.2 Управление током PMOS передатчика DP

Если настройки напряжения недостаточно, измените регистр тока. Биты включения — bit[1:0], значения по умолчанию — {0x1, 0xe7}. Диапазон настройки приведён в таблице.

lane0: enable: 0x0818[1:0]; control: 0x081c[7:5]={3'b000 ~ 3'b111}
lane1: enable: 0x1018[1:0]; control: 0x101c[7:5]
lane2: enable: 0x1818[1:0]; control: 0x181c[7:5]
lane3: enable: 0x2018[1:0]; control: 0x201c[7:5]
Амплитуда Команда [ reg offset 0x081c, bit 7:5]
3’b111: io -4 0xfed88818 0x03
io -4 0xfed8881c 0xe5
3’b110: io -4 0xfed88818 0x03
io -4 0xfed8881c 0xc5
3’b101: io -4 0xfed88818 0x03
io -4 0xfed8881c 0xa5
3’b100: io -4 0xfed88818 0x03
io -4 0xfed8881c 0x85
3’b011 : io -4 0xfed88818 0x03
io -4 0xfed8881c 0x65
3’b010 : io -4 0xfed88818 0x03
io -4 0xfed8881c 0x45
4’b001: io -4 0xfed88818 0x03
io -4 0xfed8881c 0x25
4’b000: io -4 0xfed88818 0x03
io -4 0xfed8881c 0x05

2.2 Эквализация DP

2.2.1 Деэмфазис передатчика DP

Смещения приведены ниже. Bit4 включает настройку; значение по умолчанию — 0x0, то есть 0 dB. Уровни и рекомендации источника приведены в таблице.

lane0: 0x0814[4:0]
lane1: 0x1014[4:0]
lane2: 0x1814[4:0]
lane3: 0x2014[4:0]
Уровень Команда [ reg offset 0x0814, bit 4:0]
5’b10000: 0 dB io -4 0xfed88814 0x10
5’b11011: -5 dB (Источник рекомендует для скорости выше 5 Gbps) io -4 0xfed88814 0x1b
5’b10101: -2.8 dB (Источник рекомендует для скорости выше 10 Gbps) io -4 0xfed88814 0x15
5’b11001: -6.9 dB (Источник не рекомендует) io -4 0xfed88814 0x19

2.2.2 Уровень предварительного выброса DP TX

Bit6 включает настройку; значение по умолчанию — 0x0. Регистр общий с управлением током TX PMOS. Команды относятся к Lane0; для остальных линий измените смещение, например адрес Lane1 — 0xfed89018 (0xfed88818 + 0x800).

lane0: 0x0818[6:2]
lane1: 0x1018[6:2]
lane2: 0x1818[6:2]
lane3: 0x2018[6:2]
Уровень Команда [ reg offset 0x0818, bit 6:2]
5’b1000000: 0 dB (по умолчанию, Источник рекомендует для скорости выше 5 Gbps) io -4 0xfed88818 0x40
5’b1011000: -1.6 dB (Источник рекомендует для скорости выше 10 Gbps) io -4 0xfed88818 0x58
5’b11001: -6.9 dB (Источник не рекомендует) io -4 0xfed88818 0x64

2.3 Скорость фронтов DP TX

2.3.1 Увеличение скорости фронтов

Значения по умолчанию — {0xe7, 0x60}. Ниже указаны смещения регистров включения и силы драйвера.

lane0: enable: 0x081c[1:0]={2'b11}; strength: 0x0820[5:3]={3'b111 ~ 3'b000}
lane1: enable: 0x101c[1:0]; strength: 0x1020[5:3]
lane2: enable: 0x181c[1:0]; strength: 0x1820[5:3]
lane3: enable: 0x201c[1:0]; strength: 0x2020[5:3]

Диапазон настройки и команды IO ниже относятся к Lane0. Для остальных линий нужны другие смещения, например 0xfed8901c для Lane1 (0xfed8881c + 0x800).

Амплитуда Команда [ reg offset 0x081c, bit 7:5]
3’b111: io -4 0xfed8881c 0xe7
io -4 0xfed88820 0x78
3’b110: io -4 0xfed8881c 0xe7
io -4 0xfed888200x70
3’b101: io -4 0xfed8881c 0xe7
io -4 0xfed88820 0x68
3’b100: io -4 0xfed8881c 0xe7
io -4 0xfed88820 0x60
3’b011 : io -4 0xfed8881c 0xe7
io -4 0xfed88820 0x58
3’b010 : io -4 0xfed8881c 0xe7
io -4 0xfed88820 0x50
4’b001: io -4 0xfed8881c 0xe7
io -4 0xfed88820 0x48
4’b000: io -4 0xfed8881c 0xe7
io -4 0xfed88820 0x40

2.3.2 Уменьшение скорости фронтов

Значения по умолчанию — {0xe7, 0x60}. Ниже указаны смещения регистров включения и силы драйвера.

lane0: enable: 0x081c[1:0]={2'b10}; strength: 0x0820[5:3]={3'b111 ~ 3'b000}
lane1: enable: 0x101c[1:0]; strength: 0x1020[5:3]
lane2: enable: 0x181c[1:0]; strength: 0x1820[5:3]
lane3: enable: 0x201c[1:0]; strength: 0x2020[5:3]

Диапазон настройки и команды IO ниже относятся к Lane0. Для остальных линий нужны другие смещения, например 0xfed8901c для Lane1 (0xfed8881c + 0x800).

Примечание: этот регистр общий с управлением током TX PMOS.

Амплитуда Команда [ reg offset 0x081c, bit 7:5]
3’b111: io -4 0xfed8881c 0xe6
io -4 0xfed88820 0x78
3’b110: io -4 0xfed8881c 0xe6
io -4 0xfed88820 0x70
3’b101: io -4 0xfed8881c 0xe6
io -4 0xfed88820 0x68
3’b100: io -4 0xfed8881c 0xe6
io -4 0xfed88820 0x60
3’b011 : io -4 0xfed8881c 0xe6
io -4 0xfed88820 0x58
3’b010 : io -4 0xfed8881c 0xe6
io -4 0xfed88820 0x50
4’b001: io -4 0xfed8881c 0xe6
io -4 0xfed88820 0x48
4’b000: io -4 0xfed8881c 0xe6
io -4 0xfed88820 0x40

2.4 Управление SSC передатчика DP

2.4.1 Девиация модуляции PLL SSC

Значение по умолчанию — 0x19; ниже приведены смещения для каждой скорости и диапазон настройки.

RBR: 0x03F0[5:0]
HBR: 0x03F4[5:0]
HBR2: 0x03F8[5:0]
HBR3: 0x03FC[5:0]
Уровень Команда [ reg offset 0x03F0, bit5:0]
6’b000000: io -4 0xfed883f0 0x00
6’b000001: io -4 0xfed883f0 0x01
… …
4’b111110: io -4 0xfed883f0 0x3e
4’b111111: io -4 0xfed883f0 0x3f

2.4.2 Частота модуляции PLL SSC

Значение по умолчанию — 0x0f, для HBR3 — 0x3c. HBR3 требует сдвига влево на два бита. Список смещений источника расходится с таблицей команд; оба сохранены ниже и требуют проверки перед использованием.

RBR: 0x0404[4:0]
HBR: 0x0408[4:0]
HBR2: 0x040c[4:0]
HBR3: 0x0410[6:2] (default=0x3c)
Уровень Команда [ reg offset 0x0400, bit4:0]
5’b00000: io -4 0xfed88400 0x00 (HBR3:io -4 0xfed88410 0x00)
5’b00001: io -4 0xfed88400 0x01 (HBR3:io -4 0xfed88410 0x04)
… …
5’b11110: io -4 0xfed88400 0x1e (HBR3:io -4 0xfed88410 0x38)
5’b11111: io -4 0xfed88400 0x1f (HBR3:io -4 0xfed88410 0x3c)

2.5 Управление амплитудой DP TX AUX

Значение по умолчанию — 0x36; диапазон настройки приведён ниже.

aux swing: 0x0024[6:3]
Уровень Команда [ reg offset 0x0024, bit6:3] (bit[2:0] = 0x6(по умолчанию))
4’b0000: 0 mVpp io -4 0xfed88024 0x06
4’b0001: io -4 0xfed88024 0x0e
4’b0010: io -4 0xfed88024 0x16
4’b0011: io -4 0xfed88024 0x1e
4’b0100: io -4 0xfed88024 0x26
4’b0101: io -4 0xfed88024 0x2e
4’b0110: io -4 0xfed88024 0x36
4’b0111: 390 mVpp io -4 0xfed88024 0x3e
4’b1000: io -4 0xfed88024 0x46
4’b1001: io -4 0xfed88024 0x4e
4’b1010: io -4 0xfed88024 0x56
4’b1011: io -4 0xfed88024 0x5e
4’b1100: io -4 0xfed88024 0x66
4’b1101: io -4 0xfed88024 0x6e
4’b1110: io -4 0xfed88024 0x76
4’b1111: 880 mVpp io -4 0xfed88024 0x7e

3. Изменение параметров драйвера

Драйвер ядра: drivers/phy/rockchip/phy-rockchip-usbdp.c. Драйвер U-Boot: drivers/phy/phy-rockchip-usbdp.c. Регистры настройки swing и pre-emphasis представлены структурой:

struct dp_tx_drv_ctrl {
    u32 trsv_reg0204;
    u32 trsv_reg0205;
    u32 trsv_reg0206;
    u32 trsv_reg0207;
};

Ниже приведены смещения регистров каждой линии. В двух последних заголовках источника повторяется trsv_reg0206; это сохранено и отмечено в замечаниях.

  trsv_reg0204 trsv_reg0205 trsv_reg0206 trsv_reg0206
lane0 0x0810 0x0814 0x0818 0x081C
lane1 0x1010 0x1014 0x1018 0x101C
lane2 0x1810 0x1814 0x1818 0x181C
lane3 0x2010 0x2014 0x2018 0x201C

DP поддерживает четыре уровня скорости: RBR, HBR, HBR2 и HBR3. Следующие массивы задают swing и pre-emphasis. Для стандартного разъёма DP:

  RK3576 настройка RK3588 настройка
RBR rk3588_dp_tx_drv_ctrl_rbr_hbr_typec rk3588_dp_tx_drv_ctrl_rbr_hbr
HBR rk3588_dp_tx_drv_ctrl_rbr_hbr_typec rk3588_dp_tx_drv_ctrl_rbr_hbr
HBR2 rk3588_dp_tx_drv_ctrl_hbr2 rk3588_dp_tx_drv_ctrl_hbr2
HBR3 rk3588_dp_tx_drv_ctrl_hbr3 rk3588_dp_tx_drv_ctrl_hbr3

Для вывода через Type-C:

  RK3576 настройка RK3588 настройка
RBR rk3588_dp_tx_drv_ctrl_rbr_hbr_typec rk3588_dp_tx_drv_ctrl_rbr_hbr_typec
HBR rk3588_dp_tx_drv_ctrl_rbr_hbr_typec rk3588_dp_tx_drv_ctrl_rbr_hbr_typec
HBR2 rk3588_dp_tx_drv_ctrl_hbr2 rk3588_dp_tx_drv_ctrl_hbr2
HBR3 rk3588_dp_tx_drv_ctrl_hbr3 rk3588_dp_tx_drv_ctrl_hbr3

Каждый массив имеет размер 4×4 и хранит значения регистров для сочетаний уровней swing и pre-emphasis. SSC настраивается здесь:

static const struct reg_sequence rk3588_udphy_24m_refclk_cfg[] = {
    ......
    {0x03f0, 0x0a}, {0x03f4, 0x07},
    {0x03f8, 0x07}, {0x03fc, 0x0c},
    {0x0404, 0x12}, {0x0408, 0x1a},
    {0x040c, 0x1a}, {0x0410, 0x3f},
    ......
};

Амплитуда AUX настраивается здесь:

static const struct reg_sequence rk3588_udphy_init_sequence[] = {
    ......
    {0x0024, 0x6e},
};

Редакционные замечания и ограничения

В §2 источника написано RK3756, хотя в других местах указан RK3576. Обозначения разрядности 4'b001, 4'b111110, 5'b1000000 и соответствие уровней preshoot значениям регистров сохранены до проверки. В заголовках таблиц скорости фронтов указано 0x081c, bit 7:5, а в тексте — 0x0820[5:3]. Для частоты SSC смещение RBR указано как 0x0404, но команды используют 0xfed88400; старшие значения HBR3 также вызывают вопросы относительно сдвига на два бита. Не исправляйте их догадками.

Проверка изображений подтверждает отсутствие разделяющих пробелов уже в оригинале: на странице 5 — io -4 0xfed888100x28, на странице 8 — io -4 0xfed888200x70. Это дефекты источника, а не извлечения; строки сохранены, но не предлагаются как готовые команды. Запись регистров может нарушить работу DP/USB; проверяйте маски, общие биты и состояние драйвера в восстанавливаемой тестовой среде. Подробный журнал проверки.

Другие статьи по теме → · Учебные маршруты →