diff options
author | Tejun Heo <htejun@gmail.com> | 2006-06-17 02:49:56 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-06-20 04:59:22 -0400 |
commit | 5a44efff4f8fe8139c0c4166ad5aae5f2fa5bced (patch) | |
tree | fe424beaa46ad3d59b28ef79b1da4a1f748e2ac8 /drivers/scsi/sata_nv.c | |
parent | 39f8758259868a01ecad29b4379661dd3f21881f (diff) |
[PATCH] sata_nv: add hotplug support
Add hotplug support.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/scsi/sata_nv.c')
-rw-r--r-- | drivers/scsi/sata_nv.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/scsi/sata_nv.c b/drivers/scsi/sata_nv.c index 2a1bd85404e0..19deaa42fbf0 100644 --- a/drivers/scsi/sata_nv.c +++ b/drivers/scsi/sata_nv.c | |||
@@ -69,7 +69,8 @@ enum { | |||
69 | NV_INT_PORT_SHIFT = 4, /* each port occupies 4 bits */ | 69 | NV_INT_PORT_SHIFT = 4, /* each port occupies 4 bits */ |
70 | 70 | ||
71 | NV_INT_ALL = 0x0f, | 71 | NV_INT_ALL = 0x0f, |
72 | NV_INT_MASK = NV_INT_DEV, | 72 | NV_INT_MASK = NV_INT_DEV | |
73 | NV_INT_ADDED | NV_INT_REMOVED, | ||
73 | 74 | ||
74 | /* INT_CONFIG */ | 75 | /* INT_CONFIG */ |
75 | NV_INT_CONFIG = 0x12, | 76 | NV_INT_CONFIG = 0x12, |
@@ -324,6 +325,12 @@ static int nv_host_intr(struct ata_port *ap, u8 irq_stat) | |||
324 | struct ata_queued_cmd *qc = ata_qc_from_tag(ap, ap->active_tag); | 325 | struct ata_queued_cmd *qc = ata_qc_from_tag(ap, ap->active_tag); |
325 | int handled; | 326 | int handled; |
326 | 327 | ||
328 | /* freeze if hotplugged */ | ||
329 | if (unlikely(irq_stat & (NV_INT_ADDED | NV_INT_REMOVED))) { | ||
330 | ata_port_freeze(ap); | ||
331 | return 1; | ||
332 | } | ||
333 | |||
327 | /* bail out if not our interrupt */ | 334 | /* bail out if not our interrupt */ |
328 | if (!(irq_stat & NV_INT_DEV)) | 335 | if (!(irq_stat & NV_INT_DEV)) |
329 | return 0; | 336 | return 0; |