@@ -2576,7 +2576,8 @@ static int bcmgenet_init_dma(struct bcmgenet_priv *priv)
2576
2576
}
2577
2577
2578
2578
/* Init rDma */
2579
- bcmgenet_rdma_writel (priv , DMA_MAX_BURST_LENGTH , DMA_SCB_BURST_SIZE );
2579
+ bcmgenet_rdma_writel (priv , priv -> dma_max_burst_length ,
2580
+ DMA_SCB_BURST_SIZE );
2580
2581
2581
2582
/* Initialize Rx queues */
2582
2583
ret = bcmgenet_init_rx_queues (priv -> dev );
@@ -2589,7 +2590,8 @@ static int bcmgenet_init_dma(struct bcmgenet_priv *priv)
2589
2590
}
2590
2591
2591
2592
/* Init tDma */
2592
- bcmgenet_tdma_writel (priv , DMA_MAX_BURST_LENGTH , DMA_SCB_BURST_SIZE );
2593
+ bcmgenet_tdma_writel (priv , priv -> dma_max_burst_length ,
2594
+ DMA_SCB_BURST_SIZE );
2593
2595
2594
2596
/* Initialize Tx queues */
2595
2597
bcmgenet_init_tx_queues (priv -> dev );
@@ -3420,12 +3422,48 @@ static void bcmgenet_set_hw_params(struct bcmgenet_priv *priv)
3420
3422
params -> words_per_bd );
3421
3423
}
3422
3424
3425
+ struct bcmgenet_plat_data {
3426
+ enum bcmgenet_version version ;
3427
+ u32 dma_max_burst_length ;
3428
+ };
3429
+
3430
+ static const struct bcmgenet_plat_data v1_plat_data = {
3431
+ .version = GENET_V1 ,
3432
+ .dma_max_burst_length = DMA_MAX_BURST_LENGTH ,
3433
+ };
3434
+
3435
+ static const struct bcmgenet_plat_data v2_plat_data = {
3436
+ .version = GENET_V2 ,
3437
+ .dma_max_burst_length = DMA_MAX_BURST_LENGTH ,
3438
+ };
3439
+
3440
+ static const struct bcmgenet_plat_data v3_plat_data = {
3441
+ .version = GENET_V3 ,
3442
+ .dma_max_burst_length = DMA_MAX_BURST_LENGTH ,
3443
+ };
3444
+
3445
+ static const struct bcmgenet_plat_data v4_plat_data = {
3446
+ .version = GENET_V4 ,
3447
+ .dma_max_burst_length = DMA_MAX_BURST_LENGTH ,
3448
+ };
3449
+
3450
+ static const struct bcmgenet_plat_data v5_plat_data = {
3451
+ .version = GENET_V5 ,
3452
+ .dma_max_burst_length = DMA_MAX_BURST_LENGTH ,
3453
+ };
3454
+
3455
+ static const struct bcmgenet_plat_data bcm2711_plat_data = {
3456
+ .version = GENET_V5 ,
3457
+ .dma_max_burst_length = 0x08 ,
3458
+ };
3459
+
3423
3460
static const struct of_device_id bcmgenet_match [] = {
3424
- { .compatible = "brcm,genet-v1" , .data = (void * )GENET_V1 },
3425
- { .compatible = "brcm,genet-v2" , .data = (void * )GENET_V2 },
3426
- { .compatible = "brcm,genet-v3" , .data = (void * )GENET_V3 },
3427
- { .compatible = "brcm,genet-v4" , .data = (void * )GENET_V4 },
3428
- { .compatible = "brcm,genet-v5" , .data = (void * )GENET_V5 },
3461
+ { .compatible = "brcm,genet-v1" , .data = & v1_plat_data },
3462
+ { .compatible = "brcm,genet-v2" , .data = & v2_plat_data },
3463
+ { .compatible = "brcm,genet-v3" , .data = & v3_plat_data },
3464
+ { .compatible = "brcm,genet-v4" , .data = & v4_plat_data },
3465
+ { .compatible = "brcm,genet-v5" , .data = & v5_plat_data },
3466
+ { .compatible = "brcm,bcm2711-genet-v5" , .data = & bcm2711_plat_data },
3429
3467
{ },
3430
3468
};
3431
3469
MODULE_DEVICE_TABLE (of , bcmgenet_match );
@@ -3435,6 +3473,7 @@ static int bcmgenet_probe(struct platform_device *pdev)
3435
3473
struct bcmgenet_platform_data * pd = pdev -> dev .platform_data ;
3436
3474
struct device_node * dn = pdev -> dev .of_node ;
3437
3475
const struct of_device_id * of_id = NULL ;
3476
+ const struct bcmgenet_plat_data * pdata ;
3438
3477
struct bcmgenet_priv * priv ;
3439
3478
struct net_device * dev ;
3440
3479
const void * macaddr ;
@@ -3516,10 +3555,14 @@ static int bcmgenet_probe(struct platform_device *pdev)
3516
3555
3517
3556
priv -> dev = dev ;
3518
3557
priv -> pdev = pdev ;
3519
- if (of_id )
3520
- priv -> version = (enum bcmgenet_version )of_id -> data ;
3521
- else
3558
+ if (of_id ) {
3559
+ pdata = of_id -> data ;
3560
+ priv -> version = pdata -> version ;
3561
+ priv -> dma_max_burst_length = pdata -> dma_max_burst_length ;
3562
+ } else {
3522
3563
priv -> version = pd -> genet_version ;
3564
+ priv -> dma_max_burst_length = DMA_MAX_BURST_LENGTH ;
3565
+ }
3523
3566
3524
3567
priv -> clk = devm_clk_get (& priv -> pdev -> dev , "enet" );
3525
3568
if (IS_ERR (priv -> clk )) {
0 commit comments