23
23
#include <linux/dma-mapping.h>
24
24
#include <linux/pm.h>
25
25
#include <linux/clk.h>
26
- #include <linux/of.h>
27
- #include <linux/of_address.h>
28
- #include <linux/of_irq.h>
29
- #include <linux/of_net.h>
30
- #include <linux/of_platform.h>
31
26
#include <net/arp.h>
32
27
33
28
#include <linux/mii.h>
@@ -2707,9 +2702,8 @@ static void bcmgenet_umac_reset(struct bcmgenet_priv *priv)
2707
2702
static void bcmgenet_set_hw_addr (struct bcmgenet_priv * priv ,
2708
2703
unsigned char * addr )
2709
2704
{
2710
- bcmgenet_umac_writel (priv , (addr [0 ] << 24 ) | (addr [1 ] << 16 ) |
2711
- (addr [2 ] << 8 ) | addr [3 ], UMAC_MAC0 );
2712
- bcmgenet_umac_writel (priv , (addr [4 ] << 8 ) | addr [5 ], UMAC_MAC1 );
2705
+ bcmgenet_umac_writel (priv , get_unaligned_be32 (& addr [0 ]), UMAC_MAC0 );
2706
+ bcmgenet_umac_writel (priv , get_unaligned_be16 (& addr [4 ]), UMAC_MAC1 );
2713
2707
}
2714
2708
2715
2709
static void bcmgenet_get_hw_addr (struct bcmgenet_priv * priv ,
@@ -2718,13 +2712,9 @@ static void bcmgenet_get_hw_addr(struct bcmgenet_priv *priv,
2718
2712
u32 addr_tmp ;
2719
2713
2720
2714
addr_tmp = bcmgenet_umac_readl (priv , UMAC_MAC0 );
2721
- addr [0 ] = addr_tmp >> 24 ;
2722
- addr [1 ] = (addr_tmp >> 16 ) & 0xff ;
2723
- addr [2 ] = (addr_tmp >> 8 ) & 0xff ;
2724
- addr [3 ] = addr_tmp & 0xff ;
2715
+ put_unaligned_be32 (addr_tmp , & addr [0 ]);
2725
2716
addr_tmp = bcmgenet_umac_readl (priv , UMAC_MAC1 );
2726
- addr [4 ] = (addr_tmp >> 8 ) & 0xff ;
2727
- addr [5 ] = addr_tmp & 0xff ;
2717
+ put_unaligned_be16 (addr_tmp , & addr [4 ]);
2728
2718
}
2729
2719
2730
2720
/* Returns a reusable dma control register value */
@@ -3417,8 +3407,6 @@ MODULE_DEVICE_TABLE(of, bcmgenet_match);
3417
3407
static int bcmgenet_probe (struct platform_device * pdev )
3418
3408
{
3419
3409
struct bcmgenet_platform_data * pd = pdev -> dev .platform_data ;
3420
- struct device_node * dn = pdev -> dev .of_node ;
3421
- const struct of_device_id * of_id = NULL ;
3422
3410
const struct bcmgenet_plat_data * pdata ;
3423
3411
struct bcmgenet_priv * priv ;
3424
3412
struct net_device * dev ;
@@ -3433,12 +3421,6 @@ static int bcmgenet_probe(struct platform_device *pdev)
3433
3421
return - ENOMEM ;
3434
3422
}
3435
3423
3436
- if (dn ) {
3437
- of_id = of_match_node (bcmgenet_match , dn );
3438
- if (!of_id )
3439
- return - EINVAL ;
3440
- }
3441
-
3442
3424
priv = netdev_priv (dev );
3443
3425
priv -> irq0 = platform_get_irq (pdev , 0 );
3444
3426
if (priv -> irq0 < 0 ) {
@@ -3500,13 +3482,16 @@ static int bcmgenet_probe(struct platform_device *pdev)
3500
3482
priv -> dma_max_burst_length = DMA_MAX_BURST_LENGTH ;
3501
3483
}
3502
3484
3503
- priv -> clk = devm_clk_get (& priv -> pdev -> dev , "enet" );
3485
+ priv -> clk = devm_clk_get_optional (& priv -> pdev -> dev , "enet" );
3504
3486
if (IS_ERR (priv -> clk )) {
3505
3487
dev_dbg (& priv -> pdev -> dev , "failed to get enet clock\n" );
3506
- priv -> clk = NULL ;
3488
+ err = PTR_ERR (priv -> clk );
3489
+ goto err ;
3507
3490
}
3508
3491
3509
- clk_prepare_enable (priv -> clk );
3492
+ err = clk_prepare_enable (priv -> clk );
3493
+ if (err )
3494
+ goto err ;
3510
3495
3511
3496
bcmgenet_set_hw_params (priv );
3512
3497
@@ -3524,16 +3509,18 @@ static int bcmgenet_probe(struct platform_device *pdev)
3524
3509
priv -> rx_buf_len = RX_BUF_LENGTH ;
3525
3510
INIT_WORK (& priv -> bcmgenet_irq_work , bcmgenet_irq_task );
3526
3511
3527
- priv -> clk_wol = devm_clk_get (& priv -> pdev -> dev , "enet-wol" );
3512
+ priv -> clk_wol = devm_clk_get_optional (& priv -> pdev -> dev , "enet-wol" );
3528
3513
if (IS_ERR (priv -> clk_wol )) {
3529
3514
dev_dbg (& priv -> pdev -> dev , "failed to get enet-wol clock\n" );
3530
- priv -> clk_wol = NULL ;
3515
+ err = PTR_ERR (priv -> clk_wol );
3516
+ goto err ;
3531
3517
}
3532
3518
3533
- priv -> clk_eee = devm_clk_get (& priv -> pdev -> dev , "enet-eee" );
3519
+ priv -> clk_eee = devm_clk_get_optional (& priv -> pdev -> dev , "enet-eee" );
3534
3520
if (IS_ERR (priv -> clk_eee )) {
3535
3521
dev_dbg (& priv -> pdev -> dev , "failed to get enet-eee clock\n" );
3536
- priv -> clk_eee = NULL ;
3522
+ err = PTR_ERR (priv -> clk_eee );
3523
+ goto err ;
3537
3524
}
3538
3525
3539
3526
/* If this is an internal GPHY, power it on now, before UniMAC is
@@ -3542,7 +3529,7 @@ static int bcmgenet_probe(struct platform_device *pdev)
3542
3529
if (device_get_phy_mode (& pdev -> dev ) == PHY_INTERFACE_MODE_INTERNAL )
3543
3530
bcmgenet_power_up (priv , GENET_POWER_PASSIVE );
3544
3531
3545
- if (( pd ) && ( !IS_ERR_OR_NULL (pd -> mac_address ) ))
3532
+ if (pd && !IS_ERR_OR_NULL (pd -> mac_address ))
3546
3533
ether_addr_copy (dev -> dev_addr , pd -> mac_address );
3547
3534
else
3548
3535
if (!device_get_mac_address (& pdev -> dev , dev -> dev_addr , ETH_ALEN ))
@@ -3740,7 +3727,7 @@ static struct platform_driver bcmgenet_driver = {
3740
3727
.name = "bcmgenet" ,
3741
3728
.of_match_table = bcmgenet_match ,
3742
3729
.pm = & bcmgenet_pm_ops ,
3743
- .acpi_match_table = ACPI_PTR ( genet_acpi_match ) ,
3730
+ .acpi_match_table = genet_acpi_match ,
3744
3731
},
3745
3732
};
3746
3733
module_platform_driver (bcmgenet_driver );
0 commit comments