Lines Matching full:pcie
3 * PCIe host controller driver for Freescale Layerscape SoCs
23 #include "pcie-designware.h"
56 static bool ls_pcie_is_bridge(struct ls_pcie *pcie) in ls_pcie_is_bridge() argument
58 struct dw_pcie *pci = pcie->pci; in ls_pcie_is_bridge()
68 static void ls_pcie_clear_multifunction(struct ls_pcie *pcie) in ls_pcie_clear_multifunction() argument
70 struct dw_pcie *pci = pcie->pci; in ls_pcie_clear_multifunction()
76 static void ls_pcie_drop_msg_tlp(struct ls_pcie *pcie) in ls_pcie_drop_msg_tlp() argument
79 struct dw_pcie *pci = pcie->pci; in ls_pcie_drop_msg_tlp()
89 struct ls_pcie *pcie = to_ls_pcie(pci); in ls1021_pcie_link_up() local
91 if (!pcie->scfg) in ls1021_pcie_link_up()
94 regmap_read(pcie->scfg, SCFG_PEXMSCPORTSR(pcie->index), &state); in ls1021_pcie_link_up()
105 struct ls_pcie *pcie = to_ls_pcie(pci); in ls_pcie_link_up() local
108 state = (ioread32(pcie->lut + pcie->drvdata->lut_dbg) >> in ls_pcie_link_up()
109 pcie->drvdata->ltssm_shift) & in ls_pcie_link_up()
119 static void ls_pcie_fix_error_response(struct ls_pcie *pcie) in ls_pcie_fix_error_response() argument
121 struct dw_pcie *pci = pcie->pci; in ls_pcie_fix_error_response()
129 struct ls_pcie *pcie = to_ls_pcie(pci); in ls_pcie_host_init() local
131 ls_pcie_fix_error_response(pcie); in ls_pcie_host_init()
134 ls_pcie_clear_multifunction(pcie); in ls_pcie_host_init()
137 ls_pcie_drop_msg_tlp(pcie); in ls_pcie_host_init()
145 struct ls_pcie *pcie = to_ls_pcie(pci); in ls1021_pcie_host_init() local
150 pcie->scfg = syscon_regmap_lookup_by_phandle(dev->of_node, in ls1021_pcie_host_init()
151 "fsl,pcie-scfg"); in ls1021_pcie_host_init()
152 if (IS_ERR(pcie->scfg)) { in ls1021_pcie_host_init()
153 ret = PTR_ERR(pcie->scfg); in ls1021_pcie_host_init()
155 pcie->scfg = NULL; in ls1021_pcie_host_init()
160 "fsl,pcie-scfg", index, 2)) { in ls1021_pcie_host_init()
161 pcie->scfg = NULL; in ls1021_pcie_host_init()
164 pcie->index = index[1]; in ls1021_pcie_host_init()
223 { .compatible = "fsl,ls1012a-pcie", .data = &ls1046_drvdata },
224 { .compatible = "fsl,ls1021a-pcie", .data = &ls1021_drvdata },
225 { .compatible = "fsl,ls1028a-pcie", .data = &ls2088_drvdata },
226 { .compatible = "fsl,ls1043a-pcie", .data = &ls1043_drvdata },
227 { .compatible = "fsl,ls1046a-pcie", .data = &ls1046_drvdata },
228 { .compatible = "fsl,ls2080a-pcie", .data = &ls2080_drvdata },
229 { .compatible = "fsl,ls2085a-pcie", .data = &ls2080_drvdata },
230 { .compatible = "fsl,ls2088a-pcie", .data = &ls2088_drvdata },
231 { .compatible = "fsl,ls1088a-pcie", .data = &ls2088_drvdata },
239 struct ls_pcie *pcie; in ls_pcie_probe() local
242 pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); in ls_pcie_probe()
243 if (!pcie) in ls_pcie_probe()
250 pcie->drvdata = of_device_get_match_data(dev); in ls_pcie_probe()
253 pci->ops = pcie->drvdata->dw_pcie_ops; in ls_pcie_probe()
254 pci->pp.ops = pcie->drvdata->ops; in ls_pcie_probe()
256 pcie->pci = pci; in ls_pcie_probe()
263 pcie->lut = pci->dbi_base + pcie->drvdata->lut_offset; in ls_pcie_probe()
265 if (!ls_pcie_is_bridge(pcie)) in ls_pcie_probe()
268 platform_set_drvdata(pdev, pcie); in ls_pcie_probe()
276 .name = "layerscape-pcie",