a11650e110
Systems that use RapidIO fabric may need to implement their own enumeration and discovery methods which are better suitable for needs of a target application. The following set of patches is intended to simplify process of introduction of new RapidIO fabric enumeration/discovery methods. The first patch offers ability to add new RapidIO enumeration/discovery methods using kernel configuration options. This new configuration option mechanism allows to select statically linked or modular enumeration/discovery method(s) from the list of existing methods or use external module(s). This patch also updates the currently existing enumeration/discovery code to be used as a statically linked or modular method. The corresponding configuration option is named "Basic enumeration/discovery" method. This is the only one configuration option available today but new methods are expected to be introduced after adoption of provided patches. The second patch address a long time complaint of RapidIO subsystem users regarding fabric enumeration/discovery start sequence. Existing implementation offers only a boot-time enumeration/discovery start which requires synchronized boot of all endpoints in RapidIO network. While it works for small closed configurations with limited number of endpoints, using this approach in systems with large number of endpoints is quite challenging. To eliminate requirement for synchronized start the second patch introduces RapidIO enumeration/discovery start from user space. For compatibility with the existing RapidIO subsystem implementation, automatic boot time enumeration/discovery start can be configured in by specifying "rio-scan.scan=1" command line parameter if statically linked basic enumeration method is selected. This patch: Rework to implement RapidIO enumeration/discovery method selection combined with ability to use enumeration/discovery as a kernel module. This patch adds ability to introduce new RapidIO enumeration/discovery methods using kernel configuration options. Configuration option mechanism allows to select statically linked or modular enumeration/discovery method from the list of existing methods or use external modules. If a modular enumeration/discovery is selected each RapidIO mport device can have its own method attached to it. The existing enumeration/discovery code was updated to be used as statically linked or modular method. This configuration option is named "Basic enumeration/discovery" method. Several common routines have been moved from rio-scan.c to make them available to other enumeration methods and reduce number of exported symbols. 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> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
71 lines
2.2 KiB
Plaintext
71 lines
2.2 KiB
Plaintext
#
|
|
# RapidIO configuration
|
|
#
|
|
source "drivers/rapidio/devices/Kconfig"
|
|
|
|
config RAPIDIO_DISC_TIMEOUT
|
|
int "Discovery timeout duration (seconds)"
|
|
depends on RAPIDIO
|
|
default "30"
|
|
---help---
|
|
Amount of time a discovery node waits for a host to complete
|
|
enumeration before giving up.
|
|
|
|
config RAPIDIO_ENABLE_RX_TX_PORTS
|
|
bool "Enable RapidIO Input/Output Ports"
|
|
depends on RAPIDIO
|
|
---help---
|
|
The RapidIO specification describes a Output port transmit
|
|
enable and a Input port receive enable. The recommended state
|
|
for Input ports and Output ports should be disabled. When
|
|
this switch is set the RapidIO subsystem will enable all
|
|
ports for Input/Output direction to allow other traffic
|
|
than Maintenance transfers.
|
|
|
|
config RAPIDIO_DMA_ENGINE
|
|
bool "DMA Engine support for RapidIO"
|
|
depends on RAPIDIO
|
|
select DMADEVICES
|
|
select DMA_ENGINE
|
|
help
|
|
Say Y here if you want to use DMA Engine frameork for RapidIO data
|
|
transfers to/from target RIO devices. RapidIO uses NREAD and
|
|
NWRITE (NWRITE_R, SWRITE) requests to transfer data between local
|
|
memory and memory on remote target device. You need a DMA controller
|
|
capable to perform data transfers to/from RapidIO.
|
|
|
|
If you are unsure about this, say Y here.
|
|
|
|
config RAPIDIO_DEBUG
|
|
bool "RapidIO subsystem debug messages"
|
|
depends on RAPIDIO
|
|
help
|
|
Say Y here if you want the RapidIO subsystem to produce a bunch of
|
|
debug messages to the system log. Select this if you are having a
|
|
problem with the RapidIO subsystem and want to see more of what is
|
|
going on.
|
|
|
|
If you are unsure about this, say N here.
|
|
|
|
choice
|
|
prompt "Enumeration method"
|
|
depends on RAPIDIO
|
|
default RAPIDIO_ENUM_BASIC
|
|
help
|
|
There are different enumeration and discovery mechanisms offered
|
|
for RapidIO subsystem. You may select single built-in method or
|
|
or any number of methods to be built as modules.
|
|
Selecting a built-in method disables use of loadable methods.
|
|
|
|
If unsure, select Basic built-in.
|
|
|
|
config RAPIDIO_ENUM_BASIC
|
|
tristate "Basic"
|
|
help
|
|
This option includes basic RapidIO fabric enumeration and discovery
|
|
mechanism similar to one described in RapidIO specification Annex 1.
|
|
|
|
endchoice
|
|
|
|
source "drivers/rapidio/switches/Kconfig"
|