From: Wei WANG <wei_wang@xxxxxxxxxxxxxx> In some platforms, specially Thinkpad series, rts5249 won't be initialized properly. So we need adjust some phy parameters to improve the compatibility issue. Signed-off-by: Wei WANG <wei_wang@xxxxxxxxxxxxxx> --- drivers/mfd/rts5249.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/drivers/mfd/rts5249.c b/drivers/mfd/rts5249.c index 3b835f5..e3c6dc1 100644 --- a/drivers/mfd/rts5249.c +++ b/drivers/mfd/rts5249.c @@ -130,13 +130,34 @@ static int rts5249_optimize_phy(struct rtsx_pcr *pcr) { int err; - err = rtsx_pci_write_phy_register(pcr, PHY_REG_REV, 0xFE46); + err = rtsx_pci_write_phy_register(pcr, PHY_REG_REV, 0xFC6C); if (err < 0) return err; msleep(1); - return rtsx_pci_write_phy_register(pcr, PHY_BPCR, 0x05C0); + err = rtsx_pci_write_phy_register(pcr, PHY_BPCR, 0x05C0); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, PHY_PCR, 0xBA42); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, PHY_RCR2, 0xC56A); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, PHY_FLD4, 0x78EB); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, PHY_RDR, 0x4000); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, PHY_RCR1, 0x011F); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, PHY_FLD3, 0x78E4); + if (err < 0) + return err; + return rtsx_pci_write_phy_register(pcr, PHY_TUNE, 0x4FE4); } static int rts5249_turn_on_led(struct rtsx_pcr *pcr) -- 1.7.9.5 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel