]> Pileus Git - ~andy/linux/blobdiff - drivers/rapidio/rio.c
rapidio: add modular build option for the subsystem core
[~andy/linux] / drivers / rapidio / rio.c
index 2054b620882300df67e59cd0e74cc85cfdced56a..f4f30af2df68c682744cc125ede61da5f87eb4d1 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright 2005 MontaVista Software, Inc.
  * Matt Porter <mporter@kernel.crashing.org>
  *
- * Copyright 2009 Integrated Device Technology, Inc.
+ * Copyright 2009 - 2013 Integrated Device Technology, Inc.
  * Alex Bounine <alexandre.bounine@idt.com>
  *
  * This program is free software; you can redistribute  it and/or modify it
 
 #include "rio.h"
 
+MODULE_DESCRIPTION("RapidIO Subsystem Core");
+MODULE_AUTHOR("Matt Porter <mporter@kernel.crashing.org>");
+MODULE_AUTHOR("Alexandre Bounine <alexandre.bounine@idt.com>");
+MODULE_LICENSE("GPL");
+
+static int hdid[RIO_MAX_MPORTS];
+static int ids_num;
+module_param_array(hdid, int, &ids_num, 0);
+MODULE_PARM_DESC(hdid,
+       "Destination ID assignment to local RapidIO controllers");
+
 static LIST_HEAD(rio_devices);
 static DEFINE_SPINLOCK(rio_global_list_lock);
 
@@ -1860,24 +1871,14 @@ no_disc:
        return 0;
 }
 
-static int hdids[RIO_MAX_MPORTS + 1];
-
 static int rio_get_hdid(int index)
 {
-       if (!hdids[0] || hdids[0] <= index || index >= RIO_MAX_MPORTS)
+       if (ids_num == 0 || ids_num <= index || index >= RIO_MAX_MPORTS)
                return -1;
 
-       return hdids[index + 1];
+       return hdid[index];
 }
 
-static int rio_hdid_setup(char *str)
-{
-       (void)get_options(str, ARRAY_SIZE(hdids), hdids);
-       return 1;
-}
-
-__setup("riohdid=", rio_hdid_setup);
-
 int rio_register_mport(struct rio_mport *port)
 {
        struct rio_scan_node *scan = NULL;