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 <pgeorgi@chromium.org>
Original-Commit-Id: de3cdef128966d76e7d8e2ebd641763b911c3ad5
Original-Change-Id: I00cb325b9938e4276cc77b5d6f5faa7023379608
Original-Signed-off-by: William wu <wulf@rock-chips.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/390615
Original-Commit-Ready: Julius Werner <jwerner@chromium.org>
Original-Tested-by: Julius Werner <jwerner@chromium.org>
Original-Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/16911
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
William wu 2016-09-29 15:18:41 +08:00 committed by Patrick Georgi
parent 801a8ef2c3
commit 5b1bb3d980
1 changed files with 10 additions and 2 deletions

View File

@ -237,9 +237,17 @@ static void setup_usb(void)
/* Set max ODT compensation voltage and current tuning reference. */ /* Set max ODT compensation voltage and current tuning reference. */
write32(&rk3399_grf->usbphy0_ctrl[3], 0x0fff02e3); write32(&rk3399_grf->usbphy0_ctrl[3], 0x0fff02e3);
write32(&rk3399_grf->usbphy1_ctrl[3], 0x0fff02e3); write32(&rk3399_grf->usbphy1_ctrl[3], 0x0fff02e3);
/* Set max pre-emphasis level, only on Kevin PHY0. */ /* Set max pre-emphasis level, only on Kevin PHY0 and PHY1,
if (IS_ENABLED(CONFIG_BOARD_GOOGLE_KEVIN)) * 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->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_otg0();
setup_usb_otg1(); setup_usb_otg1();