Symbol: stm32_pcie
drivers/pci/controller/dwc/pcie-stm32-ep.c
100
static void stm32_pcie_disable_resources(struct stm32_pcie *stm32_pcie)
drivers/pci/controller/dwc/pcie-stm32-ep.c
102
clk_disable_unprepare(stm32_pcie->clk);
drivers/pci/controller/dwc/pcie-stm32-ep.c
104
phy_exit(stm32_pcie->phy);
drivers/pci/controller/dwc/pcie-stm32-ep.c
109
struct stm32_pcie *stm32_pcie = to_stm32_pcie(pci);
drivers/pci/controller/dwc/pcie-stm32-ep.c
110
struct dw_pcie_ep *ep = &stm32_pcie->pci.ep;
drivers/pci/controller/dwc/pcie-stm32-ep.c
115
regmap_update_bits(stm32_pcie->regmap, SYSCFG_PCIECR,
drivers/pci/controller/dwc/pcie-stm32-ep.c
120
stm32_pcie_disable_resources(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32-ep.c
127
struct stm32_pcie *stm32_pcie = to_stm32_pcie(pci);
drivers/pci/controller/dwc/pcie-stm32-ep.c
140
ret = stm32_pcie_enable_resources(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32-ep.c
159
regmap_update_bits(stm32_pcie->regmap, SYSCFG_PCIECR,
drivers/pci/controller/dwc/pcie-stm32-ep.c
166
stm32_pcie_disable_resources(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32-ep.c
174
struct stm32_pcie *stm32_pcie = data;
drivers/pci/controller/dwc/pcie-stm32-ep.c
175
struct dw_pcie *pci = &stm32_pcie->pci;
drivers/pci/controller/dwc/pcie-stm32-ep.c
178
perst = gpiod_get_value(stm32_pcie->perst_gpio);
drivers/pci/controller/dwc/pcie-stm32-ep.c
184
irq_set_irq_type(gpiod_to_irq(stm32_pcie->perst_gpio),
drivers/pci/controller/dwc/pcie-stm32-ep.c
190
static int stm32_add_pcie_ep(struct stm32_pcie *stm32_pcie,
drivers/pci/controller/dwc/pcie-stm32-ep.c
193
struct dw_pcie_ep *ep = &stm32_pcie->pci.ep;
drivers/pci/controller/dwc/pcie-stm32-ep.c
197
ret = regmap_update_bits(stm32_pcie->regmap, SYSCFG_PCIECR,
drivers/pci/controller/dwc/pcie-stm32-ep.c
203
reset_control_assert(stm32_pcie->rst);
drivers/pci/controller/dwc/pcie-stm32-ep.c
204
reset_control_deassert(stm32_pcie->rst);
drivers/pci/controller/dwc/pcie-stm32-ep.c
216
ret = stm32_pcie_enable_resources(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32-ep.c
228
struct stm32_pcie *stm32_pcie;
drivers/pci/controller/dwc/pcie-stm32-ep.c
232
stm32_pcie = devm_kzalloc(dev, sizeof(*stm32_pcie), GFP_KERNEL);
drivers/pci/controller/dwc/pcie-stm32-ep.c
233
if (!stm32_pcie)
drivers/pci/controller/dwc/pcie-stm32-ep.c
236
stm32_pcie->pci.dev = dev;
drivers/pci/controller/dwc/pcie-stm32-ep.c
237
stm32_pcie->pci.ops = &dw_pcie_ops;
drivers/pci/controller/dwc/pcie-stm32-ep.c
239
stm32_pcie->regmap = syscon_regmap_lookup_by_compatible("st,stm32mp25-syscfg");
drivers/pci/controller/dwc/pcie-stm32-ep.c
240
if (IS_ERR(stm32_pcie->regmap))
drivers/pci/controller/dwc/pcie-stm32-ep.c
241
return dev_err_probe(dev, PTR_ERR(stm32_pcie->regmap),
drivers/pci/controller/dwc/pcie-stm32-ep.c
244
stm32_pcie->phy = devm_phy_get(dev, NULL);
drivers/pci/controller/dwc/pcie-stm32-ep.c
245
if (IS_ERR(stm32_pcie->phy))
drivers/pci/controller/dwc/pcie-stm32-ep.c
246
return dev_err_probe(dev, PTR_ERR(stm32_pcie->phy),
drivers/pci/controller/dwc/pcie-stm32-ep.c
249
stm32_pcie->clk = devm_clk_get(dev, NULL);
drivers/pci/controller/dwc/pcie-stm32-ep.c
250
if (IS_ERR(stm32_pcie->clk))
drivers/pci/controller/dwc/pcie-stm32-ep.c
251
return dev_err_probe(dev, PTR_ERR(stm32_pcie->clk),
drivers/pci/controller/dwc/pcie-stm32-ep.c
254
stm32_pcie->rst = devm_reset_control_get_exclusive(dev, NULL);
drivers/pci/controller/dwc/pcie-stm32-ep.c
255
if (IS_ERR(stm32_pcie->rst))
drivers/pci/controller/dwc/pcie-stm32-ep.c
256
return dev_err_probe(dev, PTR_ERR(stm32_pcie->rst),
drivers/pci/controller/dwc/pcie-stm32-ep.c
259
stm32_pcie->perst_gpio = devm_gpiod_get(dev, "reset", GPIOD_IN);
drivers/pci/controller/dwc/pcie-stm32-ep.c
260
if (IS_ERR(stm32_pcie->perst_gpio))
drivers/pci/controller/dwc/pcie-stm32-ep.c
261
return dev_err_probe(dev, PTR_ERR(stm32_pcie->perst_gpio),
drivers/pci/controller/dwc/pcie-stm32-ep.c
264
ret = phy_set_mode(stm32_pcie->phy, PHY_MODE_PCIE);
drivers/pci/controller/dwc/pcie-stm32-ep.c
268
platform_set_drvdata(pdev, stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32-ep.c
278
stm32_pcie->perst_irq = gpiod_to_irq(stm32_pcie->perst_gpio);
drivers/pci/controller/dwc/pcie-stm32-ep.c
281
irq_set_status_flags(stm32_pcie->perst_irq, IRQ_NOAUTOEN);
drivers/pci/controller/dwc/pcie-stm32-ep.c
283
ret = devm_request_threaded_irq(dev, stm32_pcie->perst_irq, NULL,
drivers/pci/controller/dwc/pcie-stm32-ep.c
286
"perst_irq", stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32-ep.c
292
ret = stm32_add_pcie_ep(stm32_pcie, pdev);
drivers/pci/controller/dwc/pcie-stm32-ep.c
301
struct stm32_pcie *stm32_pcie = platform_get_drvdata(pdev);
drivers/pci/controller/dwc/pcie-stm32-ep.c
302
struct dw_pcie *pci = &stm32_pcie->pci;
drivers/pci/controller/dwc/pcie-stm32-ep.c
310
stm32_pcie_disable_resources(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32-ep.c
33
struct stm32_pcie *stm32_pcie = to_stm32_pcie(pci);
drivers/pci/controller/dwc/pcie-stm32-ep.c
35
enable_irq(stm32_pcie->perst_irq);
drivers/pci/controller/dwc/pcie-stm32-ep.c
42
struct stm32_pcie *stm32_pcie = to_stm32_pcie(pci);
drivers/pci/controller/dwc/pcie-stm32-ep.c
44
disable_irq(stm32_pcie->perst_irq);
drivers/pci/controller/dwc/pcie-stm32-ep.c
85
static int stm32_pcie_enable_resources(struct stm32_pcie *stm32_pcie)
drivers/pci/controller/dwc/pcie-stm32-ep.c
89
ret = phy_init(stm32_pcie->phy);
drivers/pci/controller/dwc/pcie-stm32-ep.c
93
ret = clk_prepare_enable(stm32_pcie->clk);
drivers/pci/controller/dwc/pcie-stm32-ep.c
95
phy_exit(stm32_pcie->phy);
drivers/pci/controller/dwc/pcie-stm32.c
112
ret = phy_init(stm32_pcie->phy);
drivers/pci/controller/dwc/pcie-stm32.c
119
ret = clk_prepare_enable(stm32_pcie->clk);
drivers/pci/controller/dwc/pcie-stm32.c
123
stm32_pcie_deassert_perst(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
125
ret = dw_pcie_resume_noirq(&stm32_pcie->pci);
drivers/pci/controller/dwc/pcie-stm32.c
134
stm32_pcie_assert_perst(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
135
clk_disable_unprepare(stm32_pcie->clk);
drivers/pci/controller/dwc/pcie-stm32.c
138
phy_exit(stm32_pcie->phy);
drivers/pci/controller/dwc/pcie-stm32.c
157
static int stm32_add_pcie_port(struct stm32_pcie *stm32_pcie)
drivers/pci/controller/dwc/pcie-stm32.c
159
struct device *dev = stm32_pcie->pci.dev;
drivers/pci/controller/dwc/pcie-stm32.c
163
ret = phy_set_mode(stm32_pcie->phy, PHY_MODE_PCIE);
drivers/pci/controller/dwc/pcie-stm32.c
167
ret = phy_init(stm32_pcie->phy);
drivers/pci/controller/dwc/pcie-stm32.c
171
ret = regmap_update_bits(stm32_pcie->regmap, SYSCFG_PCIECR,
drivers/pci/controller/dwc/pcie-stm32.c
177
stm32_pcie_deassert_perst(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
179
if (stm32_pcie->wake_gpio) {
drivers/pci/controller/dwc/pcie-stm32.c
180
wake_irq = gpiod_to_irq(stm32_pcie->wake_gpio);
drivers/pci/controller/dwc/pcie-stm32.c
192
stm32_pcie_assert_perst(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
195
phy_exit(stm32_pcie->phy);
drivers/pci/controller/dwc/pcie-stm32.c
200
static void stm32_remove_pcie_port(struct stm32_pcie *stm32_pcie)
drivers/pci/controller/dwc/pcie-stm32.c
202
dev_pm_clear_wake_irq(stm32_pcie->pci.dev);
drivers/pci/controller/dwc/pcie-stm32.c
204
stm32_pcie_assert_perst(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
206
phy_exit(stm32_pcie->phy);
drivers/pci/controller/dwc/pcie-stm32.c
209
static int stm32_pcie_parse_port(struct stm32_pcie *stm32_pcie)
drivers/pci/controller/dwc/pcie-stm32.c
211
struct device *dev = stm32_pcie->pci.dev;
drivers/pci/controller/dwc/pcie-stm32.c
216
stm32_pcie->phy = devm_of_phy_get(dev, root_port, NULL);
drivers/pci/controller/dwc/pcie-stm32.c
217
if (IS_ERR(stm32_pcie->phy)) {
drivers/pci/controller/dwc/pcie-stm32.c
219
return dev_err_probe(dev, PTR_ERR(stm32_pcie->phy),
drivers/pci/controller/dwc/pcie-stm32.c
223
stm32_pcie->perst_gpio = devm_fwnode_gpiod_get(dev, of_fwnode_handle(root_port),
drivers/pci/controller/dwc/pcie-stm32.c
225
if (IS_ERR(stm32_pcie->perst_gpio)) {
drivers/pci/controller/dwc/pcie-stm32.c
226
if (PTR_ERR(stm32_pcie->perst_gpio) != -ENOENT) {
drivers/pci/controller/dwc/pcie-stm32.c
228
return dev_err_probe(dev, PTR_ERR(stm32_pcie->perst_gpio),
drivers/pci/controller/dwc/pcie-stm32.c
231
stm32_pcie->perst_gpio = NULL;
drivers/pci/controller/dwc/pcie-stm32.c
234
stm32_pcie->wake_gpio = devm_fwnode_gpiod_get(dev, of_fwnode_handle(root_port),
drivers/pci/controller/dwc/pcie-stm32.c
237
if (IS_ERR(stm32_pcie->wake_gpio)) {
drivers/pci/controller/dwc/pcie-stm32.c
238
if (PTR_ERR(stm32_pcie->wake_gpio) != -ENOENT) {
drivers/pci/controller/dwc/pcie-stm32.c
240
return dev_err_probe(dev, PTR_ERR(stm32_pcie->wake_gpio),
drivers/pci/controller/dwc/pcie-stm32.c
243
stm32_pcie->wake_gpio = NULL;
drivers/pci/controller/dwc/pcie-stm32.c
253
struct stm32_pcie *stm32_pcie;
drivers/pci/controller/dwc/pcie-stm32.c
257
stm32_pcie = devm_kzalloc(dev, sizeof(*stm32_pcie), GFP_KERNEL);
drivers/pci/controller/dwc/pcie-stm32.c
258
if (!stm32_pcie)
drivers/pci/controller/dwc/pcie-stm32.c
261
stm32_pcie->pci.dev = dev;
drivers/pci/controller/dwc/pcie-stm32.c
262
stm32_pcie->pci.ops = &dw_pcie_ops;
drivers/pci/controller/dwc/pcie-stm32.c
263
stm32_pcie->pci.pp.ops = &stm32_pcie_host_ops;
drivers/pci/controller/dwc/pcie-stm32.c
265
stm32_pcie->regmap = syscon_regmap_lookup_by_compatible("st,stm32mp25-syscfg");
drivers/pci/controller/dwc/pcie-stm32.c
266
if (IS_ERR(stm32_pcie->regmap))
drivers/pci/controller/dwc/pcie-stm32.c
267
return dev_err_probe(dev, PTR_ERR(stm32_pcie->regmap),
drivers/pci/controller/dwc/pcie-stm32.c
270
stm32_pcie->clk = devm_clk_get(dev, NULL);
drivers/pci/controller/dwc/pcie-stm32.c
271
if (IS_ERR(stm32_pcie->clk))
drivers/pci/controller/dwc/pcie-stm32.c
272
return dev_err_probe(dev, PTR_ERR(stm32_pcie->clk),
drivers/pci/controller/dwc/pcie-stm32.c
275
stm32_pcie->rst = devm_reset_control_get_exclusive(dev, NULL);
drivers/pci/controller/dwc/pcie-stm32.c
276
if (IS_ERR(stm32_pcie->rst))
drivers/pci/controller/dwc/pcie-stm32.c
277
return dev_err_probe(dev, PTR_ERR(stm32_pcie->rst),
drivers/pci/controller/dwc/pcie-stm32.c
280
ret = stm32_pcie_parse_port(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
284
platform_set_drvdata(pdev, stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
286
ret = stm32_add_pcie_port(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
290
reset_control_assert(stm32_pcie->rst);
drivers/pci/controller/dwc/pcie-stm32.c
291
reset_control_deassert(stm32_pcie->rst);
drivers/pci/controller/dwc/pcie-stm32.c
293
ret = clk_prepare_enable(stm32_pcie->clk);
drivers/pci/controller/dwc/pcie-stm32.c
313
ret = dw_pcie_host_init(&stm32_pcie->pci.pp);
drivers/pci/controller/dwc/pcie-stm32.c
317
if (stm32_pcie->wake_gpio)
drivers/pci/controller/dwc/pcie-stm32.c
323
clk_disable_unprepare(stm32_pcie->clk);
drivers/pci/controller/dwc/pcie-stm32.c
326
stm32_remove_pcie_port(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
333
struct stm32_pcie *stm32_pcie = platform_get_drvdata(pdev);
drivers/pci/controller/dwc/pcie-stm32.c
334
struct dw_pcie_rp *pp = &stm32_pcie->pci.pp;
drivers/pci/controller/dwc/pcie-stm32.c
336
if (stm32_pcie->wake_gpio)
drivers/pci/controller/dwc/pcie-stm32.c
341
clk_disable_unprepare(stm32_pcie->clk);
drivers/pci/controller/dwc/pcie-stm32.c
343
stm32_remove_pcie_port(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
44
static void stm32_pcie_deassert_perst(struct stm32_pcie *stm32_pcie)
drivers/pci/controller/dwc/pcie-stm32.c
46
if (stm32_pcie->perst_gpio) {
drivers/pci/controller/dwc/pcie-stm32.c
48
gpiod_set_value(stm32_pcie->perst_gpio, 0);
drivers/pci/controller/dwc/pcie-stm32.c
54
static void stm32_pcie_assert_perst(struct stm32_pcie *stm32_pcie)
drivers/pci/controller/dwc/pcie-stm32.c
56
gpiod_set_value(stm32_pcie->perst_gpio, 1);
drivers/pci/controller/dwc/pcie-stm32.c
61
struct stm32_pcie *stm32_pcie = to_stm32_pcie(pci);
drivers/pci/controller/dwc/pcie-stm32.c
63
return regmap_update_bits(stm32_pcie->regmap, SYSCFG_PCIECR,
drivers/pci/controller/dwc/pcie-stm32.c
70
struct stm32_pcie *stm32_pcie = to_stm32_pcie(pci);
drivers/pci/controller/dwc/pcie-stm32.c
72
regmap_update_bits(stm32_pcie->regmap, SYSCFG_PCIECR,
drivers/pci/controller/dwc/pcie-stm32.c
78
struct stm32_pcie *stm32_pcie = dev_get_drvdata(dev);
drivers/pci/controller/dwc/pcie-stm32.c
81
ret = dw_pcie_suspend_noirq(&stm32_pcie->pci);
drivers/pci/controller/dwc/pcie-stm32.c
85
stm32_pcie_assert_perst(stm32_pcie);
drivers/pci/controller/dwc/pcie-stm32.c
87
clk_disable_unprepare(stm32_pcie->clk);
drivers/pci/controller/dwc/pcie-stm32.c
90
phy_exit(stm32_pcie->phy);
drivers/pci/controller/dwc/pcie-stm32.c
97
struct stm32_pcie *stm32_pcie = dev_get_drvdata(dev);