Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livep...
[sfrench/cifs-2.6.git] / arch / mips / cavium-octeon / octeon-platform.c
index 3375e61daa19e5cbb9bb6fddaa8309f41d975303..8505db478904b10855eabf266f75ff9dd93e3699 100644 (file)
@@ -3,71 +3,27 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (C) 2004-2016 Cavium Networks
+ * Copyright (C) 2004-2017 Cavium, Inc.
  * Copyright (C) 2008 Wind River Systems
  */
 
-#include <linux/init.h>
-#include <linux/delay.h>
 #include <linux/etherdevice.h>
 #include <linux/of_platform.h>
 #include <linux/of_fdt.h>
 #include <linux/libfdt.h>
-#include <linux/usb/ehci_def.h>
-#include <linux/usb/ehci_pdriver.h>
-#include <linux/usb/ohci_pdriver.h>
 
 #include <asm/octeon/octeon.h>
 #include <asm/octeon/cvmx-helper-board.h>
+
+#ifdef CONFIG_USB
+#include <linux/usb/ehci_def.h>
+#include <linux/usb/ehci_pdriver.h>
+#include <linux/usb/ohci_pdriver.h>
 #include <asm/octeon/cvmx-uctlx-defs.h>
 
 #define CVMX_UAHCX_EHCI_USBCMD (CVMX_ADD_IO_SEG(0x00016F0000000010ull))
 #define CVMX_UAHCX_OHCI_USBCMD (CVMX_ADD_IO_SEG(0x00016F0000000408ull))
 
-/* Octeon Random Number Generator.  */
-static int __init octeon_rng_device_init(void)
-{
-       struct platform_device *pd;
-       int ret = 0;
-
-       struct resource rng_resources[] = {
-               {
-                       .flags  = IORESOURCE_MEM,
-                       .start  = XKPHYS_TO_PHYS(CVMX_RNM_CTL_STATUS),
-                       .end    = XKPHYS_TO_PHYS(CVMX_RNM_CTL_STATUS) + 0xf
-               }, {
-                       .flags  = IORESOURCE_MEM,
-                       .start  = cvmx_build_io_address(8, 0),
-                       .end    = cvmx_build_io_address(8, 0) + 0x7
-               }
-       };
-
-       pd = platform_device_alloc("octeon_rng", -1);
-       if (!pd) {
-               ret = -ENOMEM;
-               goto out;
-       }
-
-       ret = platform_device_add_resources(pd, rng_resources,
-                                           ARRAY_SIZE(rng_resources));
-       if (ret)
-               goto fail;
-
-       ret = platform_device_add(pd);
-       if (ret)
-               goto fail;
-
-       return ret;
-fail:
-       platform_device_put(pd);
-
-out:
-       return ret;
-}
-device_initcall(octeon_rng_device_init);
-
-#ifdef CONFIG_USB
-
 static DEFINE_MUTEX(octeon2_usb_clocks_mutex);
 
 static int octeon2_usb_clock_start_cnt;
@@ -440,8 +396,49 @@ device_initcall(octeon_ohci_device_init);
 
 #endif /* CONFIG_USB */
 
+/* Octeon Random Number Generator.  */
+static int __init octeon_rng_device_init(void)
+{
+       struct platform_device *pd;
+       int ret = 0;
 
-static struct of_device_id __initdata octeon_ids[] = {
+       struct resource rng_resources[] = {
+               {
+                       .flags  = IORESOURCE_MEM,
+                       .start  = XKPHYS_TO_PHYS(CVMX_RNM_CTL_STATUS),
+                       .end    = XKPHYS_TO_PHYS(CVMX_RNM_CTL_STATUS) + 0xf
+               }, {
+                       .flags  = IORESOURCE_MEM,
+                       .start  = cvmx_build_io_address(8, 0),
+                       .end    = cvmx_build_io_address(8, 0) + 0x7
+               }
+       };
+
+       pd = platform_device_alloc("octeon_rng", -1);
+       if (!pd) {
+               ret = -ENOMEM;
+               goto out;
+       }
+
+       ret = platform_device_add_resources(pd, rng_resources,
+                                           ARRAY_SIZE(rng_resources));
+       if (ret)
+               goto fail;
+
+       ret = platform_device_add(pd);
+       if (ret)
+               goto fail;
+
+       return ret;
+fail:
+       platform_device_put(pd);
+
+out:
+       return ret;
+}
+device_initcall(octeon_rng_device_init);
+
+const struct of_device_id octeon_ids[] __initconst = {
        { .compatible = "simple-bus", },
        { .compatible = "cavium,octeon-6335-uctl", },
        { .compatible = "cavium,octeon-5750-usbn", },
@@ -481,6 +478,7 @@ static void __init octeon_fdt_set_phy(int eth, int phy_addr)
        alt_phy_handle = fdt_getprop(initial_boot_params, eth, "cavium,alt-phy-handle", NULL);
        if (alt_phy_handle) {
                u32 alt_phandle = be32_to_cpup(alt_phy_handle);
+
                alt_phy = fdt_node_offset_by_phandle(initial_boot_params, alt_phandle);
        } else {
                alt_phy = -1;
@@ -579,6 +577,7 @@ static void __init octeon_fdt_rm_ethernet(int node)
        if (phy_handle) {
                u32 ph = be32_to_cpup(phy_handle);
                int p = fdt_node_offset_by_phandle(initial_boot_params, ph);
+
                if (p >= 0)
                        fdt_nop_node(initial_boot_params, p);
        }
@@ -728,6 +727,7 @@ int __init octeon_prune_device_tree(void)
 
        for (i = 0; i < 2; i++) {
                int mgmt;
+
                snprintf(name_buffer, sizeof(name_buffer),
                         "mix%d", i);
                alias_prop = fdt_getprop(initial_boot_params, aliases,
@@ -743,6 +743,7 @@ int __init octeon_prune_device_tree(void)
                                                 name_buffer);
                        } else {
                                int phy_addr = cvmx_helper_board_get_mii_address(CVMX_HELPER_BOARD_MGMT_IPD_PORT + i);
+
                                octeon_fdt_set_phy(mgmt, phy_addr);
                        }
                }
@@ -751,6 +752,7 @@ int __init octeon_prune_device_tree(void)
        pip_path = fdt_getprop(initial_boot_params, aliases, "pip", NULL);
        if (pip_path) {
                int pip = fdt_path_offset(initial_boot_params, pip_path);
+
                if (pip  >= 0)
                        for (i = 0; i <= 4; i++)
                                octeon_fdt_pip_iface(pip, i);
@@ -767,6 +769,7 @@ int __init octeon_prune_device_tree(void)
 
        for (i = 0; i < 2; i++) {
                int i2c;
+
                snprintf(name_buffer, sizeof(name_buffer),
                         "twsi%d", i);
                alias_prop = fdt_getprop(initial_boot_params, aliases,
@@ -797,11 +800,11 @@ int __init octeon_prune_device_tree(void)
 
        for (i = 0; i < 2; i++) {
                int i2c;
+
                snprintf(name_buffer, sizeof(name_buffer),
                         "smi%d", i);
                alias_prop = fdt_getprop(initial_boot_params, aliases,
                                        name_buffer, NULL);
-
                if (alias_prop) {
                        i2c = fdt_path_offset(initial_boot_params, alias_prop);
                        if (i2c < 0)
@@ -824,6 +827,7 @@ int __init octeon_prune_device_tree(void)
 
        for (i = 0; i < 3; i++) {
                int uart;
+
                snprintf(name_buffer, sizeof(name_buffer),
                         "uart%d", i);
                alias_prop = fdt_getprop(initial_boot_params, aliases,
@@ -863,6 +867,7 @@ int __init octeon_prune_device_tree(void)
                int len;
 
                int cf = fdt_path_offset(initial_boot_params, alias_prop);
+
                base_ptr = 0;
                if (octeon_bootinfo->major_version == 1
                        && octeon_bootinfo->minor_version >= 1) {
@@ -912,6 +917,7 @@ int __init octeon_prune_device_tree(void)
                        fdt_nop_property(initial_boot_params, cf, "cavium,dma-engine-handle");
                        if (!is_16bit) {
                                __be32 width = cpu_to_be32(8);
+
                                fdt_setprop_inplace(initial_boot_params, cf,
                                                "cavium,bus-width", &width, sizeof(width));
                        }
@@ -1004,6 +1010,7 @@ end_led:
                ;
        }
 
+#ifdef CONFIG_USB
        /* OHCI/UHCI USB */
        alias_prop = fdt_getprop(initial_boot_params, aliases,
                                 "uctl", NULL);
@@ -1036,6 +1043,7 @@ end_led:
                } else  {
                        __be32 new_f[1];
                        enum cvmx_helper_board_usb_clock_types c;
+
                        c = __cvmx_helper_board_usb_get_clock_type();
                        switch (c) {
                        case USB_CLOCK_TYPE_REF_48:
@@ -1052,6 +1060,7 @@ end_led:
                        }
                }
        }
+#endif
 
        return 0;
 }