Title: [9267] trunk/drivers/net/bfin_mac.c: bfin_mac: clean up new platform code
Revision
9267
Author
vapier
Date
2010-10-21 18:46:10 -0400 (Thu, 21 Oct 2010)

Log Message

bfin_mac: clean up new platform code

- tweak style
- use helper funcs rather than looking up struct members directly
- assume platform resources always exist since we require it in the probe func
- make irq alloc failure fatal

Modified Paths

Diff

Modified: trunk/drivers/net/bfin_mac.c (9266 => 9267)


--- trunk/drivers/net/bfin_mac.c	2010-10-21 04:45:28 UTC (rev 9266)
+++ trunk/drivers/net/bfin_mac.c	2010-10-21 22:46:10 UTC (rev 9267)
@@ -1,7 +1,7 @@
 /*
  * Blackfin On-Chip MAC Driver
  *
- * Copyright 2004-2007 Analog Devices Inc.
+ * Copyright 2004-2010 Analog Devices Inc.
  *
  * Enter bugs at http://blackfin.uclinux.org/
  *
@@ -346,7 +346,7 @@
 					opmode |= RMII_10;
 					break;
 				case 100:
-					opmode &= ~(RMII_10);
+					opmode &= ~RMII_10;
 					break;
 				default:
 					printk(KERN_WARNING
@@ -421,8 +421,8 @@
 		return -ENODEV;
 	}
 
-	if (!(phy_mode == PHY_INTERFACE_MODE_RMII ||
-		phy_mode == PHY_INTERFACE_MODE_MII)) {
+	if (phy_mode != PHY_INTERFACE_MODE_RMII &&
+		phy_mode != PHY_INTERFACE_MODE_MII) {
 		printk(KERN_INFO "%s: Invalid phy interface mode\n", dev->name);
 		return -EINVAL;
 	}
@@ -572,7 +572,6 @@
 	 * Configure checksum support and rcve frame word alignment
 	 */
 	sysctl = bfin_read_EMAC_SYSCTL();
-
 	/*
 	 * check if interrupt is requested for any PHY,
 	 * enable PHY interrupt only if needed
@@ -582,7 +581,6 @@
 			break;
 	if (i < PHY_MAX_ADDR)
 		sysctl |= PHYIE;
-
 	sysctl |= RXDWA;
 #if defined(BFIN_MAC_CSUM_OFFLOAD)
 	sysctl |= RXCKS;
@@ -1649,14 +1647,12 @@
 static int __devinit bfin_mii_bus_probe(struct platform_device *pdev)
 {
 	struct mii_bus *miibus;
-	struct bfin_mii_bus_platform_data *mii_bus_pd =
-		(struct bfin_mii_bus_platform_data *)pdev->dev.platform_data;
-	const unsigned short *pin_req = NULL;
+	struct bfin_mii_bus_platform_data *mii_bus_pd;
+	const unsigned short *pin_req;
 	int rc, i;
 
-	if (mii_bus_pd)
-		pin_req = mii_bus_pd->mac_peripherals;
-	else {
+	mii_bus_pd = dev_get_platdata(&pdev->dev);
+	if (!mii_bus_pd) {
 		dev_err(&pdev->dev, "No peripherals in platform data!\n");
 		return -EINVAL;
 	}
@@ -1665,6 +1661,7 @@
 	 * We are setting up a network card,
 	 * so set the GPIO pins to Ethernet mode
 	 */
+	pin_req = mii_bus_pd->mac_peripherals;
 	rc = peripheral_request_list(pin_req, DRV_NAME);
 	if (rc) {
 		dev_err(&pdev->dev, "Requesting peripherals failed!\n");
@@ -1681,33 +1678,28 @@
 
 	miibus->parent = &pdev->dev;
 	miibus->name = "bfin_mii_bus";
-	if (mii_bus_pd)
-		miibus->phy_mask = mii_bus_pd->phy_mask;
+	miibus->phy_mask = mii_bus_pd->phy_mask;
 
 	snprintf(miibus->id, MII_BUS_ID_SIZE, "0");
 	miibus->irq = kmalloc(sizeof(int)*PHY_MAX_ADDR, GFP_KERNEL);
-	if (miibus->irq != NULL) {
-		for (i = 0; i < PHY_MAX_ADDR; ++i)
-			miibus->irq[i] = PHY_POLL;
+	if (!miibus->irq)
+		goto out_err_irq_alloc;
 
-		if (mii_bus_pd) {
-			if (mii_bus_pd->phydev_number > 0 &&
-				mii_bus_pd->phydev_number <= PHY_MAX_ADDR) {
-				for (i = 0; i < mii_bus_pd->phydev_number; ++i) {
-					unsigned short phyaddr =
-						mii_bus_pd->phydev_data[i].addr;
-					if (phyaddr < PHY_MAX_ADDR)
-						miibus->irq[phyaddr] =
-							mii_bus_pd->phydev_data[i].irq;
-					else
-						dev_err(&pdev->dev,
-							"Invalid PHY address %i for phydev %i\n",
-							phyaddr, i);
-				}
-			} else
-				dev_err(&pdev->dev, "Invalid number (%i) of phydevs\n",
-					mii_bus_pd->phydev_number);
-		}
+	for (i = rc; i < PHY_MAX_ADDR; ++i)
+		miibus->irq[i] = PHY_POLL;
+
+	rc = clamp(mii_bus_pd->phydev_number, 0, PHY_MAX_ADDR);
+	if (rc != mii_bus_pd->phydev_number)
+		dev_err(&pdev->dev, "Invalid number (%i) of phydevs\n",
+			mii_bus_pd->phydev_number);
+	for (i = 0; i < rc; ++i) {
+		unsigned short phyaddr = mii_bus_pd->phydev_data[i].addr;
+		if (phyaddr < PHY_MAX_ADDR)
+			miibus->irq[phyaddr] = mii_bus_pd->phydev_data[i].irq;
+		else
+			dev_err(&pdev->dev,
+				"Invalid PHY address %i for phydev %i\n",
+				phyaddr, i);
 	}
 
 	rc = mdiobus_register(miibus);
@@ -1721,6 +1713,7 @@
 
 out_err_mdiobus_register:
 	kfree(miibus->irq);
+out_err_irq_alloc:
 	mdiobus_free(miibus);
 out_err_alloc:
 	peripheral_free_list(pin_req);
@@ -1732,14 +1725,14 @@
 {
 	struct mii_bus *miibus = platform_get_drvdata(pdev);
 	struct bfin_mii_bus_platform_data *mii_bus_pd =
-		(struct bfin_mii_bus_platform_data *)pdev->dev.platform_data;
+		dev_get_platdata(&pdev->dev);
 
 	platform_set_drvdata(pdev, NULL);
 	mdiobus_unregister(miibus);
 	kfree(miibus->irq);
 	mdiobus_free(miibus);
-	if (mii_bus_pd)
-		peripheral_free_list(mii_bus_pd->mac_peripherals);
+	peripheral_free_list(mii_bus_pd->mac_peripherals);
+
 	return 0;
 }
 
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to