• Home
  • Raw
  • Download

Lines Matching +full:pci +full:- +full:dev

1 // SPDX-License-Identifier: GPL-2.0
19 #include <linux/pci.h>
25 #include "../../pci.h"
26 #include "pcie-designware.h"
31 #define PCIE_ABSERR_SETTING 0x9401 /* Forward error of non-posted request */
46 struct dw_pcie *pci; member
53 #define to_ls_pcie(x) dev_get_drvdata((x)->dev)
57 struct dw_pcie *pci = pcie->pci; in ls_pcie_is_bridge() local
60 header_type = ioread8(pci->dbi_base + PCI_HEADER_TYPE); in ls_pcie_is_bridge()
66 /* Clear multi-function bit */
69 struct dw_pcie *pci = pcie->pci; in ls_pcie_clear_multifunction() local
71 iowrite8(PCI_HEADER_TYPE_BRIDGE, pci->dbi_base + PCI_HEADER_TYPE); in ls_pcie_clear_multifunction()
78 struct dw_pcie *pci = pcie->pci; in ls_pcie_drop_msg_tlp() local
80 val = ioread32(pci->dbi_base + PCIE_STRFMR1); in ls_pcie_drop_msg_tlp()
82 iowrite32(val, pci->dbi_base + PCIE_STRFMR1); in ls_pcie_drop_msg_tlp()
85 /* Forward error response of outbound non-posted requests */
88 struct dw_pcie *pci = pcie->pci; in ls_pcie_fix_error_response() local
90 iowrite32(PCIE_ABSERR_SETTING, pci->dbi_base + PCIE_ABSERR); in ls_pcie_fix_error_response()
95 if (pcie->big_endian) in ls_pcie_pf_readl()
96 return ioread32be(pcie->pf_base + off); in ls_pcie_pf_readl()
98 return ioread32(pcie->pf_base + off); in ls_pcie_pf_readl()
103 if (pcie->big_endian) in ls_pcie_pf_writel()
104 iowrite32be(val, pcie->pf_base + off); in ls_pcie_pf_writel()
106 iowrite32(val, pcie->pf_base + off); in ls_pcie_pf_writel()
111 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in ls_pcie_send_turnoff_msg() local
112 struct ls_pcie *pcie = to_ls_pcie(pci); in ls_pcie_send_turnoff_msg()
125 dev_err(pcie->pci->dev, "PME_Turn_off timeout\n"); in ls_pcie_send_turnoff_msg()
130 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in ls_pcie_exit_from_l2() local
131 struct ls_pcie *pcie = to_ls_pcie(pci); in ls_pcie_exit_from_l2()
152 dev_err(pcie->pci->dev, "L2 exit timeout\n"); in ls_pcie_exit_from_l2()
157 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in ls_pcie_host_init() local
158 struct ls_pcie *pcie = to_ls_pcie(pci); in ls_pcie_host_init()
162 dw_pcie_dbi_ro_wr_en(pci); in ls_pcie_host_init()
164 dw_pcie_dbi_ro_wr_dis(pci); in ls_pcie_host_init()
186 { .compatible = "fsl,ls1012a-pcie", .data = &layerscape_drvdata },
187 { .compatible = "fsl,ls1021a-pcie", .data = &ls1021a_drvdata },
188 { .compatible = "fsl,ls1028a-pcie", .data = &layerscape_drvdata },
189 { .compatible = "fsl,ls1043a-pcie", .data = &ls1021a_drvdata },
190 { .compatible = "fsl,ls1046a-pcie", .data = &layerscape_drvdata },
191 { .compatible = "fsl,ls2080a-pcie", .data = &layerscape_drvdata },
192 { .compatible = "fsl,ls2085a-pcie", .data = &layerscape_drvdata },
193 { .compatible = "fsl,ls2088a-pcie", .data = &layerscape_drvdata },
194 { .compatible = "fsl,ls1088a-pcie", .data = &layerscape_drvdata },
200 struct device *dev = &pdev->dev; in ls_pcie_probe() local
201 struct dw_pcie *pci; in ls_pcie_probe() local
205 pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); in ls_pcie_probe()
207 return -ENOMEM; in ls_pcie_probe()
209 pci = devm_kzalloc(dev, sizeof(*pci), GFP_KERNEL); in ls_pcie_probe()
210 if (!pci) in ls_pcie_probe()
211 return -ENOMEM; in ls_pcie_probe()
213 pcie->drvdata = of_device_get_match_data(dev); in ls_pcie_probe()
215 pci->dev = dev; in ls_pcie_probe()
216 pci->pp.ops = &ls_pcie_host_ops; in ls_pcie_probe()
218 pcie->pci = pci; in ls_pcie_probe()
221 pci->dbi_base = devm_pci_remap_cfg_resource(dev, dbi_base); in ls_pcie_probe()
222 if (IS_ERR(pci->dbi_base)) in ls_pcie_probe()
223 return PTR_ERR(pci->dbi_base); in ls_pcie_probe()
225 pcie->big_endian = of_property_read_bool(dev->of_node, "big-endian"); in ls_pcie_probe()
227 pcie->pf_base = pci->dbi_base + pcie->drvdata->pf_off; in ls_pcie_probe()
230 return -ENODEV; in ls_pcie_probe()
234 return dw_pcie_host_init(&pci->pp); in ls_pcie_probe()
237 static int ls_pcie_suspend_noirq(struct device *dev) in ls_pcie_suspend_noirq() argument
239 struct ls_pcie *pcie = dev_get_drvdata(dev); in ls_pcie_suspend_noirq()
241 if (!pcie->drvdata->pm_support) in ls_pcie_suspend_noirq()
244 return dw_pcie_suspend_noirq(pcie->pci); in ls_pcie_suspend_noirq()
247 static int ls_pcie_resume_noirq(struct device *dev) in ls_pcie_resume_noirq() argument
249 struct ls_pcie *pcie = dev_get_drvdata(dev); in ls_pcie_resume_noirq()
251 if (!pcie->drvdata->pm_support) in ls_pcie_resume_noirq()
254 ls_pcie_exit_from_l2(&pcie->pci->pp); in ls_pcie_resume_noirq()
256 return dw_pcie_resume_noirq(pcie->pci); in ls_pcie_resume_noirq()
266 .name = "layerscape-pcie",