提交 02ff8f8e 编写于 作者: S Stefan Richter

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: NStefan Richter <stefanr@s5r6.in-berlin.de>
上级 ab88ca48
...@@ -917,10 +917,15 @@ static void bus_reset_tasklet(unsigned long data) ...@@ -917,10 +917,15 @@ static void bus_reset_tasklet(unsigned long data)
reg = reg_read(ohci, OHCI1394_NodeID); reg = reg_read(ohci, OHCI1394_NodeID);
if (!(reg & OHCI1394_NodeID_idValid)) { 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; 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 * The count in the SelfIDCount register is the number of
......
...@@ -59,6 +59,8 @@ ...@@ -59,6 +59,8 @@
#define OHCI1394_LinkControl_cycleSource (1 << 22) #define OHCI1394_LinkControl_cycleSource (1 << 22)
#define OHCI1394_NodeID 0x0E8 #define OHCI1394_NodeID 0x0E8
#define OHCI1394_NodeID_idValid 0x80000000 #define OHCI1394_NodeID_idValid 0x80000000
#define OHCI1394_NodeID_nodeNumber 0x0000003f
#define OHCI1394_NodeID_busNumber 0x0000ffc0
#define OHCI1394_PhyControl 0x0EC #define OHCI1394_PhyControl 0x0EC
#define OHCI1394_PhyControl_Read(addr) (((addr) << 8) | 0x00008000) #define OHCI1394_PhyControl_Read(addr) (((addr) << 8) | 0x00008000)
#define OHCI1394_PhyControl_ReadDone 0x80000000 #define OHCI1394_PhyControl_ReadDone 0x80000000
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册