diff options
Diffstat (limited to 'drivers/ieee1394/nodemgr.c')
| -rw-r--r-- | drivers/ieee1394/nodemgr.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c index 9e39f73282ee..79ef5fd928ae 100644 --- a/drivers/ieee1394/nodemgr.c +++ b/drivers/ieee1394/nodemgr.c | |||
| @@ -115,8 +115,14 @@ static int nodemgr_bus_read(struct csr1212_csr *csr, u64 addr, u16 length, | |||
| 115 | return error; | 115 | return error; |
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | #define OUI_FREECOM_TECHNOLOGIES_GMBH 0x0001db | ||
| 119 | |||
| 118 | static int nodemgr_get_max_rom(quadlet_t *bus_info_data, void *__ci) | 120 | static int nodemgr_get_max_rom(quadlet_t *bus_info_data, void *__ci) |
| 119 | { | 121 | { |
| 122 | /* Freecom FireWire Hard Drive firmware bug */ | ||
| 123 | if (be32_to_cpu(bus_info_data[3]) >> 8 == OUI_FREECOM_TECHNOLOGIES_GMBH) | ||
| 124 | return 0; | ||
| 125 | |||
| 120 | return (be32_to_cpu(bus_info_data[2]) >> 8) & 0x3; | 126 | return (be32_to_cpu(bus_info_data[2]) >> 8) & 0x3; |
| 121 | } | 127 | } |
| 122 | 128 | ||
| @@ -1685,6 +1691,7 @@ static int nodemgr_host_thread(void *data) | |||
| 1685 | g = get_hpsb_generation(host); | 1691 | g = get_hpsb_generation(host); |
| 1686 | for (i = 0; i < 4 ; i++) { | 1692 | for (i = 0; i < 4 ; i++) { |
| 1687 | msleep_interruptible(63); | 1693 | msleep_interruptible(63); |
| 1694 | try_to_freeze(); | ||
| 1688 | if (kthread_should_stop()) | 1695 | if (kthread_should_stop()) |
| 1689 | goto exit; | 1696 | goto exit; |
| 1690 | 1697 | ||
| @@ -1725,6 +1732,7 @@ static int nodemgr_host_thread(void *data) | |||
| 1725 | /* Sleep 3 seconds */ | 1732 | /* Sleep 3 seconds */ |
| 1726 | for (i = 3000/200; i; i--) { | 1733 | for (i = 3000/200; i; i--) { |
| 1727 | msleep_interruptible(200); | 1734 | msleep_interruptible(200); |
| 1735 | try_to_freeze(); | ||
| 1728 | if (kthread_should_stop()) | 1736 | if (kthread_should_stop()) |
| 1729 | goto exit; | 1737 | goto exit; |
| 1730 | 1738 | ||
