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>
This commit is contained in:
parent
ab88ca488b
commit
02ff8f8ee1
|
@ -917,10 +917,15 @@ static void bus_reset_tasklet(unsigned long data)
|
|||
|
||||
reg = reg_read(ohci, OHCI1394_NodeID);
|
||||
if (!(reg & OHCI1394_NodeID_idValid)) {
|
||||
fw_error("node ID not valid, new bus reset in progress\n");
|
||||
fw_notify("node ID not valid, new bus reset in progress\n");
|
||||
return;
|
||||
}
|
||||
ohci->node_id = reg & 0xffff;
|
||||
if ((reg & OHCI1394_NodeID_nodeNumber) == 63) {
|
||||
fw_notify("malconfigured bus\n");
|
||||
return;
|
||||
}
|
||||
ohci->node_id = reg & (OHCI1394_NodeID_busNumber |
|
||||
OHCI1394_NodeID_nodeNumber);
|
||||
|
||||
/*
|
||||
* The count in the SelfIDCount register is the number of
|
||||
|
|
|
@ -59,6 +59,8 @@
|
|||
#define OHCI1394_LinkControl_cycleSource (1 << 22)
|
||||
#define OHCI1394_NodeID 0x0E8
|
||||
#define OHCI1394_NodeID_idValid 0x80000000
|
||||
#define OHCI1394_NodeID_nodeNumber 0x0000003f
|
||||
#define OHCI1394_NodeID_busNumber 0x0000ffc0
|
||||
#define OHCI1394_PhyControl 0x0EC
|
||||
#define OHCI1394_PhyControl_Read(addr) (((addr) << 8) | 0x00008000)
|
||||
#define OHCI1394_PhyControl_ReadDone 0x80000000
|
||||
|
|
Loading…
Reference in New Issue