Merge "msm: pcie: Disable support for dynamic link width"
This commit is contained in:
commit
8c5c4bad77
@ -7995,6 +7995,11 @@ int msm_pcie_set_target_link_speed(u32 rc_idx, u32 target_link_speed,
|
||||
}
|
||||
EXPORT_SYMBOL(msm_pcie_set_target_link_speed);
|
||||
|
||||
/**
|
||||
* msm_pcie_set_link_bandwidth() - will perform only dynamic GEN speed request
|
||||
* @target_link_speed: input the target link speed
|
||||
* @target_link_width: currently this API does not support dynamic link width change
|
||||
*/
|
||||
int msm_pcie_set_link_bandwidth(struct pci_dev *pci_dev, u16 target_link_speed,
|
||||
u16 target_link_width)
|
||||
{
|
||||
@ -8004,7 +8009,6 @@ int msm_pcie_set_link_bandwidth(struct pci_dev *pci_dev, u16 target_link_speed,
|
||||
u16 current_link_speed;
|
||||
u16 current_link_width;
|
||||
bool set_link_speed = true;
|
||||
bool set_link_width = true;
|
||||
int ret;
|
||||
|
||||
if (!pci_dev)
|
||||
@ -8029,7 +8033,6 @@ int msm_pcie_set_link_bandwidth(struct pci_dev *pci_dev, u16 target_link_speed,
|
||||
|
||||
current_link_speed = link_status & PCI_EXP_LNKSTA_CLS;
|
||||
current_link_width = link_status & PCI_EXP_LNKSTA_NLW;
|
||||
target_link_width <<= PCI_EXP_LNKSTA_NLW_SHIFT;
|
||||
|
||||
if (target_link_speed == current_link_speed)
|
||||
set_link_speed = false;
|
||||
@ -8039,23 +8042,14 @@ int msm_pcie_set_link_bandwidth(struct pci_dev *pci_dev, u16 target_link_speed,
|
||||
pcie_dev->rc_idx, current_link_speed,
|
||||
target_link_speed);
|
||||
|
||||
if (target_link_width == current_link_width)
|
||||
set_link_width = false;
|
||||
else
|
||||
PCIE_DBG(pcie_dev,
|
||||
"PCIe: RC%d: switching from x%d to x%d\n",
|
||||
pcie_dev->rc_idx,
|
||||
current_link_width >> PCI_EXP_LNKSTA_NLW_SHIFT,
|
||||
target_link_width >> PCI_EXP_LNKSTA_NLW_SHIFT);
|
||||
|
||||
if (!set_link_speed && !set_link_width)
|
||||
if (!set_link_speed)
|
||||
return 0;
|
||||
|
||||
if (set_link_width) {
|
||||
ret = msm_pcie_set_link_width(pcie_dev, target_link_width);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
PCIE_DBG(pcie_dev,
|
||||
"PCIe: RC%d: current link width:%d max link width:%d\n",
|
||||
pcie_dev->rc_idx,
|
||||
current_link_width >> PCI_EXP_LNKSTA_NLW_SHIFT,
|
||||
pcie_dev->link_width_max);
|
||||
|
||||
if (set_link_speed)
|
||||
msm_pcie_config_clear_set_dword(root_pci_dev,
|
||||
@ -8081,13 +8075,10 @@ int msm_pcie_set_link_bandwidth(struct pci_dev *pci_dev, u16 target_link_speed,
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
pcie_capability_read_word(root_pci_dev, PCI_EXP_LNKSTA, &link_status);
|
||||
if (pcie_dev->current_link_speed != target_link_speed ||
|
||||
(link_status & PCI_EXP_LNKSTA_NLW) != target_link_width) {
|
||||
if (pcie_dev->current_link_speed != target_link_speed) {
|
||||
PCIE_ERR(pcie_dev,
|
||||
"PCIe: RC%d: failed to switch bandwidth: target speed: %d width: %d\n",
|
||||
pcie_dev->rc_idx, target_link_speed,
|
||||
target_link_width >> PCI_EXP_LNKSTA_NLW_SHIFT);
|
||||
"PCIe: RC%d: failed to switch bandwidth: target speed: %d\n",
|
||||
pcie_dev->rc_idx, target_link_speed);
|
||||
ret = -EIO;
|
||||
goto out;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user