Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fdf90abc authored by Alexandre Bounine's avatar Alexandre Bounine Committed by Linus Torvalds
Browse files

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: default avatarAlexandre 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 94d9bd45
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -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"
+3 −1
Original line number Original line Diff line number Diff line
#
#
# 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/
+14 −13
Original line number Original line Diff line number Diff line
@@ -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;