| .. | .. |
|---|
| 332 | 332 | static int __pciehp_link_set(struct controller *ctrl, bool enable) |
|---|
| 333 | 333 | { |
|---|
| 334 | 334 | struct pci_dev *pdev = ctrl_dev(ctrl); |
|---|
| 335 | | - u16 lnk_ctrl; |
|---|
| 336 | 335 | |
|---|
| 337 | | - pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &lnk_ctrl); |
|---|
| 336 | + pcie_capability_clear_and_set_word(pdev, PCI_EXP_LNKCTL, |
|---|
| 337 | + PCI_EXP_LNKCTL_LD, |
|---|
| 338 | + enable ? 0 : PCI_EXP_LNKCTL_LD); |
|---|
| 338 | 339 | |
|---|
| 339 | | - if (enable) |
|---|
| 340 | | - lnk_ctrl &= ~PCI_EXP_LNKCTL_LD; |
|---|
| 341 | | - else |
|---|
| 342 | | - lnk_ctrl |= PCI_EXP_LNKCTL_LD; |
|---|
| 343 | | - |
|---|
| 344 | | - pcie_capability_write_word(pdev, PCI_EXP_LNKCTL, lnk_ctrl); |
|---|
| 345 | | - ctrl_dbg(ctrl, "%s: lnk_ctrl = %x\n", __func__, lnk_ctrl); |
|---|
| 346 | 340 | return 0; |
|---|
| 347 | 341 | } |
|---|
| 348 | 342 | |
|---|