Hi, Linas-san, Arnd-san. >Why is it that other drivers did not need this functions? Did they >copy them? Or maybe they don't need them? As I mentioned in PATCH 1/2, main reason is that this PATA controller supports only 32bit accesses and that I need to copy all functions which have low-level access in ata_scc.c. In these functions, static functions I exported are used. I thought exporting them was better than copying them. But other drivers can use functions which have low-level access as it is. Therefore they don't need to export static functions. Now, I am trying to implement low-level calls in struct ata_port_operations to deal with this problem. Please wait a moment. >-static unsigned int >+unsigned int > ata_dev_try_classify(struct ata_port *ap, unsigned int device, u8 *r_err) I use this in scc_std_softreset(), which is almost same as ata_std_softreset(). But I cannot use it because ata_devchk() and ata_bus_softreset() called by it use low-level access. >-static void ata_pio_sectors(struct ata_queued_cmd *qc) >+void ata_pio_sectors(struct ata_queued_cmd *qc) .. >-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) .. >-static void atapi_pio_bytes(struct ata_queued_cmd *qc) >+void atapi_pio_bytes(struct ata_queued_cmd *qc) I use them in scc_hsm_move(), which is almost same as ata_hsm_move(). ata_hsm_move() calls ata_hsm_qc_complete() and it calls ata_irq_on(). There is a low-level access in ata_irq_on(), so I cannot use it. Best regards, Akira Iguchi - 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