This patch modifies some static functions in libata-core.c and libata.h to use them in ata_scc.c. Signed-off-by: Kou Ishizaki <kou.ishizaki@xxxxxxxxxxxxx> Signed-off-by: Akira Iguchi <akira2.iguchi@xxxxxxxxxxxxx> --- --- linux-2.6.20-rc4/drivers/ata/libata-core.c.orig 2007-01-11 01:56:11.000000000 +0900 +++ linux-2.6.20-rc4/drivers/ata/libata-core.c 2007-01-11 01:56:34.000000000 +0900 @@ -767,7 +767,7 @@ unsigned int ata_dev_classify(const stru * Device type - %ATA_DEV_ATA, %ATA_DEV_ATAPI or %ATA_DEV_NONE. */ -static unsigned int +unsigned int ata_dev_try_classify(struct ata_port *ap, unsigned int device, u8 *r_err) { struct ata_taskfile tf; @@ -2528,26 +2528,6 @@ int ata_set_mode(struct ata_port *ap, st } /** - * ata_tf_to_host - issue ATA taskfile to host controller - * @ap: port to which command is being issued - * @tf: ATA taskfile register set - * - * Issues ATA taskfile register set to ATA host controller, - * with proper synchronization with interrupt handler and - * other threads. - * - * LOCKING: - * spin_lock_irqsave(host lock) - */ - -static inline void ata_tf_to_host(struct ata_port *ap, - const struct ata_taskfile *tf) -{ - ap->ops->tf_load(ap, tf); - ap->ops->exec_command(ap, tf); -} - -/** * ata_busy_sleep - sleep until BSY clears, or timeout * @ap: port containing status register to be polled * @tmout_pat: impatience timeout @@ -4080,7 +4060,7 @@ static void ata_pio_sector(struct ata_qu * Inherited from caller. */ -static void ata_pio_sectors(struct ata_queued_cmd *qc) +void ata_pio_sectors(struct ata_queued_cmd *qc) { if (is_multi_taskfile(&qc->tf)) { /* READ/WRITE MULTIPLE */ @@ -4107,7 +4087,7 @@ static void ata_pio_sectors(struct ata_q * caller. */ -static void atapi_send_cdb(struct ata_port *ap, struct ata_queued_cmd *qc) +void atapi_send_cdb(struct ata_port *ap, struct ata_queued_cmd *qc) { /* send SCSI cdb */ DPRINTK("send cdb\n"); @@ -4236,7 +4216,7 @@ next_sg: * Inherited from caller. */ -static void atapi_pio_bytes(struct ata_queued_cmd *qc) +void atapi_pio_bytes(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; struct ata_device *dev = qc->dev; @@ -4277,33 +4257,6 @@ err_out: } /** - * ata_hsm_ok_in_wq - Check if the qc can be handled in the workqueue. - * @ap: the target ata_port - * @qc: qc on going - * - * RETURNS: - * 1 if ok in workqueue, 0 otherwise. - */ - -static inline int ata_hsm_ok_in_wq(struct ata_port *ap, struct ata_queued_cmd *qc) -{ - if (qc->tf.flags & ATA_TFLAG_POLLING) - return 1; - - if (ap->hsm_task_state == HSM_ST_FIRST) { - if (qc->tf.protocol == ATA_PROT_PIO && - (qc->tf.flags & ATA_TFLAG_WRITE)) - return 1; - - if (is_atapi_taskfile(&qc->tf) && - !(qc->dev->flags & ATA_DFLAG_CDB_INTR)) - return 1; - } - - return 0; -} - -/** * ata_hsm_qc_complete - finish a qc running on standard HSM * @qc: Command to complete * @in_wq: 1 if called from workqueue, 0 otherwise @@ -6500,3 +6453,10 @@ EXPORT_SYMBOL_GPL(ata_eh_thaw_port); EXPORT_SYMBOL_GPL(ata_eh_qc_complete); EXPORT_SYMBOL_GPL(ata_eh_qc_retry); EXPORT_SYMBOL_GPL(ata_do_eh); + +EXPORT_SYMBOL_GPL(ata_dev_try_classify); +EXPORT_SYMBOL_GPL(ata_pio_sectors); +EXPORT_SYMBOL_GPL(atapi_send_cdb); +EXPORT_SYMBOL_GPL(atapi_pio_bytes); +EXPORT_SYMBOL_GPL(ata_dev_select); +EXPORT_SYMBOL_GPL(ata_probe_ent_alloc); --- linux-2.6.20-rc4/include/linux/libata.h.orig 2007-01-11 01:56:22.000000000 +0900 +++ linux-2.6.20-rc4/include/linux/libata.h 2007-01-11 01:56:34.000000000 +0900 @@ -761,6 +761,12 @@ extern void ata_port_queue_task(struct a extern u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val, unsigned long interval_msec, unsigned long timeout_msec); +unsigned int ata_dev_try_classify(struct ata_port *ap, unsigned int device, u8 *r_err); +void ata_pio_sectors(struct ata_queued_cmd *qc); +void atapi_send_cdb(struct ata_port *ap, struct ata_queued_cmd *qc); +void atapi_pio_bytes(struct ata_queued_cmd *qc); +void ata_dev_select(struct ata_port *ap, unsigned int device, unsigned int wait, unsigned int can_sleep); +struct ata_probe_ent *ata_probe_ent_alloc(struct device *dev, const struct ata_port_info *port); /* * Default driver ops implementations @@ -1244,4 +1250,51 @@ static inline struct ata_port *ata_shost return (struct ata_port *) &host->hostdata[0]; } +/** + * ata_tf_to_host - issue ATA taskfile to host controller + * @ap: port to which command is being issued + * @tf: ATA taskfile register set + * + * Issues ATA taskfile register set to ATA host controller, + * with proper synchronization with interrupt handler and + * other threads. + * + * LOCKING: + * spin_lock_irqsave(host lock) + */ + +static inline void ata_tf_to_host(struct ata_port *ap, + const struct ata_taskfile *tf) +{ + ap->ops->tf_load(ap, tf); + ap->ops->exec_command(ap, tf); +} + +/** + * ata_hsm_ok_in_wq - Check if the qc can be handled in the workqueue. + * @ap: the target ata_port + * @qc: qc on going + * + * RETURNS: + * 1 if ok in workqueue, 0 otherwise. + */ + +static inline int ata_hsm_ok_in_wq(struct ata_port *ap, struct ata_queued_cmd *qc) +{ + if (qc->tf.flags & ATA_TFLAG_POLLING) + return 1; + + if (ap->hsm_task_state == HSM_ST_FIRST) { + if (qc->tf.protocol == ATA_PROT_PIO && + (qc->tf.flags & ATA_TFLAG_WRITE)) + return 1; + + if (is_atapi_taskfile(&qc->tf) && + !(qc->dev->flags & ATA_DFLAG_CDB_INTR)) + return 1; + } + + return 0; +} + #endif /* __LINUX_LIBATA_H__ */ - 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