rapidio: add modular build option for the subsystem core

Add a configuration option to build RapidIO subsystem core code as a
loadable kernel module.  Currently this option is available only for
x86-based platforms, with the additional patch for PowerPC planned to be
provided later.

This patch replaces kernel command line parameter "riohdid=" with its
module-specific analog "rapidio.hdid=".

Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com>
Cc: Matt Porter <mporter@kernel.crashing.org>
Cc: Li Yang <leoli@freescale.com>
Cc: Kumar Gala <galak@kernel.crashing.org>
Cc: Andre van Herk <andre.van.herk@Prodrive.nl>
Cc: Micha Nelissen <micha.nelissen@Prodrive.nl>
Cc: Stef van Os <stef.van.os@Prodrive.nl>
Cc: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Alexandre Bounine 2013-07-03 15:08:56 -07:00 committed by Linus Torvalds
parent 94d9bd4576
commit fdf90abc00
3 changed files with 19 additions and 16 deletions

View File

@ -2259,11 +2259,11 @@ source "drivers/pcmcia/Kconfig"
source "drivers/pci/hotplug/Kconfig" source "drivers/pci/hotplug/Kconfig"
config RAPIDIO config RAPIDIO
bool "RapidIO support" tristate "RapidIO support"
depends on PCI depends on PCI
default n default n
help help
If you say Y here, the kernel will include drivers and If enabled this option will include drivers and the core
infrastructure code to support RapidIO interconnect devices. infrastructure code to support RapidIO interconnect devices.
source "drivers/rapidio/Kconfig" source "drivers/rapidio/Kconfig"

View File

@ -1,7 +1,9 @@
# #
# Makefile for RapidIO interconnect services # Makefile for RapidIO interconnect services
# #
obj-y += rio.o rio-access.o rio-driver.o rio-sysfs.o obj-$(CONFIG_RAPIDIO) += rapidio.o
rapidio-y := rio.o rio-access.o rio-driver.o rio-sysfs.o
obj-$(CONFIG_RAPIDIO_ENUM_BASIC) += rio-scan.o obj-$(CONFIG_RAPIDIO_ENUM_BASIC) += rio-scan.o
obj-$(CONFIG_RAPIDIO) += switches/ obj-$(CONFIG_RAPIDIO) += switches/

View File

@ -5,7 +5,7 @@
* Copyright 2005 MontaVista Software, Inc. * Copyright 2005 MontaVista Software, Inc.
* Matt Porter <mporter@kernel.crashing.org> * 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> * Alex Bounine <alexandre.bounine@idt.com>
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
@ -30,6 +30,17 @@
#include "rio.h" #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 LIST_HEAD(rio_devices);
static DEFINE_SPINLOCK(rio_global_list_lock); static DEFINE_SPINLOCK(rio_global_list_lock);
@ -1860,24 +1871,14 @@ int rio_init_mports(void)
return 0; return 0;
} }
static int hdids[RIO_MAX_MPORTS + 1];
static int rio_get_hdid(int index) 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 -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) int rio_register_mport(struct rio_mport *port)
{ {
struct rio_scan_node *scan = NULL; struct rio_scan_node *scan = NULL;