diff options
| -rw-r--r-- | drivers/firewire/ohci.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index a818dc834690..448598876278 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c | |||
| @@ -527,6 +527,9 @@ static int read_phy_reg(struct fw_ohci *ohci, int addr) | |||
| 527 | reg_write(ohci, OHCI1394_PhyControl, OHCI1394_PhyControl_Read(addr)); | 527 | reg_write(ohci, OHCI1394_PhyControl, OHCI1394_PhyControl_Read(addr)); |
| 528 | for (i = 0; i < 3 + 100; i++) { | 528 | for (i = 0; i < 3 + 100; i++) { |
| 529 | val = reg_read(ohci, OHCI1394_PhyControl); | 529 | val = reg_read(ohci, OHCI1394_PhyControl); |
| 530 | if (!~val) | ||
| 531 | return -ENODEV; /* Card was ejected. */ | ||
| 532 | |||
| 530 | if (val & OHCI1394_PhyControl_ReadDone) | 533 | if (val & OHCI1394_PhyControl_ReadDone) |
| 531 | return OHCI1394_PhyControl_ReadData(val); | 534 | return OHCI1394_PhyControl_ReadData(val); |
| 532 | 535 | ||
| @@ -550,6 +553,9 @@ static int write_phy_reg(const struct fw_ohci *ohci, int addr, u32 val) | |||
| 550 | OHCI1394_PhyControl_Write(addr, val)); | 553 | OHCI1394_PhyControl_Write(addr, val)); |
| 551 | for (i = 0; i < 3 + 100; i++) { | 554 | for (i = 0; i < 3 + 100; i++) { |
| 552 | val = reg_read(ohci, OHCI1394_PhyControl); | 555 | val = reg_read(ohci, OHCI1394_PhyControl); |
| 556 | if (!~val) | ||
| 557 | return -ENODEV; /* Card was ejected. */ | ||
| 558 | |||
| 553 | if (!(val & OHCI1394_PhyControl_WritePending)) | 559 | if (!(val & OHCI1394_PhyControl_WritePending)) |
| 554 | return 0; | 560 | return 0; |
| 555 | 561 | ||
