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:
parent
94d9bd4576
commit
fdf90abc00
|
@ -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"
|
||||||
|
|
|
@ -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/
|
||||||
|
|
|
@ -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 @@ no_disc:
|
||||||
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;
|
||||||
|
|
Loading…
Reference in New Issue