Dan Carpenter
ad4ac17ad1
rapidio: fix potential null deref on failure path
...
If rio is not a switch then "rswitch" is null.
Signed-off-by: Dan Carpenter <error27@gmail.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Kumar Gala <galak@kernel.crashing.org >
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-03-23 19:46:44 -07:00
Alexandre Bounine
c1256ebe6a
rapidio: remove mport resource reservation from common RIO code
...
Removes resource reservation from the common sybsystem initialization code
and make it part of mport driver initialization. This resolves conflict
with resource reservation by device specific mport drivers.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-03-23 19:46:43 -07:00
Alexandre Bounine
569fccb6b4
rapidio: modify mport ID assignment
...
Changes mport ID and host destination ID assignment to implement unified
method common to all mport drivers. Makes "riohdid=" kernel command line
parameter common for all architectures with support for more that one host
destination ID assignment.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-03-23 19:46:43 -07:00
Alexandre Bounine
2f809985d2
rapidio: modify subsystem and driver initialization sequence
...
Subsystem initialization sequence modified to support presence of multiple
RapidIO controllers in the system. The new sequence is compatible with
initialization of PCI devices.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-03-23 19:46:42 -07:00
Alexandre Bounine
388b78adc9
rapidio: modify configuration to support PCI-SRIO controller
...
1. Add an option to include RapidIO support if the PCI is available.
2. Add FSL_RIO configuration option to enable controller selection.
3. Add RapidIO support option into x86 and MIPS architectures.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Acked-by: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-03-23 19:46:42 -07:00
Alexandre Bounine
f8f0626989
rapidio: add architecture specific callbacks
...
This set of patches eliminates RapidIO dependency on PowerPC architecture
and makes it available to other architectures (x86 and MIPS). It also
enables support of new platform independent RapidIO controllers such as
PCI-to-SRIO and PCI Express-to-SRIO.
This patch:
Extend number of mport callback functions to eliminate direct linking of
architecture specific mport operations.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-03-23 19:46:41 -07:00
Alexandre Bounine
cd8b974fad
rapidio: add new sysfs attributes
...
Add new sysfs attributes.
1. Routing information required to to reach the RIO device:
destid - device destination ID (real for for endpoint, route for switch)
hopcount - hopcount for maintenance requests (switches only)
2. device linking information:
lprev - name of device that precedes the given device in the enumeration
or discovery order (displayed along with of the port to which it
is attached).
lnext - names of devices (with corresponding port numbers) that are
attached to the given device as next in the enumeration or
discovery order (switches only)
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-03-23 19:46:41 -07:00
matt mooney
4ebdd58f46
rapidio: change to new flag variable
...
switches/ depends on RAPIDIO_DEBUG so the subdir-ccflags-y variant
seems to be appropriate here.
Signed-off-by: matt mooney <mfm@muteddisk.com >
Acked-by: WANG Cong <xiyou.wangcong@gmail.com >
Signed-off-by: Michal Marek <mmarek@suse.cz >
2011-03-17 14:05:35 +01:00
Alexandre Bounine
fe41947e1a
rapidio: fix sysfs config attribute to access 16MB of maint space
...
Fixes sysfs config attribute to allow access to entire 16MB maintenance
space of RapidIO devices.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-02-25 15:07:37 -08:00
Randy Dunlap
9b310acc33
rapidio: fix new kernel-doc warnings
...
Fix new rapidio kernel-doc warnings:
Warning(drivers/rapidio/rio-scan.c:953): No description found for parameter 'prev'
Warning(drivers/rapidio/rio-scan.c:953): No description found for parameter 'prev_port'
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com >
Cc: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-01-22 20:32:37 -08:00
Alexandre Bounine
2e9d4d8484
rapidio: add new idt sRIO switches
...
Add new sRIO switch device IDs and enable a basic support for them.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-01-13 08:03:18 -08:00
Alexandre Bounine
558bda6577
rapidio: use Component Tag for unified switch identification
...
Change the way how switchid value is set. Local counter variable does not
provide unified way to identify switch devices in a system with multiple
processors. Using local counter leads to the situation when the same RIO
switch has different switch ID for each processor. Replacing local
counter with unique portion of the Component Tag provides unified
reference to the switch by every processor in the system.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-01-13 08:03:18 -08:00
Alexandre Bounine
17e9620563
rapidio: add device object linking into discovery
...
Add setting links between rio_dev objects into the discovery process.
This needed to report device connections on agent (non-host) processors
that perform RIO discovery. Originally, these links have been introduced
for enumerating host only to support error management.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-01-13 08:03:18 -08:00
Alexandre Bounine
e6536927e6
rapidio: add definitions of Component Tag fields
...
Add definition of the unique device identifier field in the component tag.
RIO_CTAG_UDEVID does not take all 32 bits of the component tag value to
allow future extensions to the component tag use.
Selected size of the RIO_CTAG_UDEVID field (17 bits) is sufficient to
accommodate maximum number of endpoints in large RIO network (16-bit id)
plus switches.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-01-13 08:03:18 -08:00
Alexandre Bounine
ded0578271
rapidio: integrate rio_switch into rio_dev
...
Convert RIO switches device structures (rio_dev + rio_switch) into a
single allocation unit.
This change is based on the fact that RIO switches are using common RIO
device objects anyway. Allocating RIO switch objects as RIO devices with
added space for switch information simplifies handling of RIO switch
devices.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-01-13 08:03:17 -08:00
Alexandre Bounine
a93192a5d2
rapidio: use common destid storage for endpoints and switches
...
Change code to use one storage location common for switches and endpoints.
This eliminates unnecessary device type checks during basic access
operations. Logic that assigns destid to RIO devices stays unchanged - as
before, switches use an associated destid because they do not have their
own.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-01-13 08:03:17 -08:00
Dan Carpenter
88cf81fc89
rapidio: use resource_size()
...
The size calculation is done incorrectly here because it should include
both the start and end (end - start + 1). It's easiest to just use
resource_size() which does the right thing.
I was worried there was something non-standard going on because the
printk() subtracts "end - 1", but the rest of the file uses the normal
resource size calculations. This function is only called from
fsl_rio_setup() in arch/powerpc/sysdev/fsl_rio.c and the calculation
there is also:
port->iores.start = law_start;
port->iores.end = law_start + law_size - 1;
So I think this is the correct fix.
Signed-off-by: Dan Carpenter <error27@gmail.com >
Cc: Alexandre Bounine <alexandre.bounine@idt.com >
Acked-by: Li Yang <leoli@freescale.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2010-11-12 07:55:30 -08:00
Alexandre Bounine
1548bf316f
rapidio: fix destructive port EM initialization for Tsi568
...
Replace possibly damaging broadcast writes into the per-port SP_MODE
registers with individual writes for each port. This will preserve
individual port configurations in case if ports are configured
differently.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2010-10-27 18:03:16 -07:00
Alexandre Bounine
2d4da0fc09
rapidio: fix maximum port number in tsi57x EM initialization
...
Replace hardcoded maximum port number with actual reported number of
switch ports.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2010-10-27 18:03:16 -07:00
Alexandre Bounine
388c45ccfa
rapidio: fix IDLE2 bits corruption
...
RapidIO spec v.2.1 adds Idle Sequence 2 into LP-Serial Physical Layer.
The fix ensures that corresponding bits are not corrupted during error
handling.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2010-10-27 18:03:16 -07:00
Alexandre Bounine
af84ca38af
rapidio: add handling of redundant routes
...
Detects RIO link to the already enumerated device and properly sets links
between device objects. Changes to the enumeration/discovery logic:
1. Use Master Enable bit to signal end of the enumeration - agents may
start their discovery process as soon as they see this bit set
(Component Tag register was used before for this purpose).
2. Enumerator sets Component Tag (!= 0) immediately during device
setup. This allows to identify the device if the redundant route
exists in a RIO system.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2010-10-27 18:03:16 -07:00
Alexandre Bounine
a3725c45c1
rapidio: add support for IDT CPS Gen2 switches
...
Add the RIO switch driver and definitions for IDT CPS-1848 and CPS-1616
Gen2 devices.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2010-10-27 18:03:16 -07:00
Alexandre Bounine
e274e0ed0a
rapidio: add device access check into the enumeration
...
Add explicit device access check before performing device enumeration.
This gives a chance to clear possible link error conditions by issuing
safe maintenance read request(s).
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2010-10-27 18:03:16 -07:00
Alexandre Bounine
6429cd49f4
rapidio: add handling of orphan port-write message
...
Add check for access to port-write (PW) message source device before
processing the PW message. If source RIO device is not available (power
down or RIO link failure) trace back to a last available switch/port on
the PW message route and service failure at that point.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2010-10-27 18:03:15 -07:00
Alexandre Bounine
ac38d7232d
rapidio: modify sysfs initialization for switches
...
1. Change to create attribute "routes" only for switches.
2. Add a switch-specific callback to create/remove proprietary attributes.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Thomas Moll <thomas.moll@sysgo.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Kumar Gala <galak@kernel.crashing.org >
Cc: Micha Nelissen <micha@neli.hopto.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2010-10-27 18:03:15 -07:00