From 5b1bb3d980475a4af5b2feed078ec64437da2175 Mon Sep 17 00:00:00 2001 From: William wu Date: Thu, 29 Sep 2016 15:18:41 +0800 Subject: [PATCH] google/gru: Add USB 2.0 PHY tuning for Kevin PHY0 and PHY1 We found that Kevin board PHY0 and PHY1 eye-diagram margin is not enough to make compliance test pass, and the PHY0 USB SI is worse than PHY1, because of the higher PCB impedance. For PHY0, we can't improve the eye-diagram by SW PHY tuning, so we need to reduce the RBIAS resistance from 133 ohm to 115 ohm, it can help to increase the eye-height. For PHY1, we can improve the eye-diagram by setting the max pre-emphasis level. And after the above change, the USB2 signal amplitude will become larger at the test point near to SOC USB2 PHY, in order to avoid mis-trigger the disconnect detection (650mV), we need to disable pre-emphasize in eop state. BRANCH=None BUG=chrome-os-partner:53863 TEST=do USB 2.0 compliance test for Kevin C0 and C1 port. Change-Id: I95c0acd79623aeca9a0ae077b1dd3836d91fe561 Signed-off-by: Patrick Georgi Original-Commit-Id: de3cdef128966d76e7d8e2ebd641763b911c3ad5 Original-Change-Id: I00cb325b9938e4276cc77b5d6f5faa7023379608 Original-Signed-off-by: William wu Original-Reviewed-on: https://chromium-review.googlesource.com/390615 Original-Commit-Ready: Julius Werner Original-Tested-by: Julius Werner Original-Reviewed-by: Julius Werner Reviewed-on: https://review.coreboot.org/16911 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth --- src/mainboard/google/gru/mainboard.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/mainboard/google/gru/mainboard.c b/src/mainboard/google/gru/mainboard.c index 0b55e7faf7..d34a9f730a 100644 --- a/src/mainboard/google/gru/mainboard.c +++ b/src/mainboard/google/gru/mainboard.c @@ -237,9 +237,17 @@ static void setup_usb(void) /* Set max ODT compensation voltage and current tuning reference. */ write32(&rk3399_grf->usbphy0_ctrl[3], 0x0fff02e3); write32(&rk3399_grf->usbphy1_ctrl[3], 0x0fff02e3); - /* Set max pre-emphasis level, only on Kevin PHY0. */ - if (IS_ENABLED(CONFIG_BOARD_GOOGLE_KEVIN)) + /* Set max pre-emphasis level, only on Kevin PHY0 and PHY1, + * and disable the pre-emphasize in eop state to avoid + * mis-trigger the disconnect detection. */ + if (IS_ENABLED(CONFIG_BOARD_GOOGLE_KEVIN)) { write32(&rk3399_grf->usbphy0_ctrl[12], 0xffff00a7); + write32(&rk3399_grf->usbphy1_ctrl[12], 0xffff00a7); + write32(&rk3399_grf->usbphy0_ctrl[0], 0x00010000); + write32(&rk3399_grf->usbphy1_ctrl[0], 0x00010000); + write32(&rk3399_grf->usbphy0_ctrl[13], 0x00010000); + write32(&rk3399_grf->usbphy1_ctrl[13], 0x00010000); + } setup_usb_otg0(); setup_usb_otg1();