|
@@ -7455,16 +7455,27 @@ static void
|
|
|
cnss_pci_restore_rc_speed(struct cnss_pci_data *pci_priv)
|
|
|
{
|
|
|
int ret;
|
|
|
+ u16 link_speed;
|
|
|
struct cnss_plat_data *plat_priv = pci_priv->plat_priv;
|
|
|
|
|
|
- /* if not Genoa, do not restore rc speed */
|
|
|
- if (pci_priv->device_id != QCN7605_DEVICE_ID) {
|
|
|
+ switch (pci_priv->device_id) {
|
|
|
+ case QCN7605_DEVICE_ID:
|
|
|
+ /* do nothing, keep Gen1*/
|
|
|
+ return;
|
|
|
+ case QCA6490_DEVICE_ID:
|
|
|
+ /* restore to Gen2 */
|
|
|
+ link_speed = PCI_EXP_LNKSTA_CLS_5_0GB;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
/* The request 0 will reset maximum GEN speed to default */
|
|
|
- ret = cnss_pci_set_max_link_speed(pci_priv, plat_priv->rc_num, 0);
|
|
|
- if (ret)
|
|
|
- cnss_pr_err("Failed to reset max PCIe RC%x link speed to default, err = %d\n",
|
|
|
- plat_priv->rc_num, ret);
|
|
|
+ link_speed = 0;
|
|
|
+ break;
|
|
|
}
|
|
|
+
|
|
|
+ ret = cnss_pci_set_max_link_speed(pci_priv, plat_priv->rc_num, link_speed);
|
|
|
+ if (ret)
|
|
|
+ cnss_pr_err("Failed to set max PCIe RC%x link speed to %d, err = %d\n",
|
|
|
+ plat_priv->rc_num, link_speed, ret);
|
|
|
}
|
|
|
|
|
|
static void
|