Commit 526942b8 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'ata-5.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata

Pull ATA updates from Damien Le Moal:

 - Some code refactoring for the pata_hpt37x and pata_hpt3x2n drivers,
   from Sergei.

 - Several patches to cleanup in libata-core, libata-scsi and libata-eh
   code: fixes arguments and variables types, change some functions
   declaration to static and fix for a typo in a comment. From Sergey
   and Xiang.

 - Fix a compilation warning in the pata_macio driver, from me.

 - A fix for the expected number of resources in the sata_mv driver fix,
   from Andrew.

* tag 'ata-5.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata:
  ata: sata_mv: Fixes expected number of resources now IRQs are gone
  ata: libata-scsi: fix result type of ata_ioc32()
  ata: pata_macio: Fix compilation warning
  ata: libata-eh: fix sloppy result type of ata_internal_cmd_timeout()
  ata: libata-core: fix sloppy parameter type in ata_exec_internal[_sg]()
  ata: make ata_port::fastdrain_cnt *unsigned int*
  ata: libata-eh: fix sloppy result type of ata_eh_nr_in_flight()
  ata: libata-core: make ata_exec_internal_sg() *static*
  ata: make transfer mode masks *unsigned int*
  ata: libata-core: get rid of *else* branches in ata_id_n_sectors()
  ata: libata-core: fix sloppy typing in ata_id_n_sectors()
  ata: pata_hpt3x2n: pass base DPLL frequency to hpt3x2n_pci_clock()
  ata: pata_hpt37x: merge hpt374_read_freq() to hpt37x_pci_clock()
  ata: pata_hpt37x: factor out hpt37x_pci_clock()
  ata: pata_hpt37x: move claculating PCI clock from hpt37x_clock_slot()
  ata: libata: Fix syntax errors in comments
parents a39b5dbd b3b2bec9
...@@ -480,10 +480,10 @@ static int ata_dev_get_GTF(struct ata_device *dev, struct ata_acpi_gtf **gtf) ...@@ -480,10 +480,10 @@ static int ata_dev_get_GTF(struct ata_device *dev, struct ata_acpi_gtf **gtf)
* RETURNS: * RETURNS:
* Determined xfermask. * Determined xfermask.
*/ */
unsigned long ata_acpi_gtm_xfermask(struct ata_device *dev, unsigned int ata_acpi_gtm_xfermask(struct ata_device *dev,
const struct ata_acpi_gtm *gtm) const struct ata_acpi_gtm *gtm)
{ {
unsigned long xfer_mask = 0; unsigned int xfer_mask = 0;
unsigned int type; unsigned int type;
int unit; int unit;
u8 mode; u8 mode;
...@@ -525,7 +525,7 @@ int ata_acpi_cbl_80wire(struct ata_port *ap, const struct ata_acpi_gtm *gtm) ...@@ -525,7 +525,7 @@ int ata_acpi_cbl_80wire(struct ata_port *ap, const struct ata_acpi_gtm *gtm)
struct ata_device *dev; struct ata_device *dev;
ata_for_each_dev(dev, &ap->link, ENABLED) { ata_for_each_dev(dev, &ap->link, ENABLED) {
unsigned long xfer_mask, udma_mask; unsigned int xfer_mask, udma_mask;
xfer_mask = ata_acpi_gtm_xfermask(dev, gtm); xfer_mask = ata_acpi_gtm_xfermask(dev, gtm);
ata_unpack_xfermask(xfer_mask, NULL, NULL, &udma_mask); ata_unpack_xfermask(xfer_mask, NULL, NULL, &udma_mask);
......
...@@ -93,7 +93,7 @@ struct ata_force_param { ...@@ -93,7 +93,7 @@ struct ata_force_param {
const char *name; const char *name;
u8 cbl; u8 cbl;
u8 spd_limit; u8 spd_limit;
unsigned long xfer_mask; unsigned int xfer_mask;
unsigned int horkage_on; unsigned int horkage_on;
unsigned int horkage_off; unsigned int horkage_off;
u16 lflags_on; u16 lflags_on;
...@@ -425,7 +425,7 @@ static void ata_force_xfermask(struct ata_device *dev) ...@@ -425,7 +425,7 @@ static void ata_force_xfermask(struct ata_device *dev)
for (i = ata_force_tbl_size - 1; i >= 0; i--) { for (i = ata_force_tbl_size - 1; i >= 0; i--) {
const struct ata_force_ent *fe = &ata_force_tbl[i]; const struct ata_force_ent *fe = &ata_force_tbl[i];
unsigned long pio_mask, mwdma_mask, udma_mask; unsigned int pio_mask, mwdma_mask, udma_mask;
if (fe->port != -1 && fe->port != dev->link->ap->print_id) if (fe->port != -1 && fe->port != dev->link->ap->print_id)
continue; continue;
...@@ -803,9 +803,9 @@ int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev, ...@@ -803,9 +803,9 @@ int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev,
* RETURNS: * RETURNS:
* Packed xfer_mask. * Packed xfer_mask.
*/ */
unsigned long ata_pack_xfermask(unsigned long pio_mask, unsigned int ata_pack_xfermask(unsigned int pio_mask,
unsigned long mwdma_mask, unsigned int mwdma_mask,
unsigned long 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) |
...@@ -823,8 +823,8 @@ EXPORT_SYMBOL_GPL(ata_pack_xfermask); ...@@ -823,8 +823,8 @@ EXPORT_SYMBOL_GPL(ata_pack_xfermask);
* Unpack @xfer_mask into @pio_mask, @mwdma_mask and @udma_mask. * Unpack @xfer_mask into @pio_mask, @mwdma_mask and @udma_mask.
* Any NULL destination masks will be ignored. * Any NULL destination masks will be ignored.
*/ */
void ata_unpack_xfermask(unsigned long xfer_mask, unsigned long *pio_mask, void ata_unpack_xfermask(unsigned int xfer_mask, unsigned int *pio_mask,
unsigned long *mwdma_mask, unsigned long *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;
...@@ -857,7 +857,7 @@ static const struct ata_xfer_ent { ...@@ -857,7 +857,7 @@ static const struct ata_xfer_ent {
* RETURNS: * RETURNS:
* Matching XFER_* value, 0xff if no match found. * Matching XFER_* value, 0xff if no match found.
*/ */
u8 ata_xfer_mask2mode(unsigned long 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;
...@@ -881,7 +881,7 @@ EXPORT_SYMBOL_GPL(ata_xfer_mask2mode); ...@@ -881,7 +881,7 @@ EXPORT_SYMBOL_GPL(ata_xfer_mask2mode);
* RETURNS: * RETURNS:
* Matching xfer_mask, 0 if no match found. * Matching xfer_mask, 0 if no match found.
*/ */
unsigned long 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;
...@@ -930,7 +930,7 @@ EXPORT_SYMBOL_GPL(ata_xfer_mode2shift); ...@@ -930,7 +930,7 @@ EXPORT_SYMBOL_GPL(ata_xfer_mode2shift);
* 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>".
*/ */
const char *ata_mode_string(unsigned long 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",
...@@ -1103,16 +1103,16 @@ static u64 ata_id_n_sectors(const u16 *id) ...@@ -1103,16 +1103,16 @@ static u64 ata_id_n_sectors(const u16 *id)
if (ata_id_has_lba(id)) { if (ata_id_has_lba(id)) {
if (ata_id_has_lba48(id)) if (ata_id_has_lba48(id))
return ata_id_u64(id, ATA_ID_LBA_CAPACITY_2); return ata_id_u64(id, ATA_ID_LBA_CAPACITY_2);
else
return ata_id_u32(id, ATA_ID_LBA_CAPACITY); return ata_id_u32(id, ATA_ID_LBA_CAPACITY);
} else {
if (ata_id_current_chs_valid(id))
return id[ATA_ID_CUR_CYLS] * id[ATA_ID_CUR_HEADS] *
id[ATA_ID_CUR_SECTORS];
else
return id[ATA_ID_CYLS] * id[ATA_ID_HEADS] *
id[ATA_ID_SECTORS];
} }
if (ata_id_current_chs_valid(id))
return (u32)id[ATA_ID_CUR_CYLS] * (u32)id[ATA_ID_CUR_HEADS] *
(u32)id[ATA_ID_CUR_SECTORS];
return (u32)id[ATA_ID_CYLS] * (u32)id[ATA_ID_HEADS] *
(u32)id[ATA_ID_SECTORS];
} }
u64 ata_tf_to_lba48(const struct ata_taskfile *tf) u64 ata_tf_to_lba48(const struct ata_taskfile *tf)
...@@ -1383,9 +1383,9 @@ static inline void ata_dump_id(struct ata_device *dev, const u16 *id) ...@@ -1383,9 +1383,9 @@ static inline void ata_dump_id(struct ata_device *dev, const u16 *id)
* RETURNS: * RETURNS:
* Computed xfermask * Computed xfermask
*/ */
unsigned long ata_id_xfermask(const u16 *id) unsigned int ata_id_xfermask(const u16 *id)
{ {
unsigned long pio_mask, mwdma_mask, udma_mask; unsigned int pio_mask, mwdma_mask, udma_mask;
/* Usual case. Word 53 indicates word 64 is valid */ /* Usual case. Word 53 indicates word 64 is valid */
if (id[ATA_ID_FIELD_VALID] & (1 << 1)) { if (id[ATA_ID_FIELD_VALID] & (1 << 1)) {
...@@ -1467,10 +1467,10 @@ static void ata_qc_complete_internal(struct ata_queued_cmd *qc) ...@@ -1467,10 +1467,10 @@ static void ata_qc_complete_internal(struct ata_queued_cmd *qc)
* RETURNS: * RETURNS:
* Zero on success, AC_ERR_* mask on failure * Zero on success, AC_ERR_* mask on failure
*/ */
unsigned ata_exec_internal_sg(struct ata_device *dev, static unsigned ata_exec_internal_sg(struct ata_device *dev,
struct ata_taskfile *tf, const u8 *cdb, struct ata_taskfile *tf, const u8 *cdb,
int dma_dir, struct scatterlist *sgl, int dma_dir, struct scatterlist *sgl,
unsigned int n_elem, unsigned long timeout) unsigned int n_elem, unsigned int timeout)
{ {
struct ata_link *link = dev->link; struct ata_link *link = dev->link;
struct ata_port *ap = link->ap; struct ata_port *ap = link->ap;
...@@ -1645,7 +1645,7 @@ unsigned ata_exec_internal_sg(struct ata_device *dev, ...@@ -1645,7 +1645,7 @@ unsigned ata_exec_internal_sg(struct ata_device *dev,
unsigned ata_exec_internal(struct ata_device *dev, unsigned ata_exec_internal(struct ata_device *dev,
struct ata_taskfile *tf, const u8 *cdb, struct ata_taskfile *tf, const u8 *cdb,
int dma_dir, void *buf, unsigned int buflen, int dma_dir, void *buf, unsigned int buflen,
unsigned long timeout) unsigned int timeout)
{ {
struct scatterlist *psg = NULL, sg; struct scatterlist *psg = NULL, sg;
unsigned int n_elem = 0; unsigned int n_elem = 0;
...@@ -2534,7 +2534,7 @@ int ata_dev_configure(struct ata_device *dev) ...@@ -2534,7 +2534,7 @@ int ata_dev_configure(struct ata_device *dev)
struct ata_port *ap = dev->link->ap; struct ata_port *ap = dev->link->ap;
bool print_info = ata_dev_print_info(dev); bool print_info = ata_dev_print_info(dev);
const u16 *id = dev->id; const u16 *id = dev->id;
unsigned long xfer_mask; unsigned int xfer_mask;
unsigned int err_mask; unsigned int err_mask;
char revbuf[7]; /* XYZ-99\0 */ char revbuf[7]; /* XYZ-99\0 */
char fwrevbuf[ATA_ID_FW_REV_LEN+1]; char fwrevbuf[ATA_ID_FW_REV_LEN+1];
...@@ -3202,8 +3202,8 @@ u8 ata_timing_cycle2mode(unsigned int xfer_shift, int cycle) ...@@ -3202,8 +3202,8 @@ u8 ata_timing_cycle2mode(unsigned int xfer_shift, int cycle)
int ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel) int ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel)
{ {
char buf[32]; char buf[32];
unsigned long orig_mask, xfer_mask; unsigned int orig_mask, xfer_mask;
unsigned long pio_mask, mwdma_mask, udma_mask; unsigned int pio_mask, mwdma_mask, udma_mask;
int quiet, highbit; int quiet, highbit;
quiet = !!(sel & ATA_DNXFER_QUIET); quiet = !!(sel & ATA_DNXFER_QUIET);
...@@ -3381,7 +3381,7 @@ int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev) ...@@ -3381,7 +3381,7 @@ int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev)
/* step 1: calculate xfer_mask */ /* step 1: calculate xfer_mask */
ata_for_each_dev(dev, link, ENABLED) { ata_for_each_dev(dev, link, ENABLED) {
unsigned long pio_mask, dma_mask; unsigned int pio_mask, dma_mask;
unsigned int mode_mask; unsigned int mode_mask;
mode_mask = ATA_DMA_MASK_ATA; mode_mask = ATA_DMA_MASK_ATA;
...@@ -4217,7 +4217,7 @@ static void ata_dev_xfermask(struct ata_device *dev) ...@@ -4217,7 +4217,7 @@ static void ata_dev_xfermask(struct ata_device *dev)
struct ata_link *link = dev->link; struct ata_link *link = dev->link;
struct ata_port *ap = link->ap; struct ata_port *ap = link->ap;
struct ata_host *host = ap->host; struct ata_host *host = ap->host;
unsigned long xfer_mask; unsigned int xfer_mask;
/* controller modes available */ /* controller modes available */
xfer_mask = ata_pack_xfermask(ap->pio_mask, xfer_mask = ata_pack_xfermask(ap->pio_mask,
...@@ -4342,7 +4342,7 @@ unsigned int ata_dev_set_feature(struct ata_device *dev, u8 enable, u8 feature) ...@@ -4342,7 +4342,7 @@ unsigned int ata_dev_set_feature(struct ata_device *dev, u8 enable, u8 feature)
{ {
struct ata_taskfile tf; struct ata_taskfile tf;
unsigned int err_mask; unsigned int err_mask;
unsigned long timeout = 0; unsigned int timeout = 0;
/* set up set-features taskfile */ /* set up set-features taskfile */
ata_dev_dbg(dev, "set features - SATA features\n"); ata_dev_dbg(dev, "set features - SATA features\n");
...@@ -5776,7 +5776,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht) ...@@ -5776,7 +5776,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
/* set cable, sata_spd_limit and report */ /* set cable, sata_spd_limit and report */
for (i = 0; i < host->n_ports; i++) { for (i = 0; i < host->n_ports; i++) {
struct ata_port *ap = host->ports[i]; struct ata_port *ap = host->ports[i];
unsigned long xfer_mask; unsigned int xfer_mask;
/* set SATA cable type if still unset */ /* set SATA cable type if still unset */
if (ap->cbl == ATA_CBL_NONE && (ap->flags & ATA_FLAG_SATA)) if (ap->cbl == ATA_CBL_NONE && (ap->flags & ATA_FLAG_SATA))
......
...@@ -86,36 +86,36 @@ static const unsigned long ata_eh_reset_timeouts[] = { ...@@ -86,36 +86,36 @@ static const unsigned long ata_eh_reset_timeouts[] = {
ULONG_MAX, /* > 1 min has elapsed, give up */ ULONG_MAX, /* > 1 min has elapsed, give up */
}; };
static const unsigned long ata_eh_identify_timeouts[] = { static const unsigned int ata_eh_identify_timeouts[] = {
5000, /* covers > 99% of successes and not too boring on failures */ 5000, /* covers > 99% of successes and not too boring on failures */
10000, /* combined time till here is enough even for media access */ 10000, /* combined time till here is enough even for media access */
30000, /* for true idiots */ 30000, /* for true idiots */
ULONG_MAX, UINT_MAX,
}; };
static const unsigned long ata_eh_revalidate_timeouts[] = { static const unsigned int ata_eh_revalidate_timeouts[] = {
15000, /* Some drives are slow to read log pages when waking-up */ 15000, /* Some drives are slow to read log pages when waking-up */
15000, /* combined time till here is enough even for media access */ 15000, /* combined time till here is enough even for media access */
ULONG_MAX, UINT_MAX,
}; };
static const unsigned long ata_eh_flush_timeouts[] = { static const unsigned int ata_eh_flush_timeouts[] = {
15000, /* be generous with flush */ 15000, /* be generous with flush */
15000, /* ditto */ 15000, /* ditto */
30000, /* and even more generous */ 30000, /* and even more generous */
ULONG_MAX, UINT_MAX,
}; };
static const unsigned long ata_eh_other_timeouts[] = { static const unsigned int ata_eh_other_timeouts[] = {
5000, /* same rationale as identify timeout */ 5000, /* same rationale as identify timeout */
10000, /* ditto */ 10000, /* ditto */
/* but no merciful 30sec for other commands, it just isn't worth it */ /* but no merciful 30sec for other commands, it just isn't worth it */
ULONG_MAX, UINT_MAX,
}; };
struct ata_eh_cmd_timeout_ent { struct ata_eh_cmd_timeout_ent {
const u8 *commands; const u8 *commands;
const unsigned long *timeouts; const unsigned int *timeouts;
}; };
/* The following table determines timeouts to use for EH internal /* The following table determines timeouts to use for EH internal
...@@ -326,7 +326,7 @@ static int ata_lookup_timeout_table(u8 cmd) ...@@ -326,7 +326,7 @@ static int ata_lookup_timeout_table(u8 cmd)
* RETURNS: * RETURNS:
* Determined timeout. * Determined timeout.
*/ */
unsigned long ata_internal_cmd_timeout(struct ata_device *dev, u8 cmd) unsigned int ata_internal_cmd_timeout(struct ata_device *dev, u8 cmd)
{ {
struct ata_eh_context *ehc = &dev->link->eh_context; struct ata_eh_context *ehc = &dev->link->eh_context;
int ent = ata_lookup_timeout_table(cmd); int ent = ata_lookup_timeout_table(cmd);
...@@ -361,7 +361,7 @@ void ata_internal_cmd_timed_out(struct ata_device *dev, u8 cmd) ...@@ -361,7 +361,7 @@ void ata_internal_cmd_timed_out(struct ata_device *dev, u8 cmd)
return; return;
idx = ehc->cmd_timeout_idx[dev->devno][ent]; idx = ehc->cmd_timeout_idx[dev->devno][ent];
if (ata_eh_cmd_timeout_table[ent].timeouts[idx + 1] != ULONG_MAX) if (ata_eh_cmd_timeout_table[ent].timeouts[idx + 1] != UINT_MAX)
ehc->cmd_timeout_idx[dev->devno][ent]++; ehc->cmd_timeout_idx[dev->devno][ent]++;
} }
...@@ -802,11 +802,11 @@ void ata_port_wait_eh(struct ata_port *ap) ...@@ -802,11 +802,11 @@ void ata_port_wait_eh(struct ata_port *ap)
} }
EXPORT_SYMBOL_GPL(ata_port_wait_eh); EXPORT_SYMBOL_GPL(ata_port_wait_eh);
static int ata_eh_nr_in_flight(struct ata_port *ap) static unsigned int ata_eh_nr_in_flight(struct ata_port *ap)
{ {
struct ata_queued_cmd *qc; struct ata_queued_cmd *qc;
unsigned int tag; unsigned int tag;
int nr = 0; unsigned int nr = 0;
/* count only non-internal commands */ /* count only non-internal commands */
ata_qc_for_each(ap, qc, tag) { ata_qc_for_each(ap, qc, tag) {
...@@ -821,7 +821,7 @@ void ata_eh_fastdrain_timerfn(struct timer_list *t) ...@@ -821,7 +821,7 @@ void ata_eh_fastdrain_timerfn(struct timer_list *t)
{ {
struct ata_port *ap = from_timer(ap, t, fastdrain_timer); struct ata_port *ap = from_timer(ap, t, fastdrain_timer);
unsigned long flags; unsigned long flags;
int cnt; unsigned int cnt;
spin_lock_irqsave(ap->lock, flags); spin_lock_irqsave(ap->lock, flags);
...@@ -870,7 +870,7 @@ void ata_eh_fastdrain_timerfn(struct timer_list *t) ...@@ -870,7 +870,7 @@ void ata_eh_fastdrain_timerfn(struct timer_list *t)
*/ */
static void ata_eh_set_pending(struct ata_port *ap, int fastdrain) static void ata_eh_set_pending(struct ata_port *ap, int fastdrain)
{ {
int cnt; unsigned int cnt;
/* already scheduled? */ /* already scheduled? */
if (ap->pflags & ATA_PFLAG_EH_PENDING) if (ap->pflags & ATA_PFLAG_EH_PENDING)
......
...@@ -539,13 +539,13 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg) ...@@ -539,13 +539,13 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg)
return rc; return rc;
} }
static int ata_ioc32(struct ata_port *ap) static bool ata_ioc32(struct ata_port *ap)
{ {
if (ap->flags & ATA_FLAG_PIO_DMA) if (ap->flags & ATA_FLAG_PIO_DMA)
return 1; return true;
if (ap->pflags & ATA_PFLAG_PIO32) if (ap->pflags & ATA_PFLAG_PIO32)
return 1; return true;
return 0; return false;
} }
/* /*
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* and various sysfs attributes to expose these topologies and management * and various sysfs attributes to expose these topologies and management
* interfaces to user-space. * interfaces to user-space.
* *
* There are 3 objects defined in in this class: * There are 3 objects defined in this class:
* - ata_port * - ata_port
* - ata_link * - ata_link
* - ata_device * - ata_device
......
...@@ -52,11 +52,7 @@ extern u64 ata_tf_read_block(const struct ata_taskfile *tf, ...@@ -52,11 +52,7 @@ extern u64 ata_tf_read_block(const struct ata_taskfile *tf,
extern unsigned ata_exec_internal(struct ata_device *dev, extern unsigned ata_exec_internal(struct ata_device *dev,
struct ata_taskfile *tf, const u8 *cdb, struct ata_taskfile *tf, const u8 *cdb,
int dma_dir, void *buf, unsigned int buflen, int dma_dir, void *buf, unsigned int buflen,
unsigned long timeout); unsigned int timeout);
extern unsigned ata_exec_internal_sg(struct ata_device *dev,
struct ata_taskfile *tf, const u8 *cdb,
int dma_dir, struct scatterlist *sg,
unsigned int n_elem, unsigned long timeout);
extern int ata_wait_ready(struct ata_link *link, unsigned long deadline, extern int ata_wait_ready(struct ata_link *link, unsigned long deadline,
int (*check_ready)(struct ata_link *link)); int (*check_ready)(struct ata_link *link));
extern int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, extern int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
...@@ -136,7 +132,7 @@ int ata_scsi_dev_config(struct scsi_device *sdev, struct ata_device *dev); ...@@ -136,7 +132,7 @@ int ata_scsi_dev_config(struct scsi_device *sdev, struct ata_device *dev);
int __ata_scsi_queuecmd(struct scsi_cmnd *scmd, struct ata_device *dev); int __ata_scsi_queuecmd(struct scsi_cmnd *scmd, struct ata_device *dev);
/* libata-eh.c */ /* libata-eh.c */
extern unsigned long ata_internal_cmd_timeout(struct ata_device *dev, u8 cmd); extern unsigned int ata_internal_cmd_timeout(struct ata_device *dev, u8 cmd);
extern void ata_internal_cmd_timed_out(struct ata_device *dev, u8 cmd); extern void ata_internal_cmd_timed_out(struct ata_device *dev, u8 cmd);
extern void ata_eh_acquire(struct ata_port *ap); extern void ata_eh_acquire(struct ata_port *ap);
extern void ata_eh_release(struct ata_port *ap); extern void ata_eh_release(struct ata_port *ap);
......
...@@ -97,7 +97,7 @@ static unsigned long pacpi_discover_modes(struct ata_port *ap, struct ata_device ...@@ -97,7 +97,7 @@ static unsigned long pacpi_discover_modes(struct ata_port *ap, struct ata_device
* this case the list of discovered valid modes obtained by ACPI probing * this case the list of discovered valid modes obtained by ACPI probing
*/ */
static unsigned long pacpi_mode_filter(struct ata_device *adev, unsigned long mask) static unsigned int pacpi_mode_filter(struct ata_device *adev, unsigned int mask)
{ {
struct pata_acpi *acpi = adev->link->ap->private_data; struct pata_acpi *acpi = adev->link->ap->private_data;
return mask & acpi->mask[adev->devno]; return mask & acpi->mask[adev->devno];
......
...@@ -115,7 +115,7 @@ static int ali_c2_cable_detect(struct ata_port *ap) ...@@ -115,7 +115,7 @@ static int ali_c2_cable_detect(struct ata_port *ap)
* fix that later on. Also ensure we do not do UDMA on WDC drives * fix that later on. Also ensure we do not do UDMA on WDC drives
*/ */
static unsigned long ali_20_filter(struct ata_device *adev, unsigned long mask) static unsigned int ali_20_filter(struct ata_device *adev, unsigned int mask)
{ {
char model_num[ATA_ID_PROD_LEN + 1]; char model_num[ATA_ID_PROD_LEN + 1];
/* No DMA on anything but a disk for now */ /* No DMA on anything but a disk for now */
......
...@@ -264,8 +264,8 @@ static void amd133_set_dmamode(struct ata_port *ap, struct ata_device *adev) ...@@ -264,8 +264,8 @@ static void amd133_set_dmamode(struct ata_port *ap, struct ata_device *adev)
* cached during driver attach and are consulted to select transfer * cached during driver attach and are consulted to select transfer
* mode. * mode.
*/ */
static unsigned long nv_mode_filter(struct ata_device *dev, static unsigned int nv_mode_filter(struct ata_device *dev,
unsigned long xfer_mask) unsigned int xfer_mask)
{ {
static const unsigned int udma_mask_map[] = static const unsigned int udma_mask_map[] =
{ ATA_UDMA2, ATA_UDMA1, ATA_UDMA0, 0, { ATA_UDMA2, ATA_UDMA1, ATA_UDMA0, 0,
...@@ -274,7 +274,7 @@ static unsigned long nv_mode_filter(struct ata_device *dev, ...@@ -274,7 +274,7 @@ static unsigned long nv_mode_filter(struct ata_device *dev,
char acpi_str[32] = ""; char acpi_str[32] = "";
u32 saved_udma, udma; u32 saved_udma, udma;
const struct ata_acpi_gtm *gtm; const struct ata_acpi_gtm *gtm;
unsigned long bios_limit = 0, acpi_limit = 0, limit; unsigned int bios_limit = 0, acpi_limit = 0, limit;
/* find out what BIOS configured */ /* find out what BIOS configured */
udma = saved_udma = (unsigned long)ap->host->private_data; udma = saved_udma = (unsigned long)ap->host->private_data;
...@@ -310,8 +310,8 @@ static unsigned long nv_mode_filter(struct ata_device *dev, ...@@ -310,8 +310,8 @@ static unsigned long nv_mode_filter(struct ata_device *dev,
cable detection result */ cable detection result */
limit |= ata_pack_xfermask(ATA_PIO4, ATA_MWDMA2, ATA_UDMA2); limit |= ata_pack_xfermask(ATA_PIO4, ATA_MWDMA2, ATA_UDMA2);
ata_port_dbg(ap, "nv_mode_filter: 0x%lx&0x%lx->0x%lx, " ata_port_dbg(ap,
"BIOS=0x%lx (0x%x) ACPI=0x%lx%s\n", "nv_mode_filter: 0x%x&0x%x->0x%x, BIOS=0x%x (0x%x) ACPI=0x%x%s\n",
xfer_mask, limit, xfer_mask & limit, bios_limit, xfer_mask, limit, xfer_mask & limit, bios_limit,
saved_udma, acpi_limit, acpi_str); saved_udma, acpi_limit, acpi_str);
......
...@@ -194,7 +194,7 @@ static int hpt_dma_blacklisted(const struct ata_device *dev, char *modestr, ...@@ -194,7 +194,7 @@ static int hpt_dma_blacklisted(const struct ata_device *dev, char *modestr,
* Block UDMA on devices that cause trouble with this controller. * Block UDMA on devices that cause trouble with this controller.
*/ */
static unsigned long hpt366_filter(struct ata_device *adev, unsigned long mask) static unsigned int hpt366_filter(struct ata_device *adev, unsigned int mask)
{ {
if (adev->class == ATA_DEV_ATA) { if (adev->class == ATA_DEV_ATA) {
if (hpt_dma_blacklisted(adev, "UDMA", bad_ata33)) if (hpt_dma_blacklisted(adev, "UDMA", bad_ata33))
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "pata_hpt37x" #define DRV_NAME "pata_hpt37x"
#define DRV_VERSION "0.6.25" #define DRV_VERSION "0.6.30"
struct hpt_clock { struct hpt_clock {
u8 xfer_speed; u8 xfer_speed;
...@@ -278,7 +278,7 @@ static const char * const bad_ata100_5[] = { ...@@ -278,7 +278,7 @@ static const char * const bad_ata100_5[] = {
* Block UDMA on devices that cause trouble with this controller. * Block UDMA on devices that cause trouble with this controller.
*/ */
static unsigned long hpt370_filter(struct ata_device *adev, unsigned long mask) static unsigned int hpt370_filter(struct ata_device *adev, unsigned int mask)
{ {
if (adev->class == ATA_DEV_ATA) { if (adev->class == ATA_DEV_ATA) {
if (hpt_dma_blacklisted(adev, "UDMA", bad_ata33)) if (hpt_dma_blacklisted(adev, "UDMA", bad_ata33))
...@@ -297,7 +297,7 @@ static unsigned long hpt370_filter(struct ata_device *adev, unsigned long mask) ...@@ -297,7 +297,7 @@ static unsigned long hpt370_filter(struct ata_device *adev, unsigned long mask)
* Block UDMA on devices that cause trouble with this controller. * Block UDMA on devices that cause trouble with this controller.
*/ */
static unsigned long hpt370a_filter(struct ata_device *adev, unsigned long mask) static unsigned int hpt370a_filter(struct ata_device *adev, unsigned int mask)
{ {
if (adev->class == ATA_DEV_ATA) { if (adev->class == ATA_DEV_ATA) {
if (hpt_dma_blacklisted(adev, "UDMA100", bad_ata100_5)) if (hpt_dma_blacklisted(adev, "UDMA100", bad_ata100_5))
...@@ -314,7 +314,7 @@ static unsigned long hpt370a_filter(struct ata_device *adev, unsigned long mask) ...@@ -314,7 +314,7 @@ static unsigned long hpt370a_filter(struct ata_device *adev, unsigned long mask)
* The Marvell bridge chips used on the HighPoint SATA cards do not seem * The Marvell bridge chips used on the HighPoint SATA cards do not seem
* to support the UltraDMA modes 1, 2, and 3 as well as any MWDMA modes... * to support the UltraDMA modes 1, 2, and 3 as well as any MWDMA modes...
*/ */
static unsigned long hpt372_filter(struct ata_device *adev, unsigned long mask) static unsigned int hpt372_filter(struct ata_device *adev, unsigned int mask)
{ {
if (ata_id_is_sata(adev->id)) if (ata_id_is_sata(adev->id))
mask &= ~((0xE << ATA_SHIFT_UDMA) | ATA_MASK_MWDMA); mask &= ~((0xE << ATA_SHIFT_UDMA) | ATA_MASK_MWDMA);
...@@ -592,21 +592,19 @@ static struct ata_port_operations hpt374_fn1_port_ops = { ...@@ -592,21 +592,19 @@ static struct ata_port_operations hpt374_fn1_port_ops = {
/** /**
* hpt37x_clock_slot - Turn timing to PC clock entry * hpt37x_clock_slot - Turn timing to PC clock entry
* @freq: Reported frequency timing * @freq: Reported frequency in MHz
* @base: Base timing
* *
* Turn the timing data intoa clock slot (0 for 33, 1 for 40, 2 for 50 * Turn the timing data into a clock slot (0 for 33, 1 for 40, 2 for 50
* and 3 for 66Mhz) * and 3 for 66Mhz)
*/ */
static int hpt37x_clock_slot(unsigned int freq, unsigned int base) static int hpt37x_clock_slot(unsigned int freq)
{ {
unsigned int f = (base * freq) / 192; /* Mhz */ if (freq < 40)
if (f < 40)
return 0; /* 33Mhz slot */ return 0; /* 33Mhz slot */
if (f < 45) if (freq < 45)
return 1; /* 40Mhz slot */ return 1; /* 40Mhz slot */
if (f < 55) if (freq < 55)
return 2; /* 50Mhz slot */ return 2; /* 50Mhz slot */
return 3; /* 60Mhz slot */ return 3; /* 60Mhz slot */
} }
...@@ -646,24 +644,57 @@ static int hpt37x_calibrate_dpll(struct pci_dev *dev) ...@@ -646,24 +644,57 @@ static int hpt37x_calibrate_dpll(struct pci_dev *dev)
return 0; return 0;
} }
static u32 hpt374_read_freq(struct pci_dev *pdev) static int hpt37x_pci_clock(struct pci_dev *pdev, unsigned int base)
{ {
u32 freq; unsigned int freq;
unsigned long io_base = pci_resource_start(pdev, 4); u32 fcnt;
if (PCI_FUNC(pdev->devfn) & 1) { /*
struct pci_dev *pdev_0; * Some devices do not let this value be accessed via PCI space
* according to the old driver. In addition we must use the value
* from FN 0 on the HPT374.
*/
if (pdev->device == PCI_DEVICE_ID_TTI_HPT374 &&
(PCI_FUNC(pdev->devfn) & 1)) {
struct pci_dev *pdev_fn0;
pdev_0 = pci_get_slot(pdev->bus, pdev->devfn - 1); pdev_fn0 = pci_get_slot(pdev->bus, pdev->devfn - 1);
/* Someone hot plugged the controller on us ? */ /* Someone hot plugged the controller on us? */
if (pdev_0 == NULL) if (!pdev_fn0)
return 0; return 0;
io_base = pci_resource_start(pdev_0, 4); fcnt = inl(pci_resource_start(pdev_fn0, 4) + 0x90);
freq = inl(io_base + 0x90); pci_dev_put(pdev_fn0);
pci_dev_put(pdev_0); } else {
} else fcnt = inl(pci_resource_start(pdev, 4) + 0x90);
freq = inl(io_base + 0x90); }
return freq;
if ((fcnt >> 12) != 0xABCDE) {
u32 total = 0;
int i;
u16 sr;
dev_warn(&pdev->dev, "BIOS clock data not set\n");
/* This is the process the HPT371 BIOS is reported to use */
for (i = 0; i < 128; i++) {
pci_read_config_word(pdev, 0x78, &sr);
total += sr & 0x1FF;
udelay(15);
}
fcnt = total / 128;
}
fcnt &= 0x1FF;
freq = (fcnt * base) / 192; /* in MHz */
/* Clamp to bands */
if (freq < 40)
return 33;
if (freq < 45)
return 40;
if (freq < 55)
return 50;
return 66;
} }
/** /**
...@@ -770,7 +801,7 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -770,7 +801,7 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
u8 rev = dev->revision; u8 rev = dev->revision;
u8 irqmask; u8 irqmask;
u8 mcr1; u8 mcr1;
u32 freq; unsigned int freq; /* MHz */
int prefer_dpll = 1; int prefer_dpll = 1;
unsigned long iobase = pci_resource_start(dev, 4); unsigned long iobase = pci_resource_start(dev, 4);
...@@ -896,42 +927,16 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -896,42 +927,16 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
if (chip_table == &hpt372a) if (chip_table == &hpt372a)
outb(0x0e, iobase + 0x9c); outb(0x0e, iobase + 0x9c);
/* freq = hpt37x_pci_clock(dev, chip_table->base);
* Some devices do not let this value be accessed via PCI space if (!freq)
* according to the old driver. In addition we must use the value
* from FN 0 on the HPT374.
*/
if (chip_table == &hpt374) {
freq = hpt374_read_freq(dev);
if (freq == 0)
return -ENODEV; return -ENODEV;
} else
freq = inl(iobase + 0x90);
if ((freq >> 12) != 0xABCDE) {
int i;
u16 sr;
u32 total = 0;
dev_warn(&dev->dev, "BIOS has not set timing clocks\n");
/* This is the process the HPT371 BIOS is reported to use */
for (i = 0; i < 128; i++) {
pci_read_config_word(dev, 0x78, &sr);
total += sr & 0x1FF;
udelay(15);
}
freq = total / 128;
}
freq &= 0x1FF;
/* /*
* Turn the frequency check into a band and then find a timing * Turn the frequency check into a band and then find a timing
* table to match it. * table to match it.
*/ */
clock_slot = hpt37x_clock_slot(freq, chip_table->base); clock_slot = hpt37x_clock_slot(freq);
if (chip_table->clocks[clock_slot] == NULL || prefer_dpll) { if (chip_table->clocks[clock_slot] == NULL || prefer_dpll) {
/* /*
* We need to try PLL mode instead * We need to try PLL mode instead
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "pata_hpt3x2n" #define DRV_NAME "pata_hpt3x2n"
#define DRV_VERSION "0.3.18" #define DRV_VERSION "0.3.19"
enum { enum {
PCI66 = (1 << 1), PCI66 = (1 << 1),
...@@ -113,7 +113,7 @@ static u32 hpt3x2n_find_mode(struct ata_port *ap, int speed) ...@@ -113,7 +113,7 @@ static u32 hpt3x2n_find_mode(struct ata_port *ap, int speed)
* The Marvell bridge chips used on the HighPoint SATA cards do not seem * The Marvell bridge chips used on the HighPoint SATA cards do not seem
* to support the UltraDMA modes 1, 2, and 3 as well as any MWDMA modes... * to support the UltraDMA modes 1, 2, and 3 as well as any MWDMA modes...
*/ */
static unsigned long hpt372n_filter(struct ata_device *adev, unsigned long mask) static unsigned int hpt372n_filter(struct ata_device *adev, unsigned int mask)
{ {
if (ata_id_is_sata(adev->id)) if (ata_id_is_sata(adev->id))
mask &= ~((0xE << ATA_SHIFT_UDMA) | ATA_MASK_MWDMA); mask &= ~((0xE << ATA_SHIFT_UDMA) | ATA_MASK_MWDMA);
...@@ -403,17 +403,20 @@ static int hpt3xn_calibrate_dpll(struct pci_dev *dev) ...@@ -403,17 +403,20 @@ static int hpt3xn_calibrate_dpll(struct pci_dev *dev)
return 0; return 0;
} }
static int hpt3x2n_pci_clock(struct pci_dev *pdev) static int hpt3x2n_pci_clock(struct pci_dev *pdev, unsigned int base)
{ {
unsigned long freq; unsigned int freq;
u32 fcnt; u32 fcnt;
unsigned long iobase = pci_resource_start(pdev, 4);
fcnt = inl(iobase + 0x90); /* Not PCI readable for some chips */ /*
* Some devices do not let this value be accessed via PCI space
* according to the old driver.
*/
fcnt = inl(pci_resource_start(pdev, 4) + 0x90);
if ((fcnt >> 12) != 0xABCDE) { if ((fcnt >> 12) != 0xABCDE) {
u32 total = 0;
int i; int i;
u16 sr; u16 sr;
u32 total = 0;
dev_warn(&pdev->dev, "BIOS clock data not set\n"); dev_warn(&pdev->dev, "BIOS clock data not set\n");
...@@ -427,7 +430,7 @@ static int hpt3x2n_pci_clock(struct pci_dev *pdev) ...@@ -427,7 +430,7 @@ static int hpt3x2n_pci_clock(struct pci_dev *pdev)
} }
fcnt &= 0x1FF; fcnt &= 0x1FF;
freq = (fcnt * 77) / 192; freq = (fcnt * base) / 192; /* in MHz */
/* Clamp to bands */ /* Clamp to bands */
if (freq < 40) if (freq < 40)
...@@ -559,7 +562,7 @@ static int hpt3x2n_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -559,7 +562,7 @@ static int hpt3x2n_init_one(struct pci_dev *dev, const struct pci_device_id *id)
* 50 for UDMA100. Right now we always use 66 * 50 for UDMA100. Right now we always use 66
*/ */
pci_mhz = hpt3x2n_pci_clock(dev); pci_mhz = hpt3x2n_pci_clock(dev, 77);
f_low = (pci_mhz * 48) / 66; /* PCI Mhz for 66Mhz DPLL */ f_low = (pci_mhz * 48) / 66; /* PCI Mhz for 66Mhz DPLL */
f_high = f_low + 2; /* Tolerance */ f_high = f_low + 2; /* Tolerance */
......
...@@ -1028,7 +1028,7 @@ static void pmac_macio_calc_timing_masks(struct pata_macio_priv *priv, ...@@ -1028,7 +1028,7 @@ static void pmac_macio_calc_timing_masks(struct pata_macio_priv *priv,
} }
i++; i++;
} }
dev_dbg(priv->dev, "Supported masks: PIO=%lx, MWDMA=%lx, UDMA=%lx\n", dev_dbg(priv->dev, "Supported masks: PIO=%x, MWDMA=%x, UDMA=%x\n",
pinfo->pio_mask, pinfo->mwdma_mask, pinfo->udma_mask); pinfo->pio_mask, pinfo->mwdma_mask, pinfo->udma_mask);
} }
......
...@@ -57,7 +57,7 @@ static int pdc2027x_prereset(struct ata_link *link, unsigned long deadline); ...@@ -57,7 +57,7 @@ static int pdc2027x_prereset(struct ata_link *link, unsigned long deadline);
static void pdc2027x_set_piomode(struct ata_port *ap, struct ata_device *adev); static void pdc2027x_set_piomode(struct ata_port *ap, struct ata_device *adev);
static void pdc2027x_set_dmamode(struct ata_port *ap, struct ata_device *adev); static void pdc2027x_set_dmamode(struct ata_port *ap, struct ata_device *adev);
static int pdc2027x_check_atapi_dma(struct ata_queued_cmd *qc); static int pdc2027x_check_atapi_dma(struct ata_queued_cmd *qc);
static unsigned long pdc2027x_mode_filter(struct ata_device *adev, unsigned long mask); static unsigned int pdc2027x_mode_filter(struct ata_device *adev, unsigned int mask);
static int pdc2027x_cable_detect(struct ata_port *ap); static int pdc2027x_cable_detect(struct ata_port *ap);
static int pdc2027x_set_mode(struct ata_link *link, struct ata_device **r_failed); static int pdc2027x_set_mode(struct ata_link *link, struct ata_device **r_failed);
...@@ -251,7 +251,7 @@ static int pdc2027x_prereset(struct ata_link *link, unsigned long deadline) ...@@ -251,7 +251,7 @@ static int pdc2027x_prereset(struct ata_link *link, unsigned long deadline)
* Block UDMA on devices that cause trouble with this controller. * Block UDMA on devices that cause trouble with this controller.
*/ */
static unsigned long pdc2027x_mode_filter(struct ata_device *adev, unsigned long mask) static unsigned int pdc2027x_mode_filter(struct ata_device *adev, unsigned int mask)
{ {
unsigned char model_num[ATA_ID_PROD_LEN + 1]; unsigned char model_num[ATA_ID_PROD_LEN + 1];
struct ata_device *pair = ata_dev_pair(adev); struct ata_device *pair = ata_dev_pair(adev);
......
...@@ -150,7 +150,7 @@ static u8 serverworks_is_csb(struct pci_dev *pdev) ...@@ -150,7 +150,7 @@ static u8 serverworks_is_csb(struct pci_dev *pdev)
* bug we hit. * bug we hit.
*/ */
static unsigned long serverworks_osb4_filter(struct ata_device *adev, unsigned long mask) static unsigned int serverworks_osb4_filter(struct ata_device *adev, unsigned int mask)
{ {
if (adev->class == ATA_DEV_ATA) if (adev->class == ATA_DEV_ATA)
mask &= ~ATA_MASK_UDMA; mask &= ~ATA_MASK_UDMA;
...@@ -166,7 +166,7 @@ static unsigned long serverworks_osb4_filter(struct ata_device *adev, unsigned l ...@@ -166,7 +166,7 @@ static unsigned long serverworks_osb4_filter(struct ata_device *adev, unsigned l
* Check the blacklist and disable UDMA5 if matched * Check the blacklist and disable UDMA5 if matched
*/ */
static unsigned long serverworks_csb_filter(struct ata_device *adev, unsigned long mask) static unsigned int serverworks_csb_filter(struct ata_device *adev, unsigned int mask)
{ {
const char *p; const char *p;
char model_num[ATA_ID_PROD_LEN + 1]; char model_num[ATA_ID_PROD_LEN + 1];
......
...@@ -525,7 +525,7 @@ static void sis_133_set_dmamode (struct ata_port *ap, struct ata_device *adev) ...@@ -525,7 +525,7 @@ static void sis_133_set_dmamode (struct ata_port *ap, struct ata_device *adev)
* Block UDMA6 on devices that do not support it. * Block UDMA6 on devices that do not support it.
*/ */
static unsigned long sis_133_mode_filter(struct ata_device *adev, unsigned long mask) static unsigned int sis_133_mode_filter(struct ata_device *adev, unsigned int mask)
{ {
struct ata_port *ap = adev->link->ap; struct ata_port *ap = adev->link->ap;
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
......
...@@ -352,7 +352,7 @@ static void via_set_dmamode(struct ata_port *ap, struct ata_device *adev) ...@@ -352,7 +352,7 @@ static void via_set_dmamode(struct ata_port *ap, struct ata_device *adev)
* one breed of Transcend SSD. Return the updated mask. * one breed of Transcend SSD. Return the updated mask.
*/ */
static unsigned long via_mode_filter(struct ata_device *dev, unsigned long mask) static unsigned int via_mode_filter(struct ata_device *dev, unsigned int mask)
{ {
struct ata_host *host = dev->link->ap->host; struct ata_host *host = dev->link->ap->host;
const struct via_isa_bridge *config = host->private_data; const struct via_isa_bridge *config = host->private_data;
......
...@@ -4057,7 +4057,7 @@ static int mv_platform_probe(struct platform_device *pdev) ...@@ -4057,7 +4057,7 @@ static int mv_platform_probe(struct platform_device *pdev)
/* /*
* Simple resource validation .. * Simple resource validation ..
*/ */
if (unlikely(pdev->num_resources != 2)) { if (unlikely(pdev->num_resources != 1)) {
dev_err(&pdev->dev, "invalid number of resources\n"); dev_err(&pdev->dev, "invalid number of resources\n");
return -EINVAL; return -EINVAL;
} }
......
...@@ -275,7 +275,7 @@ enum { ...@@ -275,7 +275,7 @@ enum {
PORT_DISABLED = 2, PORT_DISABLED = 2,
/* encoding various smaller bitmaps into a single /* encoding various smaller bitmaps into a single
* unsigned long bitmap * unsigned int bitmap
*/ */
ATA_NR_PIO_MODES = 7, ATA_NR_PIO_MODES = 7,
ATA_NR_MWDMA_MODES = 5, ATA_NR_MWDMA_MODES = 5,
...@@ -426,12 +426,9 @@ enum { ...@@ -426,12 +426,9 @@ enum {
}; };
enum ata_xfer_mask { enum ata_xfer_mask {
ATA_MASK_PIO = ((1LU << ATA_NR_PIO_MODES) - 1) ATA_MASK_PIO = ((1U << ATA_NR_PIO_MODES) - 1) << ATA_SHIFT_PIO,
<< ATA_SHIFT_PIO, ATA_MASK_MWDMA = ((1U << ATA_NR_MWDMA_MODES) - 1) << ATA_SHIFT_MWDMA,
ATA_MASK_MWDMA = ((1LU << ATA_NR_MWDMA_MODES) - 1) ATA_MASK_UDMA = ((1U << ATA_NR_UDMA_MODES) - 1) << ATA_SHIFT_UDMA,
<< ATA_SHIFT_MWDMA,
ATA_MASK_UDMA = ((1LU << ATA_NR_UDMA_MODES) - 1)
<< ATA_SHIFT_UDMA,
}; };
enum hsm_task_states { enum hsm_task_states {
...@@ -680,9 +677,9 @@ struct ata_device { ...@@ -680,9 +677,9 @@ struct ata_device {
unsigned int cdb_len; unsigned int cdb_len;
/* per-dev xfer mask */ /* per-dev xfer mask */
unsigned long pio_mask; unsigned int pio_mask;
unsigned long mwdma_mask; unsigned int mwdma_mask;
unsigned long udma_mask; unsigned int udma_mask;
/* for CHS addressing */ /* for CHS addressing */
u16 cylinders; /* Number of cylinders */ u16 cylinders; /* Number of cylinders */
...@@ -850,7 +847,7 @@ struct ata_port { ...@@ -850,7 +847,7 @@ struct ata_port {
enum ata_lpm_policy target_lpm_policy; enum ata_lpm_policy target_lpm_policy;
struct timer_list fastdrain_timer; struct timer_list fastdrain_timer;
unsigned long fastdrain_cnt; unsigned int fastdrain_cnt;
async_cookie_t cookie; async_cookie_t cookie;
...@@ -885,7 +882,7 @@ struct ata_port_operations { ...@@ -885,7 +882,7 @@ struct ata_port_operations {
* Configuration and exception handling * Configuration and exception handling
*/ */
int (*cable_detect)(struct ata_port *ap); int (*cable_detect)(struct ata_port *ap);
unsigned long (*mode_filter)(struct ata_device *dev, unsigned long xfer_mask); unsigned int (*mode_filter)(struct ata_device *dev, unsigned int xfer_mask);
void (*set_piomode)(struct ata_port *ap, struct ata_device *dev); void (*set_piomode)(struct ata_port *ap, struct ata_device *dev);
void (*set_dmamode)(struct ata_port *ap, struct ata_device *dev); void (*set_dmamode)(struct ata_port *ap, struct ata_device *dev);
int (*set_mode)(struct ata_link *link, struct ata_device **r_failed_dev); int (*set_mode)(struct ata_link *link, struct ata_device **r_failed_dev);
...@@ -981,9 +978,9 @@ struct ata_port_operations { ...@@ -981,9 +978,9 @@ struct ata_port_operations {
struct ata_port_info { struct ata_port_info {
unsigned long flags; unsigned long flags;
unsigned long link_flags; unsigned long link_flags;
unsigned long pio_mask; unsigned int pio_mask;
unsigned long mwdma_mask; unsigned int mwdma_mask;
unsigned long udma_mask; unsigned int udma_mask;
struct ata_port_operations *port_ops; struct ata_port_operations *port_ops;
void *private_data; void *private_data;
}; };
...@@ -1102,16 +1099,18 @@ extern void ata_msleep(struct ata_port *ap, unsigned int msecs); ...@@ -1102,16 +1099,18 @@ extern void ata_msleep(struct ata_port *ap, unsigned int msecs);
extern u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask, extern u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask,
u32 val, unsigned long interval, unsigned long timeout); u32 val, unsigned long interval, unsigned long timeout);
extern int atapi_cmd_type(u8 opcode); extern int atapi_cmd_type(u8 opcode);
extern unsigned long ata_pack_xfermask(unsigned long pio_mask, extern unsigned int ata_pack_xfermask(unsigned int pio_mask,
unsigned long mwdma_mask, unsigned long udma_mask); unsigned int mwdma_mask,
extern void ata_unpack_xfermask(unsigned long xfer_mask, unsigned int udma_mask);
unsigned long *pio_mask, unsigned long *mwdma_mask, extern void ata_unpack_xfermask(unsigned int xfer_mask,
unsigned long *udma_mask); unsigned int *pio_mask,
extern u8 ata_xfer_mask2mode(unsigned long xfer_mask); unsigned int *mwdma_mask,
extern unsigned long ata_xfer_mode2mask(u8 xfer_mode); 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(u8 xfer_mode); extern int ata_xfer_mode2shift(u8 xfer_mode);
extern const char *ata_mode_string(unsigned long xfer_mask); extern const char *ata_mode_string(unsigned int xfer_mask);
extern unsigned long ata_id_xfermask(const u16 *id); extern unsigned int ata_id_xfermask(const u16 *id);
extern int ata_std_qc_defer(struct ata_queued_cmd *qc); extern int ata_std_qc_defer(struct ata_queued_cmd *qc);
extern enum ata_completion_errors ata_noop_qc_prep(struct ata_queued_cmd *qc); extern enum ata_completion_errors ata_noop_qc_prep(struct ata_queued_cmd *qc);
extern void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg, extern void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
...@@ -1283,7 +1282,7 @@ static inline const struct ata_acpi_gtm *ata_acpi_init_gtm(struct ata_port *ap) ...@@ -1283,7 +1282,7 @@ static inline const struct ata_acpi_gtm *ata_acpi_init_gtm(struct ata_port *ap)
} }
int ata_acpi_stm(struct ata_port *ap, const struct ata_acpi_gtm *stm); int ata_acpi_stm(struct ata_port *ap, const struct ata_acpi_gtm *stm);
int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *stm); int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *stm);
unsigned long ata_acpi_gtm_xfermask(struct ata_device *dev, unsigned int ata_acpi_gtm_xfermask(struct ata_device *dev,
const struct ata_acpi_gtm *gtm); const struct ata_acpi_gtm *gtm);
int ata_acpi_cbl_80wire(struct ata_port *ap, const struct ata_acpi_gtm *gtm); int ata_acpi_cbl_80wire(struct ata_port *ap, const struct ata_acpi_gtm *gtm);
#else #else
......
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