Patch 9/10: irq_on/irq_off are now only wrapped by freeze/thaw (and unused otherwise). We can integrate freeze/thaw with irq_on/irq_off. Signed-off-by: Albert Lee <albertcc@xxxxxxxxxx> --- This is for libata-core. The LLDDs will be fixed in the next patch. diff -Nrup 08_tfload_cleanup/drivers/ata/libata-core.c 09_integrate_irq_on_off/drivers/ata/libata-core.c --- 08_tfload_cleanup/drivers/ata/libata-core.c 2007-07-04 13:13:56.000000000 +0800 +++ 09_integrate_irq_on_off/drivers/ata/libata-core.c 2007-07-04 13:35:05.000000000 +0800 @@ -4753,7 +4753,7 @@ static void ata_hsm_qc_complete(struct a qc = ata_qc_from_tag(ap, qc->tag); if (qc) { if (likely(!(qc->err_mask & AC_ERR_HSM))) { - ap->ops->thaw(ap); + ap->ops->irq_on(ap); ata_qc_complete(qc); } else ata_port_freeze(ap); @@ -4769,7 +4769,7 @@ static void ata_hsm_qc_complete(struct a } else { if (in_wq) { spin_lock_irqsave(ap->lock, flags); - ap->ops->thaw(ap); + ap->ops->irq_on(ap); ata_qc_complete(qc); spin_unlock_irqrestore(ap->lock, flags); } else @@ -5411,7 +5411,7 @@ unsigned int ata_qc_issue_prot(struct at switch (qc->tf.protocol) { case ATA_PROT_NODATA: if (qc->tf.flags & ATA_TFLAG_POLLING) - ap->ops->freeze(ap); + ap->ops->irq_off(ap); ata_tf_to_host(ap, &qc->tf); ap->hsm_task_state = HSM_ST_LAST; @@ -5432,7 +5432,7 @@ unsigned int ata_qc_issue_prot(struct at case ATA_PROT_PIO: if (qc->tf.flags & ATA_TFLAG_POLLING) - ap->ops->freeze(ap); + ap->ops->irq_off(ap); ata_tf_to_host(ap, &qc->tf); @@ -5461,7 +5461,7 @@ unsigned int ata_qc_issue_prot(struct at case ATA_PROT_ATAPI: case ATA_PROT_ATAPI_NODATA: if (qc->tf.flags & ATA_TFLAG_POLLING) - ap->ops->freeze(ap); + ap->ops->irq_off(ap); ata_tf_to_host(ap, &qc->tf); @@ -6758,8 +6758,6 @@ const struct ata_port_operations ata_dum .dev_select = ata_noop_dev_select, .qc_prep = ata_noop_qc_prep, .qc_issue = ata_dummy_qc_issue, - .freeze = ata_dummy_noret, - .thaw = ata_dummy_noret, .error_handler = ata_dummy_noret, .post_internal_cmd = ata_dummy_qc_noret, .irq_clear = ata_dummy_noret, @@ -6821,8 +6819,6 @@ EXPORT_SYMBOL_GPL(ata_bmdma_start); EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear); EXPORT_SYMBOL_GPL(ata_bmdma_status); EXPORT_SYMBOL_GPL(ata_bmdma_stop); -EXPORT_SYMBOL_GPL(ata_bmdma_freeze); -EXPORT_SYMBOL_GPL(ata_bmdma_thaw); EXPORT_SYMBOL_GPL(ata_bmdma_drive_eh); EXPORT_SYMBOL_GPL(ata_bmdma_error_handler); EXPORT_SYMBOL_GPL(ata_bmdma_post_internal_cmd); diff -Nrup 08_tfload_cleanup/drivers/ata/libata-eh.c 09_integrate_irq_on_off/drivers/ata/libata-eh.c --- 08_tfload_cleanup/drivers/ata/libata-eh.c 2007-07-04 11:26:30.000000000 +0800 +++ 09_integrate_irq_on_off/drivers/ata/libata-eh.c 2007-07-04 13:36:27.000000000 +0800 @@ -617,8 +617,7 @@ static void __ata_port_freeze(struct ata { WARN_ON(!ap->ops->error_handler); - if (ap->ops->freeze) - ap->ops->freeze(ap); + ap->ops->irq_off(ap); ap->pflags |= ATA_PFLAG_FROZEN; @@ -690,8 +689,7 @@ void ata_eh_thaw_port(struct ata_port *a ap->pflags &= ~ATA_PFLAG_FROZEN; - if (ap->ops->thaw) - ap->ops->thaw(ap); + ap->ops->irq_on(ap); spin_unlock_irqrestore(ap->lock, flags); diff -Nrup 08_tfload_cleanup/drivers/ata/libata-sff.c 09_integrate_irq_on_off/drivers/ata/libata-sff.c --- 08_tfload_cleanup/drivers/ata/libata-sff.c 2007-07-04 13:20:30.000000000 +0800 +++ 09_integrate_irq_on_off/drivers/ata/libata-sff.c 2007-07-04 13:57:21.000000000 +0800 @@ -48,23 +48,20 @@ * LOCKING: * Inherited from caller. */ -u8 ata_irq_on(struct ata_port *ap) +void ata_irq_on(struct ata_port *ap) { struct ata_ioports *ioaddr = &ap->ioaddr; - u8 tmp; ap->ctl &= ~ATA_NIEN; ap->last_ctl = ap->ctl; iowrite8(ap->ctl, ioaddr->ctl_addr); - tmp = ata_wait_idle(ap); + ata_wait_idle(ap); ap->ops->irq_clear(ap); - - return tmp; } -u8 ata_dummy_irq_on (struct ata_port *ap) { return 0; } +void ata_dummy_irq_on (struct ata_port *ap) { } /** * ata_irq_off - Disable interrupts on a port. @@ -76,10 +73,9 @@ u8 ata_dummy_irq_on (struct ata_port *ap * LOCKING: * Inherited from caller. */ -u8 ata_irq_off(struct ata_port *ap) +void ata_irq_off(struct ata_port *ap) { struct ata_ioports *ioaddr = &ap->ioaddr; - u8 tmp; ap->ctl |= ATA_NIEN; ap->last_ctl = ap->ctl; @@ -90,14 +86,12 @@ u8 ata_irq_off(struct ata_port *ap) * ATA_NIEN manipulation. Also, many controllers fail to mask * previously pending IRQ on ATA_NIEN assertion. Clear it. */ - tmp = ata_wait_idle(ap); + ata_wait_idle(ap); ap->ops->irq_clear(ap); - - return tmp; } -u8 ata_dummy_irq_off (struct ata_port *ap) { return 0; } +void ata_dummy_irq_off (struct ata_port *ap) { } /** * ata_irq_ack - Acknowledge a device interrupt. @@ -405,37 +399,6 @@ void ata_bmdma_stop(struct ata_queued_cm } /** - * ata_bmdma_freeze - Freeze BMDMA controller port - * @ap: port to freeze - * - * Freeze BMDMA controller port. - * - * LOCKING: - * Inherited from caller. - */ -void ata_bmdma_freeze(struct ata_port *ap) -{ - ap->ops->irq_off(ap); -} - -/** - * ata_bmdma_thaw - Thaw BMDMA controller port - * @ap: port to thaw - * - * Thaw BMDMA controller port. - * - * LOCKING: - * Inherited from caller. - */ -void ata_bmdma_thaw(struct ata_port *ap) -{ - /* clear & re-enable interrupts */ - ata_chk_status(ap); - ap->ops->irq_clear(ap); - ap->ops->irq_on(ap); -} - -/** * ata_bmdma_drive_eh - Perform EH with given methods for BMDMA controller * @ap: port to handle error for * @prereset: prereset method (can be NULL) diff -Nrup 08_tfload_cleanup/include/linux/libata.h 09_integrate_irq_on_off/include/linux/libata.h --- 08_tfload_cleanup/include/linux/libata.h 2007-07-04 13:13:56.000000000 +0800 +++ 09_integrate_irq_on_off/include/linux/libata.h 2007-07-04 13:52:06.000000000 +0800 @@ -589,15 +589,13 @@ struct ata_port_operations { */ void (*eng_timeout) (struct ata_port *ap); /* obsolete */ - void (*freeze) (struct ata_port *ap); - void (*thaw) (struct ata_port *ap); void (*error_handler) (struct ata_port *ap); void (*post_internal_cmd) (struct ata_queued_cmd *qc); irq_handler_t irq_handler; void (*irq_clear) (struct ata_port *); - u8 (*irq_on) (struct ata_port *); - u8 (*irq_off) (struct ata_port *); + void (*irq_on) (struct ata_port *); + void (*irq_off) (struct ata_port *); u8 (*irq_ack) (struct ata_port *ap, unsigned int chk_drq); u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg); @@ -779,8 +777,6 @@ extern void ata_bmdma_start (struct ata_ extern void ata_bmdma_stop(struct ata_queued_cmd *qc); extern u8 ata_bmdma_status(struct ata_port *ap); extern void ata_bmdma_irq_clear(struct ata_port *ap); -extern void ata_bmdma_freeze(struct ata_port *ap); -extern void ata_bmdma_thaw(struct ata_port *ap); extern void ata_bmdma_drive_eh(struct ata_port *ap, ata_prereset_fn_t prereset, ata_reset_fn_t softreset, ata_reset_fn_t hardreset, @@ -803,10 +799,10 @@ extern int ata_scsi_change_queue_depth(s int queue_depth); extern struct ata_device *ata_dev_pair(struct ata_device *adev); extern int ata_do_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev); -extern u8 ata_irq_on(struct ata_port *ap); -extern u8 ata_dummy_irq_on(struct ata_port *ap); -extern u8 ata_irq_off(struct ata_port *ap); -extern u8 ata_dummy_irq_off(struct ata_port *ap); +extern void ata_irq_on(struct ata_port *ap); +extern void ata_dummy_irq_on(struct ata_port *ap); +extern void ata_irq_off(struct ata_port *ap); +extern void ata_dummy_irq_off(struct ata_port *ap); extern u8 ata_irq_ack(struct ata_port *ap, unsigned int chk_drq); extern u8 ata_dummy_irq_ack(struct ata_port *ap, unsigned int chk_drq); - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html