61
61
#define PCL_RDLH_LINK_UP BIT(1)
62
62
#define PCL_XMLH_LINK_UP BIT(0)
63
63
64
- struct uniphier_pcie_priv {
65
- void __iomem * base ;
64
+ struct uniphier_pcie {
66
65
struct dw_pcie pci ;
66
+ void __iomem * base ;
67
67
struct clk * clk ;
68
68
struct reset_control * rst ;
69
69
struct phy * phy ;
@@ -72,62 +72,62 @@ struct uniphier_pcie_priv {
72
72
73
73
#define to_uniphier_pcie (x ) dev_get_drvdata((x)->dev)
74
74
75
- static void uniphier_pcie_ltssm_enable (struct uniphier_pcie_priv * priv ,
75
+ static void uniphier_pcie_ltssm_enable (struct uniphier_pcie * pcie ,
76
76
bool enable )
77
77
{
78
78
u32 val ;
79
79
80
- val = readl (priv -> base + PCL_APP_READY_CTRL );
80
+ val = readl (pcie -> base + PCL_APP_READY_CTRL );
81
81
if (enable )
82
82
val |= PCL_APP_LTSSM_ENABLE ;
83
83
else
84
84
val &= ~PCL_APP_LTSSM_ENABLE ;
85
- writel (val , priv -> base + PCL_APP_READY_CTRL );
85
+ writel (val , pcie -> base + PCL_APP_READY_CTRL );
86
86
}
87
87
88
- static void uniphier_pcie_init_rc (struct uniphier_pcie_priv * priv )
88
+ static void uniphier_pcie_init_rc (struct uniphier_pcie * pcie )
89
89
{
90
90
u32 val ;
91
91
92
92
/* set RC MODE */
93
- val = readl (priv -> base + PCL_MODE );
93
+ val = readl (pcie -> base + PCL_MODE );
94
94
val |= PCL_MODE_REGEN ;
95
95
val &= ~PCL_MODE_REGVAL ;
96
- writel (val , priv -> base + PCL_MODE );
96
+ writel (val , pcie -> base + PCL_MODE );
97
97
98
98
/* use auxiliary power detection */
99
- val = readl (priv -> base + PCL_APP_PM0 );
99
+ val = readl (pcie -> base + PCL_APP_PM0 );
100
100
val |= PCL_SYS_AUX_PWR_DET ;
101
- writel (val , priv -> base + PCL_APP_PM0 );
101
+ writel (val , pcie -> base + PCL_APP_PM0 );
102
102
103
103
/* assert PERST# */
104
- val = readl (priv -> base + PCL_PINCTRL0 );
104
+ val = readl (pcie -> base + PCL_PINCTRL0 );
105
105
val &= ~(PCL_PERST_NOE_REGVAL | PCL_PERST_OUT_REGVAL
106
106
| PCL_PERST_PLDN_REGVAL );
107
107
val |= PCL_PERST_NOE_REGEN | PCL_PERST_OUT_REGEN
108
108
| PCL_PERST_PLDN_REGEN ;
109
- writel (val , priv -> base + PCL_PINCTRL0 );
109
+ writel (val , pcie -> base + PCL_PINCTRL0 );
110
110
111
- uniphier_pcie_ltssm_enable (priv , false);
111
+ uniphier_pcie_ltssm_enable (pcie , false);
112
112
113
113
usleep_range (100000 , 200000 );
114
114
115
115
/* deassert PERST# */
116
- val = readl (priv -> base + PCL_PINCTRL0 );
116
+ val = readl (pcie -> base + PCL_PINCTRL0 );
117
117
val |= PCL_PERST_OUT_REGVAL | PCL_PERST_OUT_REGEN ;
118
- writel (val , priv -> base + PCL_PINCTRL0 );
118
+ writel (val , pcie -> base + PCL_PINCTRL0 );
119
119
}
120
120
121
- static int uniphier_pcie_wait_rc (struct uniphier_pcie_priv * priv )
121
+ static int uniphier_pcie_wait_rc (struct uniphier_pcie * pcie )
122
122
{
123
123
u32 status ;
124
124
int ret ;
125
125
126
126
/* wait PIPE clock */
127
- ret = readl_poll_timeout (priv -> base + PCL_PIPEMON , status ,
127
+ ret = readl_poll_timeout (pcie -> base + PCL_PIPEMON , status ,
128
128
status & PCL_PCLK_ALIVE , 100000 , 1000000 );
129
129
if (ret ) {
130
- dev_err (priv -> pci .dev ,
130
+ dev_err (pcie -> pci .dev ,
131
131
"Failed to initialize controller in RC mode\n" );
132
132
return ret ;
133
133
}
@@ -137,50 +137,51 @@ static int uniphier_pcie_wait_rc(struct uniphier_pcie_priv *priv)
137
137
138
138
static int uniphier_pcie_link_up (struct dw_pcie * pci )
139
139
{
140
- struct uniphier_pcie_priv * priv = to_uniphier_pcie (pci );
140
+ struct uniphier_pcie * pcie = to_uniphier_pcie (pci );
141
141
u32 val , mask ;
142
142
143
- val = readl (priv -> base + PCL_STATUS_LINK );
143
+ val = readl (pcie -> base + PCL_STATUS_LINK );
144
144
mask = PCL_RDLH_LINK_UP | PCL_XMLH_LINK_UP ;
145
145
146
146
return (val & mask ) == mask ;
147
147
}
148
148
149
149
static int uniphier_pcie_start_link (struct dw_pcie * pci )
150
150
{
151
- struct uniphier_pcie_priv * priv = to_uniphier_pcie (pci );
151
+ struct uniphier_pcie * pcie = to_uniphier_pcie (pci );
152
152
153
- uniphier_pcie_ltssm_enable (priv , true);
153
+ uniphier_pcie_ltssm_enable (pcie , true);
154
154
155
155
return 0 ;
156
156
}
157
157
158
158
static void uniphier_pcie_stop_link (struct dw_pcie * pci )
159
159
{
160
- struct uniphier_pcie_priv * priv = to_uniphier_pcie (pci );
160
+ struct uniphier_pcie * pcie = to_uniphier_pcie (pci );
161
161
162
- uniphier_pcie_ltssm_enable (priv , false);
162
+ uniphier_pcie_ltssm_enable (pcie , false);
163
163
}
164
164
165
- static void uniphier_pcie_irq_enable (struct uniphier_pcie_priv * priv )
165
+ static void uniphier_pcie_irq_enable (struct uniphier_pcie * pcie )
166
166
{
167
- writel (PCL_RCV_INT_ALL_ENABLE , priv -> base + PCL_RCV_INT );
168
- writel (PCL_RCV_INTX_ALL_ENABLE , priv -> base + PCL_RCV_INTX );
167
+ writel (PCL_RCV_INT_ALL_ENABLE , pcie -> base + PCL_RCV_INT );
168
+ writel (PCL_RCV_INTX_ALL_ENABLE , pcie -> base + PCL_RCV_INTX );
169
169
}
170
170
171
+
171
172
static void uniphier_pcie_irq_mask (struct irq_data * d )
172
173
{
173
174
struct pcie_port * pp = irq_data_get_irq_chip_data (d );
174
175
struct dw_pcie * pci = to_dw_pcie_from_pp (pp );
175
- struct uniphier_pcie_priv * priv = to_uniphier_pcie (pci );
176
+ struct uniphier_pcie * pcie = to_uniphier_pcie (pci );
176
177
unsigned long flags ;
177
178
u32 val ;
178
179
179
180
raw_spin_lock_irqsave (& pp -> lock , flags );
180
181
181
- val = readl (priv -> base + PCL_RCV_INTX );
182
+ val = readl (pcie -> base + PCL_RCV_INTX );
182
183
val |= BIT (irqd_to_hwirq (d ) + PCL_RCV_INTX_MASK_SHIFT );
183
- writel (val , priv -> base + PCL_RCV_INTX );
184
+ writel (val , pcie -> base + PCL_RCV_INTX );
184
185
185
186
raw_spin_unlock_irqrestore (& pp -> lock , flags );
186
187
}
@@ -189,15 +190,15 @@ static void uniphier_pcie_irq_unmask(struct irq_data *d)
189
190
{
190
191
struct pcie_port * pp = irq_data_get_irq_chip_data (d );
191
192
struct dw_pcie * pci = to_dw_pcie_from_pp (pp );
192
- struct uniphier_pcie_priv * priv = to_uniphier_pcie (pci );
193
+ struct uniphier_pcie * pcie = to_uniphier_pcie (pci );
193
194
unsigned long flags ;
194
195
u32 val ;
195
196
196
197
raw_spin_lock_irqsave (& pp -> lock , flags );
197
198
198
- val = readl (priv -> base + PCL_RCV_INTX );
199
+ val = readl (pcie -> base + PCL_RCV_INTX );
199
200
val &= ~BIT (irqd_to_hwirq (d ) + PCL_RCV_INTX_MASK_SHIFT );
200
- writel (val , priv -> base + PCL_RCV_INTX );
201
+ writel (val , pcie -> base + PCL_RCV_INTX );
201
202
202
203
raw_spin_unlock_irqrestore (& pp -> lock , flags );
203
204
}
@@ -226,13 +227,13 @@ static void uniphier_pcie_irq_handler(struct irq_desc *desc)
226
227
{
227
228
struct pcie_port * pp = irq_desc_get_handler_data (desc );
228
229
struct dw_pcie * pci = to_dw_pcie_from_pp (pp );
229
- struct uniphier_pcie_priv * priv = to_uniphier_pcie (pci );
230
+ struct uniphier_pcie * pcie = to_uniphier_pcie (pci );
230
231
struct irq_chip * chip = irq_desc_get_chip (desc );
231
232
unsigned long reg ;
232
233
u32 val , bit ;
233
234
234
235
/* INT for debug */
235
- val = readl (priv -> base + PCL_RCV_INT );
236
+ val = readl (pcie -> base + PCL_RCV_INT );
236
237
237
238
if (val & PCL_CFG_BW_MGT_STATUS )
238
239
dev_dbg (pci -> dev , "Link Bandwidth Management Event\n" );
@@ -243,24 +244,24 @@ static void uniphier_pcie_irq_handler(struct irq_desc *desc)
243
244
if (val & PCL_CFG_PME_MSI_STATUS )
244
245
dev_dbg (pci -> dev , "PME Interrupt\n" );
245
246
246
- writel (val , priv -> base + PCL_RCV_INT );
247
+ writel (val , pcie -> base + PCL_RCV_INT );
247
248
248
249
/* INTx */
249
250
chained_irq_enter (chip , desc );
250
251
251
- val = readl (priv -> base + PCL_RCV_INTX );
252
+ val = readl (pcie -> base + PCL_RCV_INTX );
252
253
reg = FIELD_GET (PCL_RCV_INTX_ALL_STATUS , val );
253
254
254
255
for_each_set_bit (bit , & reg , PCI_NUM_INTX )
255
- generic_handle_domain_irq (priv -> legacy_irq_domain , bit );
256
+ generic_handle_domain_irq (pcie -> legacy_irq_domain , bit );
256
257
257
258
chained_irq_exit (chip , desc );
258
259
}
259
260
260
261
static int uniphier_pcie_config_legacy_irq (struct pcie_port * pp )
261
262
{
262
263
struct dw_pcie * pci = to_dw_pcie_from_pp (pp );
263
- struct uniphier_pcie_priv * priv = to_uniphier_pcie (pci );
264
+ struct uniphier_pcie * pcie = to_uniphier_pcie (pci );
264
265
struct device_node * np = pci -> dev -> of_node ;
265
266
struct device_node * np_intc ;
266
267
int ret = 0 ;
@@ -278,9 +279,9 @@ static int uniphier_pcie_config_legacy_irq(struct pcie_port *pp)
278
279
goto out_put_node ;
279
280
}
280
281
281
- priv -> legacy_irq_domain = irq_domain_add_linear (np_intc , PCI_NUM_INTX ,
282
+ pcie -> legacy_irq_domain = irq_domain_add_linear (np_intc , PCI_NUM_INTX ,
282
283
& uniphier_intx_domain_ops , pp );
283
- if (!priv -> legacy_irq_domain ) {
284
+ if (!pcie -> legacy_irq_domain ) {
284
285
dev_err (pci -> dev , "Failed to get INTx domain\n" );
285
286
ret = - ENODEV ;
286
287
goto out_put_node ;
@@ -297,14 +298,14 @@ static int uniphier_pcie_config_legacy_irq(struct pcie_port *pp)
297
298
static int uniphier_pcie_host_init (struct pcie_port * pp )
298
299
{
299
300
struct dw_pcie * pci = to_dw_pcie_from_pp (pp );
300
- struct uniphier_pcie_priv * priv = to_uniphier_pcie (pci );
301
+ struct uniphier_pcie * pcie = to_uniphier_pcie (pci );
301
302
int ret ;
302
303
303
304
ret = uniphier_pcie_config_legacy_irq (pp );
304
305
if (ret )
305
306
return ret ;
306
307
307
- uniphier_pcie_irq_enable (priv );
308
+ uniphier_pcie_irq_enable (pcie );
308
309
309
310
return 0 ;
310
311
}
@@ -313,36 +314,36 @@ static const struct dw_pcie_host_ops uniphier_pcie_host_ops = {
313
314
.host_init = uniphier_pcie_host_init ,
314
315
};
315
316
316
- static int uniphier_pcie_host_enable (struct uniphier_pcie_priv * priv )
317
+ static int uniphier_pcie_host_enable (struct uniphier_pcie * pcie )
317
318
{
318
319
int ret ;
319
320
320
- ret = clk_prepare_enable (priv -> clk );
321
+ ret = clk_prepare_enable (pcie -> clk );
321
322
if (ret )
322
323
return ret ;
323
324
324
- ret = reset_control_deassert (priv -> rst );
325
+ ret = reset_control_deassert (pcie -> rst );
325
326
if (ret )
326
327
goto out_clk_disable ;
327
328
328
- uniphier_pcie_init_rc (priv );
329
+ uniphier_pcie_init_rc (pcie );
329
330
330
- ret = phy_init (priv -> phy );
331
+ ret = phy_init (pcie -> phy );
331
332
if (ret )
332
333
goto out_rst_assert ;
333
334
334
- ret = uniphier_pcie_wait_rc (priv );
335
+ ret = uniphier_pcie_wait_rc (pcie );
335
336
if (ret )
336
337
goto out_phy_exit ;
337
338
338
339
return 0 ;
339
340
340
341
out_phy_exit :
341
- phy_exit (priv -> phy );
342
+ phy_exit (pcie -> phy );
342
343
out_rst_assert :
343
- reset_control_assert (priv -> rst );
344
+ reset_control_assert (pcie -> rst );
344
345
out_clk_disable :
345
- clk_disable_unprepare (priv -> clk );
346
+ clk_disable_unprepare (pcie -> clk );
346
347
347
348
return ret ;
348
349
}
@@ -356,41 +357,41 @@ static const struct dw_pcie_ops dw_pcie_ops = {
356
357
static int uniphier_pcie_probe (struct platform_device * pdev )
357
358
{
358
359
struct device * dev = & pdev -> dev ;
359
- struct uniphier_pcie_priv * priv ;
360
+ struct uniphier_pcie * pcie ;
360
361
int ret ;
361
362
362
- priv = devm_kzalloc (dev , sizeof (* priv ), GFP_KERNEL );
363
- if (!priv )
363
+ pcie = devm_kzalloc (dev , sizeof (* pcie ), GFP_KERNEL );
364
+ if (!pcie )
364
365
return - ENOMEM ;
365
366
366
- priv -> pci .dev = dev ;
367
- priv -> pci .ops = & dw_pcie_ops ;
367
+ pcie -> pci .dev = dev ;
368
+ pcie -> pci .ops = & dw_pcie_ops ;
368
369
369
- priv -> base = devm_platform_ioremap_resource_byname (pdev , "link" );
370
- if (IS_ERR (priv -> base ))
371
- return PTR_ERR (priv -> base );
370
+ pcie -> base = devm_platform_ioremap_resource_byname (pdev , "link" );
371
+ if (IS_ERR (pcie -> base ))
372
+ return PTR_ERR (pcie -> base );
372
373
373
- priv -> clk = devm_clk_get (dev , NULL );
374
- if (IS_ERR (priv -> clk ))
375
- return PTR_ERR (priv -> clk );
374
+ pcie -> clk = devm_clk_get (dev , NULL );
375
+ if (IS_ERR (pcie -> clk ))
376
+ return PTR_ERR (pcie -> clk );
376
377
377
- priv -> rst = devm_reset_control_get_shared (dev , NULL );
378
- if (IS_ERR (priv -> rst ))
379
- return PTR_ERR (priv -> rst );
378
+ pcie -> rst = devm_reset_control_get_shared (dev , NULL );
379
+ if (IS_ERR (pcie -> rst ))
380
+ return PTR_ERR (pcie -> rst );
380
381
381
- priv -> phy = devm_phy_optional_get (dev , "pcie-phy" );
382
- if (IS_ERR (priv -> phy ))
383
- return PTR_ERR (priv -> phy );
382
+ pcie -> phy = devm_phy_optional_get (dev , "pcie-phy" );
383
+ if (IS_ERR (pcie -> phy ))
384
+ return PTR_ERR (pcie -> phy );
384
385
385
- platform_set_drvdata (pdev , priv );
386
+ platform_set_drvdata (pdev , pcie );
386
387
387
- ret = uniphier_pcie_host_enable (priv );
388
+ ret = uniphier_pcie_host_enable (pcie );
388
389
if (ret )
389
390
return ret ;
390
391
391
- priv -> pci .pp .ops = & uniphier_pcie_host_ops ;
392
+ pcie -> pci .pp .ops = & uniphier_pcie_host_ops ;
392
393
393
- return dw_pcie_host_init (& priv -> pci .pp );
394
+ return dw_pcie_host_init (& pcie -> pci .pp );
394
395
}
395
396
396
397
static const struct of_device_id uniphier_pcie_match [] = {
0 commit comments