@@ -47,8 +47,6 @@ enum link_status {
47
47
48
48
#define GENERATION_SEL_MASK GENMASK(1, 0)
49
49
50
- #define MAX_LANES 2
51
-
52
50
struct j721e_pcie {
53
51
struct cdns_pcie * cdns_pcie ;
54
52
struct clk * refclk ;
@@ -71,6 +69,7 @@ struct j721e_pcie_data {
71
69
unsigned int quirk_disable_flr :1 ;
72
70
u32 linkdown_irq_regfield ;
73
71
unsigned int byte_access_allowed :1 ;
72
+ unsigned int max_lanes ;
74
73
};
75
74
76
75
static inline u32 j721e_pcie_user_readl (struct j721e_pcie * pcie , u32 offset )
@@ -290,35 +289,41 @@ static const struct j721e_pcie_data j721e_pcie_rc_data = {
290
289
.quirk_retrain_flag = true,
291
290
.byte_access_allowed = false,
292
291
.linkdown_irq_regfield = LINK_DOWN ,
292
+ .max_lanes = 2 ,
293
293
};
294
294
295
295
static const struct j721e_pcie_data j721e_pcie_ep_data = {
296
296
.mode = PCI_MODE_EP ,
297
297
.linkdown_irq_regfield = LINK_DOWN ,
298
+ .max_lanes = 2 ,
298
299
};
299
300
300
301
static const struct j721e_pcie_data j7200_pcie_rc_data = {
301
302
.mode = PCI_MODE_RC ,
302
303
.quirk_detect_quiet_flag = true,
303
304
.linkdown_irq_regfield = J7200_LINK_DOWN ,
304
305
.byte_access_allowed = true,
306
+ .max_lanes = 2 ,
305
307
};
306
308
307
309
static const struct j721e_pcie_data j7200_pcie_ep_data = {
308
310
.mode = PCI_MODE_EP ,
309
311
.quirk_detect_quiet_flag = true,
310
312
.quirk_disable_flr = true,
313
+ .max_lanes = 2 ,
311
314
};
312
315
313
316
static const struct j721e_pcie_data am64_pcie_rc_data = {
314
317
.mode = PCI_MODE_RC ,
315
318
.linkdown_irq_regfield = J7200_LINK_DOWN ,
316
319
.byte_access_allowed = true,
320
+ .max_lanes = 1 ,
317
321
};
318
322
319
323
static const struct j721e_pcie_data am64_pcie_ep_data = {
320
324
.mode = PCI_MODE_EP ,
321
325
.linkdown_irq_regfield = J7200_LINK_DOWN ,
326
+ .max_lanes = 1 ,
322
327
};
323
328
324
329
static const struct of_device_id of_j721e_pcie_match [] = {
@@ -432,8 +437,10 @@ static int j721e_pcie_probe(struct platform_device *pdev)
432
437
pcie -> user_cfg_base = base ;
433
438
434
439
ret = of_property_read_u32 (node , "num-lanes" , & num_lanes );
435
- if (ret || num_lanes > MAX_LANES )
440
+ if (ret || num_lanes > data -> max_lanes ) {
441
+ dev_warn (dev , "num-lanes property not provided or invalid, setting num-lanes to 1\n" );
436
442
num_lanes = 1 ;
443
+ }
437
444
pcie -> num_lanes = num_lanes ;
438
445
439
446
if (dma_set_mask_and_coherent (dev , DMA_BIT_MASK (48 )))
0 commit comments