mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
rapidio: fix default routing initialization
Fix switch initialization to ensure that all switches have default routing disabled. This guarantees that no unexpected RapidIO packets arrive to the default port set by reset and there is no default routing destination until it is properly configured by software. This update also unifies handling of unmapped destinations by tsi57x, IDT Gen1 and IDT Gen2 switches. Signed-off-by: Alexandre Bounine <[email protected]> Cc: Kumar Gala <[email protected]> Cc: Matt Porter <[email protected]> Cc: Li Yang <[email protected]> Cc: Thomas Moll <[email protected]> Cc: <[email protected]> [2.6.37+] Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
a085963a27
commit
0bf2461fdd
3 changed files with 21 additions and 0 deletions
|
|
@ -95,6 +95,9 @@ idtg2_route_add_entry(struct rio_mport *mport, u16 destid, u8 hopcount,
|
|||
else
|
||||
table++;
|
||||
|
||||
if (route_port == RIO_INVALID_ROUTE)
|
||||
route_port = IDT_DEFAULT_ROUTE;
|
||||
|
||||
rio_mport_write_config_32(mport, destid, hopcount,
|
||||
LOCAL_RTE_CONF_DESTID_SEL, table);
|
||||
|
||||
|
|
@ -411,6 +414,12 @@ static int idtg2_switch_init(struct rio_dev *rdev, int do_enum)
|
|||
rdev->rswitch->em_handle = idtg2_em_handler;
|
||||
rdev->rswitch->sw_sysfs = idtg2_sysfs;
|
||||
|
||||
if (do_enum) {
|
||||
/* Ensure that default routing is disabled on startup */
|
||||
rio_write_config_32(rdev,
|
||||
RIO_STD_RTE_DEFAULT_PORT, IDT_NO_ROUTE);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@ idtcps_route_add_entry(struct rio_mport *mport, u16 destid, u8 hopcount,
|
|||
{
|
||||
u32 result;
|
||||
|
||||
if (route_port == RIO_INVALID_ROUTE)
|
||||
route_port = CPS_DEFAULT_ROUTE;
|
||||
|
||||
if (table == RIO_GLOBAL_TABLE) {
|
||||
rio_mport_write_config_32(mport, destid, hopcount,
|
||||
RIO_STD_RTE_CONF_DESTID_SEL_CSR, route_destid);
|
||||
|
|
@ -130,6 +133,9 @@ static int idtcps_switch_init(struct rio_dev *rdev, int do_enum)
|
|||
/* set TVAL = ~50us */
|
||||
rio_write_config_32(rdev,
|
||||
rdev->phys_efptr + RIO_PORT_LINKTO_CTL_CSR, 0x8e << 8);
|
||||
/* Ensure that default routing is disabled on startup */
|
||||
rio_write_config_32(rdev,
|
||||
RIO_STD_RTE_DEFAULT_PORT, CPS_NO_ROUTE);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -303,6 +303,12 @@ static int tsi57x_switch_init(struct rio_dev *rdev, int do_enum)
|
|||
rdev->rswitch->em_init = tsi57x_em_init;
|
||||
rdev->rswitch->em_handle = tsi57x_em_handler;
|
||||
|
||||
if (do_enum) {
|
||||
/* Ensure that default routing is disabled on startup */
|
||||
rio_write_config_32(rdev, RIO_STD_RTE_DEFAULT_PORT,
|
||||
RIO_INVALID_ROUTE);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue