diff options
| author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-08-29 18:11:40 -0400 |
|---|---|---|
| committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-10-16 18:00:08 -0400 |
| commit | 02ff8f8ee151e880414b99a11f67cae0cecd4977 (patch) | |
| tree | bafdb5af973e0010fb46ea21a2c4f4550a5d8a4d | |
| parent | ab88ca488b8af66c3defa165874e81e695319a19 (diff) | |
firewire: fw-ohci: check for misconfigured bus (phyID == 63)
Check NodeID.nodeNumber as per OHCI 1.1 clause 7.2.3.2. See also IEEE
1394a table 5B-1.
Also, demote the "node ID not valid" message from error to notification
as it is not an error condition.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
| -rw-r--r-- | drivers/firewire/fw-ohci.c | 9 | ||||
| -rw-r--r-- | drivers/firewire/fw-ohci.h | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/drivers/firewire/fw-ohci.c b/drivers/firewire/fw-ohci.c index ec70c9f91171..2f307c4df335 100644 --- a/drivers/firewire/fw-ohci.c +++ b/drivers/firewire/fw-ohci.c | |||
| @@ -917,10 +917,15 @@ static void bus_reset_tasklet(unsigned long data) | |||
| 917 | 917 | ||
| 918 | reg = reg_read(ohci, OHCI1394_NodeID); | 918 | reg = reg_read(ohci, OHCI1394_NodeID); |
| 919 | if (!(reg & OHCI1394_NodeID_idValid)) { | 919 | if (!(reg & OHCI1394_NodeID_idValid)) { |
| 920 | fw_error("node ID not valid, new bus reset in progress\n"); | 920 | fw_notify("node ID not valid, new bus reset in progress\n"); |
| 921 | return; | 921 | return; |
| 922 | } | 922 | } |
| 923 | ohci->node_id = reg & 0xffff; | 923 | if ((reg & OHCI1394_NodeID_nodeNumber) == 63) { |
| 924 | fw_notify("malconfigured bus\n"); | ||
| 925 | return; | ||
| 926 | } | ||
| 927 | ohci->node_id = reg & (OHCI1394_NodeID_busNumber | | ||
| 928 | OHCI1394_NodeID_nodeNumber); | ||
| 924 | 929 | ||
| 925 | /* | 930 | /* |
| 926 | * The count in the SelfIDCount register is the number of | 931 | * The count in the SelfIDCount register is the number of |
diff --git a/drivers/firewire/fw-ohci.h b/drivers/firewire/fw-ohci.h index fa15706397d7..dec4f04e6b24 100644 --- a/drivers/firewire/fw-ohci.h +++ b/drivers/firewire/fw-ohci.h | |||
| @@ -59,6 +59,8 @@ | |||
| 59 | #define OHCI1394_LinkControl_cycleSource (1 << 22) | 59 | #define OHCI1394_LinkControl_cycleSource (1 << 22) |
| 60 | #define OHCI1394_NodeID 0x0E8 | 60 | #define OHCI1394_NodeID 0x0E8 |
| 61 | #define OHCI1394_NodeID_idValid 0x80000000 | 61 | #define OHCI1394_NodeID_idValid 0x80000000 |
| 62 | #define OHCI1394_NodeID_nodeNumber 0x0000003f | ||
| 63 | #define OHCI1394_NodeID_busNumber 0x0000ffc0 | ||
| 62 | #define OHCI1394_PhyControl 0x0EC | 64 | #define OHCI1394_PhyControl 0x0EC |
| 63 | #define OHCI1394_PhyControl_Read(addr) (((addr) << 8) | 0x00008000) | 65 | #define OHCI1394_PhyControl_Read(addr) (((addr) << 8) | 0x00008000) |
| 64 | #define OHCI1394_PhyControl_ReadDone 0x80000000 | 66 | #define OHCI1394_PhyControl_ReadDone 0x80000000 |
