[PATCH 2/2] drivers/ata: export some static functions in libata-core.c

Akira Iguchi akira2.iguchi at toshiba.co.jp
Fri Jan 12 11:48:19 EST 2007


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



More information about the Linuxppc-dev mailing list