Merge master.kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6
[linux-drm-fsl-dcu.git] / arch / powerpc / sysdev / tsi108_dev.c
index f3038461d4c0566f162ecacba1ccff41ebd5515b..7d3b09b7d5449244683e97ab0b6539b9072a345c 100644 (file)
@@ -9,7 +9,6 @@
  * option) any later version.
  */
 
-#include <linux/config.h>
 #include <linux/stddef.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
@@ -49,7 +48,7 @@ phys_addr_t get_csrbase(void)
        tsi = of_find_node_by_type(NULL, "tsi-bridge");
        if (tsi) {
                unsigned int size;
-               void *prop = get_property(tsi, "reg", &size);
+               const void *prop = of_get_property(tsi, "reg", &size);
                tsi108_csr_base = of_translate_address(tsi, prop);
                of_node_put(tsi);
        };
@@ -78,10 +77,10 @@ static int __init tsi108_eth_of_init(void)
                struct resource r[2];
                struct device_node *phy;
                hw_info tsi_eth_data;
-               unsigned int *id;
-               unsigned int *phy_id;
-               void *mac_addr;
-               phandle *ph;
+               const unsigned int *id;
+               const unsigned int *phy_id;
+               const void *mac_addr;
+               const phandle *ph;
 
                memset(r, 0, sizeof(r));
                memset(&tsi_eth_data, 0, sizeof(tsi_eth_data));
@@ -108,10 +107,11 @@ static int __init tsi108_eth_of_init(void)
                        goto err;
                }
 
-               mac_addr = get_property(np, "address", NULL);
-               memcpy(tsi_eth_data.mac_addr, mac_addr, 6);
+               mac_addr = of_get_mac_address(np);
+               if (mac_addr)
+                       memcpy(tsi_eth_data.mac_addr, mac_addr, 6);
 
-               ph = (phandle *) get_property(np, "phy-handle", NULL);
+               ph = of_get_property(np, "phy-handle", NULL);
                phy = of_find_node_by_phandle(*ph);
 
                if (phy == NULL) {
@@ -119,8 +119,8 @@ static int __init tsi108_eth_of_init(void)
                        goto unreg;
                }
 
-               id = (u32 *) get_property(phy, "reg", NULL);
-               phy_id = (u32 *) get_property(phy, "phy-id", NULL);
+               id = of_get_property(phy, "reg", NULL);
+               phy_id = of_get_property(phy, "phy-id", NULL);
                ret = of_address_to_resource(phy, 0, &res);
                if (ret) {
                        of_node_put(phy);
@@ -130,6 +130,8 @@ static int __init tsi108_eth_of_init(void)
                tsi_eth_data.phyregs = res.start;
                tsi_eth_data.phy = *phy_id;
                tsi_eth_data.irq_num = irq_of_parse_and_map(np, 0);
+               if (of_device_is_compatible(phy, "bcm54xx"))
+                       tsi_eth_data.phy_type = TSI108_PHY_BCM54XX;
                of_node_put(phy);
                ret =
                    platform_device_add_data(tsi_eth_dev, &tsi_eth_data,