usb: typec: tcpci_rt1711h: Add initial phy setting
authorGene Chen <gene_chen@richtek.com>
Fri, 5 Aug 2022 07:17:10 +0000 (15:17 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Aug 2022 09:05:12 +0000 (11:05 +0200)
Add initial phy setting about phy dicard retry,
rx filter deglitch time and BMC-encoded wait time

Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Gene Chen <gene_chen@richtek.com>
Link: https://lore.kernel.org/r/20220805071714.150882-5-gene.chen.richtek@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/tcpm/tcpci_rt1711h.c

index fb19d7bf9d1c3e65fa73e6b75439c566c9b33306..5c51d0474cfa4cf80b9e69a872a5ab5eab64c7c1 100644 (file)
@@ -19,6 +19,9 @@
 #define RT1711H_VID            0x29CF
 #define RT1711H_PID            0x1711
 
+#define RT1711H_PHYCTRL1       0x80
+#define RT1711H_PHYCTRL2       0x81
+
 #define RT1711H_RTCTRL8                0x9B
 
 /* Autoidle timeout = (tout * 2 + 1) * 6.4ms */
@@ -106,8 +109,18 @@ static int rt1711h_init(struct tcpci *tcpci, struct tcpci_data *tdata)
                return ret;
 
        /* dcSRC.DRP : 33% */
-       return rt1711h_write16(chip, RT1711H_RTCTRL16, 330);
+       ret = rt1711h_write16(chip, RT1711H_RTCTRL16, 330);
+       if (ret < 0)
+               return ret;
+
+       /* Enable phy discard retry, retry count 7, rx filter deglitch 100 us */
+       ret = rt1711h_write8(chip, RT1711H_PHYCTRL1, 0xF1);
+       if (ret < 0)
+               return ret;
 
+       /* Decrease wait time of BMC-encoded 1 bit from 2.67us to 2.55us */
+       /* wait time : (val * .4167) us */
+       return rt1711h_write8(chip, RT1711H_PHYCTRL2, 62);
 }
 
 static int rt1711h_set_vbus(struct tcpci *tcpci, struct tcpci_data *tdata,