diff options
author | Alexandre Bounine <alexandre.bounine@idt.com> | 2010-10-27 18:34:30 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-27 21:03:15 -0400 |
commit | dd5648c9f53b5cbd9f948d752624400545f979fb (patch) | |
tree | 9092a86701a6b4fa5cd722d4f3fc8b803d08b94c /drivers/rapidio/switches | |
parent | 68fe4df5d21294401959fa61d5a7094705ed8f6f (diff) |
rapidio: add default handler for error-stopped state
The default error-stopped state handler provides recovery mechanism as
defined by RIO specification.
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>
Diffstat (limited to 'drivers/rapidio/switches')
-rw-r--r-- | drivers/rapidio/switches/idtcps.c | 10 | ||||
-rw-r--r-- | drivers/rapidio/switches/tsi57x.c | 4 |
2 files changed, 14 insertions, 0 deletions
diff --git a/drivers/rapidio/switches/idtcps.c b/drivers/rapidio/switches/idtcps.c index 2c790c144f89..fc9f6374f759 100644 --- a/drivers/rapidio/switches/idtcps.c +++ b/drivers/rapidio/switches/idtcps.c | |||
@@ -117,6 +117,10 @@ idtcps_get_domain(struct rio_mport *mport, u16 destid, u8 hopcount, | |||
117 | 117 | ||
118 | static int idtcps_switch_init(struct rio_dev *rdev, int do_enum) | 118 | static int idtcps_switch_init(struct rio_dev *rdev, int do_enum) |
119 | { | 119 | { |
120 | struct rio_mport *mport = rdev->net->hport; | ||
121 | u16 destid = rdev->rswitch->destid; | ||
122 | u8 hopcount = rdev->rswitch->hopcount; | ||
123 | |||
120 | pr_debug("RIO: %s for %s\n", __func__, rio_name(rdev)); | 124 | pr_debug("RIO: %s for %s\n", __func__, rio_name(rdev)); |
121 | rdev->rswitch->add_entry = idtcps_route_add_entry; | 125 | rdev->rswitch->add_entry = idtcps_route_add_entry; |
122 | rdev->rswitch->get_entry = idtcps_route_get_entry; | 126 | rdev->rswitch->get_entry = idtcps_route_get_entry; |
@@ -126,6 +130,12 @@ static int idtcps_switch_init(struct rio_dev *rdev, int do_enum) | |||
126 | rdev->rswitch->em_init = NULL; | 130 | rdev->rswitch->em_init = NULL; |
127 | rdev->rswitch->em_handle = NULL; | 131 | rdev->rswitch->em_handle = NULL; |
128 | 132 | ||
133 | if (do_enum) { | ||
134 | /* set TVAL = ~50us */ | ||
135 | rio_mport_write_config_32(mport, destid, hopcount, | ||
136 | rdev->phys_efptr + RIO_PORT_LINKTO_CTL_CSR, 0x8e << 8); | ||
137 | } | ||
138 | |||
129 | return 0; | 139 | return 0; |
130 | } | 140 | } |
131 | 141 | ||
diff --git a/drivers/rapidio/switches/tsi57x.c b/drivers/rapidio/switches/tsi57x.c index d34df722d95f..d9e94920e8b0 100644 --- a/drivers/rapidio/switches/tsi57x.c +++ b/drivers/rapidio/switches/tsi57x.c | |||
@@ -205,6 +205,10 @@ tsi57x_em_init(struct rio_dev *rdev) | |||
205 | portnum++; | 205 | portnum++; |
206 | } | 206 | } |
207 | 207 | ||
208 | /* set TVAL = ~50us */ | ||
209 | rio_mport_write_config_32(mport, destid, hopcount, | ||
210 | rdev->phys_efptr + RIO_PORT_LINKTO_CTL_CSR, 0x9a << 8); | ||
211 | |||
208 | return 0; | 212 | return 0; |
209 | } | 213 | } |
210 | 214 | ||