Commit 6357357c authored by Tejun Heo's avatar Tejun Heo Committed by Jeff Garzik

libata: export xfermode / PATA timing related functions

Export the following xfermode related functions.

* ata_pack_xfermask()
* ata_unpack_xfermask()
* ata_xfer_mask2mode()
* ata_xfer_mode2mask()
* ata_xfer_mode2shift()
* ata_mode_string()
* ata_id_xfermask()
* ata_timing_find_mode()

These functions will be used later by LLD updates.  While at it,
change unsigned short @speed to u8 @xfer_mode in
ata_timing_find_mode() for consistency.
Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent f8ab6d8e
...@@ -454,9 +454,8 @@ int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev, ...@@ -454,9 +454,8 @@ int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev,
* RETURNS: * RETURNS:
* Packed xfer_mask. * Packed xfer_mask.
*/ */
static unsigned int ata_pack_xfermask(unsigned int pio_mask, unsigned int ata_pack_xfermask(unsigned int pio_mask,
unsigned int mwdma_mask, unsigned int mwdma_mask, unsigned int udma_mask)
unsigned int udma_mask)
{ {
return ((pio_mask << ATA_SHIFT_PIO) & ATA_MASK_PIO) | return ((pio_mask << ATA_SHIFT_PIO) & ATA_MASK_PIO) |
((mwdma_mask << ATA_SHIFT_MWDMA) & ATA_MASK_MWDMA) | ((mwdma_mask << ATA_SHIFT_MWDMA) & ATA_MASK_MWDMA) |
...@@ -473,10 +472,8 @@ static unsigned int ata_pack_xfermask(unsigned int pio_mask, ...@@ -473,10 +472,8 @@ static unsigned int ata_pack_xfermask(unsigned int pio_mask,
* Unpack @xfer_mask into @pio_mask, @mwdma_mask and @udma_mask. * Unpack @xfer_mask into @pio_mask, @mwdma_mask and @udma_mask.
* Any NULL distination masks will be ignored. * Any NULL distination masks will be ignored.
*/ */
static void ata_unpack_xfermask(unsigned int xfer_mask, void ata_unpack_xfermask(unsigned int xfer_mask, unsigned int *pio_mask,
unsigned int *pio_mask, unsigned int *mwdma_mask, unsigned int *udma_mask)
unsigned int *mwdma_mask,
unsigned int *udma_mask)
{ {
if (pio_mask) if (pio_mask)
*pio_mask = (xfer_mask & ATA_MASK_PIO) >> ATA_SHIFT_PIO; *pio_mask = (xfer_mask & ATA_MASK_PIO) >> ATA_SHIFT_PIO;
...@@ -509,7 +506,7 @@ static const struct ata_xfer_ent { ...@@ -509,7 +506,7 @@ static const struct ata_xfer_ent {
* RETURNS: * RETURNS:
* Matching XFER_* value, 0 if no match found. * Matching XFER_* value, 0 if no match found.
*/ */
static u8 ata_xfer_mask2mode(unsigned int xfer_mask) u8 ata_xfer_mask2mode(unsigned int xfer_mask)
{ {
int highbit = fls(xfer_mask) - 1; int highbit = fls(xfer_mask) - 1;
const struct ata_xfer_ent *ent; const struct ata_xfer_ent *ent;
...@@ -532,7 +529,7 @@ static u8 ata_xfer_mask2mode(unsigned int xfer_mask) ...@@ -532,7 +529,7 @@ static u8 ata_xfer_mask2mode(unsigned int xfer_mask)
* RETURNS: * RETURNS:
* Matching xfer_mask, 0 if no match found. * Matching xfer_mask, 0 if no match found.
*/ */
static unsigned int ata_xfer_mode2mask(u8 xfer_mode) unsigned int ata_xfer_mode2mask(u8 xfer_mode)
{ {
const struct ata_xfer_ent *ent; const struct ata_xfer_ent *ent;
...@@ -554,7 +551,7 @@ static unsigned int ata_xfer_mode2mask(u8 xfer_mode) ...@@ -554,7 +551,7 @@ static unsigned int ata_xfer_mode2mask(u8 xfer_mode)
* RETURNS: * RETURNS:
* Matching xfer_shift, -1 if no match found. * Matching xfer_shift, -1 if no match found.
*/ */
static int ata_xfer_mode2shift(unsigned int xfer_mode) int ata_xfer_mode2shift(unsigned int xfer_mode)
{ {
const struct ata_xfer_ent *ent; const struct ata_xfer_ent *ent;
...@@ -578,7 +575,7 @@ static int ata_xfer_mode2shift(unsigned int xfer_mode) ...@@ -578,7 +575,7 @@ static int ata_xfer_mode2shift(unsigned int xfer_mode)
* Constant C string representing highest speed listed in * Constant C string representing highest speed listed in
* @mode_mask, or the constant C string "<n/a>". * @mode_mask, or the constant C string "<n/a>".
*/ */
static const char *ata_mode_string(unsigned int xfer_mask) const char *ata_mode_string(unsigned int xfer_mask)
{ {
static const char * const xfer_mode_str[] = { static const char * const xfer_mode_str[] = {
"PIO0", "PIO0",
...@@ -1468,7 +1465,7 @@ static inline void ata_dump_id(const u16 *id) ...@@ -1468,7 +1465,7 @@ static inline void ata_dump_id(const u16 *id)
* RETURNS: * RETURNS:
* Computed xfermask * Computed xfermask
*/ */
static unsigned int ata_id_xfermask(const u16 *id) unsigned int ata_id_xfermask(const u16 *id)
{ {
unsigned int pio_mask, mwdma_mask, udma_mask; unsigned int pio_mask, mwdma_mask, udma_mask;
...@@ -2855,11 +2852,11 @@ void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b, ...@@ -2855,11 +2852,11 @@ void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b,
if (what & ATA_TIMING_UDMA ) m->udma = max(a->udma, b->udma); if (what & ATA_TIMING_UDMA ) m->udma = max(a->udma, b->udma);
} }
static const struct ata_timing *ata_timing_find_mode(unsigned short speed) const struct ata_timing *ata_timing_find_mode(u8 xfer_mode)
{ {
const struct ata_timing *t; const struct ata_timing *t;
for (t = ata_timing; t->mode != speed; t++) for (t = ata_timing; t->mode != xfer_mode; t++)
if (t->mode == 0xFF) if (t->mode == 0xFF)
return NULL; return NULL;
return t; return t;
...@@ -7590,6 +7587,13 @@ EXPORT_SYMBOL_GPL(ata_std_dev_select); ...@@ -7590,6 +7587,13 @@ EXPORT_SYMBOL_GPL(ata_std_dev_select);
EXPORT_SYMBOL_GPL(sata_print_link_status); EXPORT_SYMBOL_GPL(sata_print_link_status);
EXPORT_SYMBOL_GPL(ata_tf_to_fis); EXPORT_SYMBOL_GPL(ata_tf_to_fis);
EXPORT_SYMBOL_GPL(ata_tf_from_fis); EXPORT_SYMBOL_GPL(ata_tf_from_fis);
EXPORT_SYMBOL_GPL(ata_pack_xfermask);
EXPORT_SYMBOL_GPL(ata_unpack_xfermask);
EXPORT_SYMBOL_GPL(ata_xfer_mask2mode);
EXPORT_SYMBOL_GPL(ata_xfer_mode2mask);
EXPORT_SYMBOL_GPL(ata_xfer_mode2shift);
EXPORT_SYMBOL_GPL(ata_mode_string);
EXPORT_SYMBOL_GPL(ata_id_xfermask);
EXPORT_SYMBOL_GPL(ata_check_status); EXPORT_SYMBOL_GPL(ata_check_status);
EXPORT_SYMBOL_GPL(ata_altstatus); EXPORT_SYMBOL_GPL(ata_altstatus);
EXPORT_SYMBOL_GPL(ata_exec_command); EXPORT_SYMBOL_GPL(ata_exec_command);
...@@ -7655,6 +7659,7 @@ EXPORT_SYMBOL_GPL(ata_id_to_dma_mode); ...@@ -7655,6 +7659,7 @@ EXPORT_SYMBOL_GPL(ata_id_to_dma_mode);
EXPORT_SYMBOL_GPL(ata_scsi_simulate); EXPORT_SYMBOL_GPL(ata_scsi_simulate);
EXPORT_SYMBOL_GPL(ata_pio_need_iordy); EXPORT_SYMBOL_GPL(ata_pio_need_iordy);
EXPORT_SYMBOL_GPL(ata_timing_find_mode);
EXPORT_SYMBOL_GPL(ata_timing_compute); EXPORT_SYMBOL_GPL(ata_timing_compute);
EXPORT_SYMBOL_GPL(ata_timing_merge); EXPORT_SYMBOL_GPL(ata_timing_merge);
......
...@@ -851,6 +851,15 @@ extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf); ...@@ -851,6 +851,15 @@ extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf);
extern void ata_tf_to_fis(const struct ata_taskfile *tf, extern void ata_tf_to_fis(const struct ata_taskfile *tf,
u8 pmp, int is_cmd, u8 *fis); u8 pmp, int is_cmd, u8 *fis);
extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf);
extern unsigned int ata_pack_xfermask(unsigned int pio_mask,
unsigned int mwdma_mask, unsigned int udma_mask);
extern void ata_unpack_xfermask(unsigned int xfer_mask, unsigned int *pio_mask,
unsigned int *mwdma_mask, unsigned int *udma_mask);
extern u8 ata_xfer_mask2mode(unsigned int xfer_mask);
extern unsigned int ata_xfer_mode2mask(u8 xfer_mode);
extern int ata_xfer_mode2shift(unsigned int xfer_mode);
extern const char *ata_mode_string(unsigned int xfer_mask);
extern unsigned int ata_id_xfermask(const u16 *id);
extern void ata_noop_dev_select(struct ata_port *ap, unsigned int device); extern void ata_noop_dev_select(struct ata_port *ap, unsigned int device);
extern void ata_std_dev_select(struct ata_port *ap, unsigned int device); extern void ata_std_dev_select(struct ata_port *ap, unsigned int device);
extern u8 ata_check_status(struct ata_port *ap); extern u8 ata_check_status(struct ata_port *ap);
...@@ -920,6 +929,7 @@ extern int ata_cable_unknown(struct ata_port *ap); ...@@ -920,6 +929,7 @@ extern int ata_cable_unknown(struct ata_port *ap);
*/ */
extern unsigned int ata_pio_need_iordy(const struct ata_device *); extern unsigned int ata_pio_need_iordy(const struct ata_device *);
extern const struct ata_timing *ata_timing_find_mode(u8 xfer_mode);
extern int ata_timing_compute(struct ata_device *, unsigned short, extern int ata_timing_compute(struct ata_device *, unsigned short,
struct ata_timing *, int, int); struct ata_timing *, int, int);
extern void ata_timing_merge(const struct ata_timing *, extern void ata_timing_merge(const struct ata_timing *,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment