Commit d14d41cc authored by Sergey Shtylyov's avatar Sergey Shtylyov Committed by Damien Le Moal

ata: fix debounce timings type

sata_deb_timing_{hotplug|long|normal}[] store 'unsigned long' debounce
timeouts in ms, while sata_link_debounce() eventually uses those timeouts
by calling ata_{deadline|msleep}( which take just 'unsigned int'.  Change
the debounce timeout table element's type to 'unsigned int' -- all these
timeouts happily fit into 'unsigned int'...
Signed-off-by: default avatarSergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: default avatarDamien Le Moal <dlemoal@kernel.org>
parent ca02f225
...@@ -807,7 +807,7 @@ static int ahci_p5wdh_hardreset(struct ata_link *link, unsigned int *class, ...@@ -807,7 +807,7 @@ static int ahci_p5wdh_hardreset(struct ata_link *link, unsigned int *class,
static int ahci_avn_hardreset(struct ata_link *link, unsigned int *class, static int ahci_avn_hardreset(struct ata_link *link, unsigned int *class,
unsigned long deadline) unsigned long deadline)
{ {
const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); const unsigned int *timing = sata_ehc_deb_timing(&link->eh_context);
struct ata_port *ap = link->ap; struct ata_port *ap = link->ap;
struct ahci_port_priv *pp = ap->private_data; struct ahci_port_priv *pp = ap->private_data;
struct ahci_host_priv *hpriv = ap->host->private_data; struct ahci_host_priv *hpriv = ap->host->private_data;
......
...@@ -88,7 +88,7 @@ MODULE_DEVICE_TABLE(acpi, ahci_qoriq_acpi_match); ...@@ -88,7 +88,7 @@ MODULE_DEVICE_TABLE(acpi, ahci_qoriq_acpi_match);
static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class, static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
unsigned long deadline) unsigned long deadline)
{ {
const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); const unsigned int *timing = sata_ehc_deb_timing(&link->eh_context);
void __iomem *port_mmio = ahci_port_base(link->ap); void __iomem *port_mmio = ahci_port_base(link->ap);
u32 px_cmd, px_is, px_val; u32 px_cmd, px_is, px_val;
struct ata_port *ap = link->ap; struct ata_port *ap = link->ap;
......
...@@ -350,7 +350,7 @@ static void xgene_ahci_set_phy_cfg(struct xgene_ahci_context *ctx, int channel) ...@@ -350,7 +350,7 @@ static void xgene_ahci_set_phy_cfg(struct xgene_ahci_context *ctx, int channel)
static int xgene_ahci_do_hardreset(struct ata_link *link, static int xgene_ahci_do_hardreset(struct ata_link *link,
unsigned long deadline, bool *online) unsigned long deadline, bool *online)
{ {
const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); const unsigned int *timing = sata_ehc_deb_timing(&link->eh_context);
struct ata_port *ap = link->ap; struct ata_port *ap = link->ap;
struct ahci_host_priv *hpriv = ap->host->private_data; struct ahci_host_priv *hpriv = ap->host->private_data;
struct xgene_ahci_context *ctx = hpriv->plat_data; struct xgene_ahci_context *ctx = hpriv->plat_data;
......
...@@ -1587,7 +1587,7 @@ static int ahci_pmp_retry_softreset(struct ata_link *link, unsigned int *class, ...@@ -1587,7 +1587,7 @@ static int ahci_pmp_retry_softreset(struct ata_link *link, unsigned int *class,
int ahci_do_hardreset(struct ata_link *link, unsigned int *class, int ahci_do_hardreset(struct ata_link *link, unsigned int *class,
unsigned long deadline, bool *online) unsigned long deadline, bool *online)
{ {
const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); const unsigned int *timing = sata_ehc_deb_timing(&link->eh_context);
struct ata_port *ap = link->ap; struct ata_port *ap = link->ap;
struct ahci_port_priv *pp = ap->private_data; struct ahci_port_priv *pp = ap->private_data;
struct ahci_host_priv *hpriv = ap->host->private_data; struct ahci_host_priv *hpriv = ap->host->private_data;
......
...@@ -3782,7 +3782,7 @@ int ata_std_prereset(struct ata_link *link, unsigned long deadline) ...@@ -3782,7 +3782,7 @@ int ata_std_prereset(struct ata_link *link, unsigned long deadline)
{ {
struct ata_port *ap = link->ap; struct ata_port *ap = link->ap;
struct ata_eh_context *ehc = &link->eh_context; struct ata_eh_context *ehc = &link->eh_context;
const unsigned long *timing = sata_ehc_deb_timing(ehc); const unsigned int *timing = sata_ehc_deb_timing(ehc);
int rc; int rc;
/* if we're about to do hardreset, nothing more to do */ /* if we're about to do hardreset, nothing more to do */
...@@ -3824,7 +3824,7 @@ EXPORT_SYMBOL_GPL(ata_std_prereset); ...@@ -3824,7 +3824,7 @@ EXPORT_SYMBOL_GPL(ata_std_prereset);
int sata_std_hardreset(struct ata_link *link, unsigned int *class, int sata_std_hardreset(struct ata_link *link, unsigned int *class,
unsigned long deadline) unsigned long deadline)
{ {
const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); const unsigned int *timing = sata_ehc_deb_timing(&link->eh_context);
bool online; bool online;
int rc; int rc;
......
...@@ -19,11 +19,11 @@ ...@@ -19,11 +19,11 @@
#include "libata-transport.h" #include "libata-transport.h"
/* debounce timing parameters in msecs { interval, duration, timeout } */ /* debounce timing parameters in msecs { interval, duration, timeout } */
const unsigned long sata_deb_timing_normal[] = { 5, 100, 2000 }; const unsigned int sata_deb_timing_normal[] = { 5, 100, 2000 };
EXPORT_SYMBOL_GPL(sata_deb_timing_normal); EXPORT_SYMBOL_GPL(sata_deb_timing_normal);
const unsigned long sata_deb_timing_hotplug[] = { 25, 500, 2000 }; const unsigned int sata_deb_timing_hotplug[] = { 25, 500, 2000 };
EXPORT_SYMBOL_GPL(sata_deb_timing_hotplug); EXPORT_SYMBOL_GPL(sata_deb_timing_hotplug);
const unsigned long sata_deb_timing_long[] = { 100, 2000, 5000 }; const unsigned int sata_deb_timing_long[] = { 100, 2000, 5000 };
EXPORT_SYMBOL_GPL(sata_deb_timing_long); EXPORT_SYMBOL_GPL(sata_deb_timing_long);
/** /**
...@@ -232,11 +232,11 @@ EXPORT_SYMBOL_GPL(ata_tf_from_fis); ...@@ -232,11 +232,11 @@ EXPORT_SYMBOL_GPL(ata_tf_from_fis);
* RETURNS: * RETURNS:
* 0 on success, -errno on failure. * 0 on success, -errno on failure.
*/ */
int sata_link_debounce(struct ata_link *link, const unsigned long *params, int sata_link_debounce(struct ata_link *link, const unsigned int *params,
unsigned long deadline) unsigned long deadline)
{ {
unsigned long interval = params[0]; unsigned int interval = params[0];
unsigned long duration = params[1]; unsigned int duration = params[1];
unsigned long last_jiffies, t; unsigned long last_jiffies, t;
u32 last, cur; u32 last, cur;
int rc; int rc;
...@@ -295,7 +295,7 @@ EXPORT_SYMBOL_GPL(sata_link_debounce); ...@@ -295,7 +295,7 @@ EXPORT_SYMBOL_GPL(sata_link_debounce);
* RETURNS: * RETURNS:
* 0 on success, -errno on failure. * 0 on success, -errno on failure.
*/ */
int sata_link_resume(struct ata_link *link, const unsigned long *params, int sata_link_resume(struct ata_link *link, const unsigned int *params,
unsigned long deadline) unsigned long deadline)
{ {
int tries = ATA_LINK_RESUME_TRIES; int tries = ATA_LINK_RESUME_TRIES;
...@@ -528,7 +528,7 @@ EXPORT_SYMBOL_GPL(sata_set_spd); ...@@ -528,7 +528,7 @@ EXPORT_SYMBOL_GPL(sata_set_spd);
* RETURNS: * RETURNS:
* 0 on success, -errno otherwise. * 0 on success, -errno otherwise.
*/ */
int sata_link_hardreset(struct ata_link *link, const unsigned long *timing, int sata_link_hardreset(struct ata_link *link, const unsigned int *timing,
unsigned long deadline, unsigned long deadline,
bool *online, int (*check_ready)(struct ata_link *)) bool *online, int (*check_ready)(struct ata_link *))
{ {
......
...@@ -1971,7 +1971,7 @@ int sata_sff_hardreset(struct ata_link *link, unsigned int *class, ...@@ -1971,7 +1971,7 @@ int sata_sff_hardreset(struct ata_link *link, unsigned int *class,
unsigned long deadline) unsigned long deadline)
{ {
struct ata_eh_context *ehc = &link->eh_context; struct ata_eh_context *ehc = &link->eh_context;
const unsigned long *timing = sata_ehc_deb_timing(ehc); const unsigned int *timing = sata_ehc_deb_timing(ehc);
bool online; bool online;
int rc; int rc;
......
...@@ -385,7 +385,7 @@ static int highbank_initialize_phys(struct device *dev, void __iomem *addr) ...@@ -385,7 +385,7 @@ static int highbank_initialize_phys(struct device *dev, void __iomem *addr)
static int ahci_highbank_hardreset(struct ata_link *link, unsigned int *class, static int ahci_highbank_hardreset(struct ata_link *link, unsigned int *class,
unsigned long deadline) unsigned long deadline)
{ {
static const unsigned long timing[] = { 5, 100, 500}; static const unsigned int timing[] = { 5, 100, 500};
struct ata_port *ap = link->ap; struct ata_port *ap = link->ap;
struct ahci_port_priv *pp = ap->private_data; struct ahci_port_priv *pp = ap->private_data;
struct ahci_host_priv *hpriv = ap->host->private_data; struct ahci_host_priv *hpriv = ap->host->private_data;
......
...@@ -619,7 +619,7 @@ static int inic_hardreset(struct ata_link *link, unsigned int *class, ...@@ -619,7 +619,7 @@ static int inic_hardreset(struct ata_link *link, unsigned int *class,
struct ata_port *ap = link->ap; struct ata_port *ap = link->ap;
void __iomem *port_base = inic_port_base(ap); void __iomem *port_base = inic_port_base(ap);
void __iomem *idma_ctl = port_base + PORT_IDMA_CTL; void __iomem *idma_ctl = port_base + PORT_IDMA_CTL;
const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); const unsigned int *timing = sata_ehc_deb_timing(&link->eh_context);
int rc; int rc;
/* hammer it into sane state */ /* hammer it into sane state */
......
...@@ -3633,7 +3633,7 @@ static int mv_hardreset(struct ata_link *link, unsigned int *class, ...@@ -3633,7 +3633,7 @@ static int mv_hardreset(struct ata_link *link, unsigned int *class,
/* Workaround for errata FEr SATA#10 (part 2) */ /* Workaround for errata FEr SATA#10 (part 2) */
do { do {
const unsigned long *timing = const unsigned int *timing =
sata_ehc_deb_timing(&link->eh_context); sata_ehc_deb_timing(&link->eh_context);
rc = sata_link_hardreset(link, timing, deadline + extra, rc = sata_link_hardreset(link, timing, deadline + extra,
......
...@@ -1529,7 +1529,7 @@ static int nv_hardreset(struct ata_link *link, unsigned int *class, ...@@ -1529,7 +1529,7 @@ static int nv_hardreset(struct ata_link *link, unsigned int *class,
sata_link_hardreset(link, sata_deb_timing_hotplug, deadline, sata_link_hardreset(link, sata_deb_timing_hotplug, deadline,
NULL, NULL); NULL, NULL);
else { else {
const unsigned long *timing = sata_ehc_deb_timing(ehc); const unsigned int *timing = sata_ehc_deb_timing(ehc);
int rc; int rc;
if (!(ehc->i.flags & ATA_EHI_QUIET)) if (!(ehc->i.flags & ATA_EHI_QUIET))
......
...@@ -1166,11 +1166,11 @@ extern void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port * ...@@ -1166,11 +1166,11 @@ extern void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *
* SATA specific code - drivers/ata/libata-sata.c * SATA specific code - drivers/ata/libata-sata.c
*/ */
#ifdef CONFIG_SATA_HOST #ifdef CONFIG_SATA_HOST
extern const unsigned long sata_deb_timing_normal[]; extern const unsigned int sata_deb_timing_normal[];
extern const unsigned long sata_deb_timing_hotplug[]; extern const unsigned int sata_deb_timing_hotplug[];
extern const unsigned long sata_deb_timing_long[]; extern const unsigned int sata_deb_timing_long[];
static inline const unsigned long * static inline const unsigned int *
sata_ehc_deb_timing(struct ata_eh_context *ehc) sata_ehc_deb_timing(struct ata_eh_context *ehc)
{ {
if (ehc->i.flags & ATA_EHI_HOTPLUGGED) if (ehc->i.flags & ATA_EHI_HOTPLUGGED)
...@@ -1185,14 +1185,14 @@ extern int sata_scr_write(struct ata_link *link, int reg, u32 val); ...@@ -1185,14 +1185,14 @@ extern int sata_scr_write(struct ata_link *link, int reg, u32 val);
extern int sata_scr_write_flush(struct ata_link *link, int reg, u32 val); extern int sata_scr_write_flush(struct ata_link *link, int reg, u32 val);
extern int sata_set_spd(struct ata_link *link); extern int sata_set_spd(struct ata_link *link);
extern int sata_link_hardreset(struct ata_link *link, extern int sata_link_hardreset(struct ata_link *link,
const unsigned long *timing, unsigned long deadline, const unsigned int *timing, unsigned long deadline,
bool *online, int (*check_ready)(struct ata_link *)); bool *online, int (*check_ready)(struct ata_link *));
extern int sata_link_resume(struct ata_link *link, const unsigned long *params, extern int sata_link_resume(struct ata_link *link, const unsigned int *params,
unsigned long deadline); unsigned long deadline);
extern int ata_eh_read_sense_success_ncq_log(struct ata_link *link); extern int ata_eh_read_sense_success_ncq_log(struct ata_link *link);
extern void ata_eh_analyze_ncq_error(struct ata_link *link); extern void ata_eh_analyze_ncq_error(struct ata_link *link);
#else #else
static inline const unsigned long * static inline const unsigned int *
sata_ehc_deb_timing(struct ata_eh_context *ehc) sata_ehc_deb_timing(struct ata_eh_context *ehc)
{ {
return NULL; return NULL;
...@@ -1212,7 +1212,7 @@ static inline int sata_scr_write_flush(struct ata_link *link, int reg, u32 val) ...@@ -1212,7 +1212,7 @@ static inline int sata_scr_write_flush(struct ata_link *link, int reg, u32 val)
} }
static inline int sata_set_spd(struct ata_link *link) { return -EOPNOTSUPP; } static inline int sata_set_spd(struct ata_link *link) { return -EOPNOTSUPP; }
static inline int sata_link_hardreset(struct ata_link *link, static inline int sata_link_hardreset(struct ata_link *link,
const unsigned long *timing, const unsigned int *timing,
unsigned long deadline, unsigned long deadline,
bool *online, bool *online,
int (*check_ready)(struct ata_link *)) int (*check_ready)(struct ata_link *))
...@@ -1222,7 +1222,7 @@ static inline int sata_link_hardreset(struct ata_link *link, ...@@ -1222,7 +1222,7 @@ static inline int sata_link_hardreset(struct ata_link *link,
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
static inline int sata_link_resume(struct ata_link *link, static inline int sata_link_resume(struct ata_link *link,
const unsigned long *params, const unsigned int *params,
unsigned long deadline) unsigned long deadline)
{ {
return -EOPNOTSUPP; return -EOPNOTSUPP;
...@@ -1234,7 +1234,7 @@ static inline int ata_eh_read_sense_success_ncq_log(struct ata_link *link) ...@@ -1234,7 +1234,7 @@ static inline int ata_eh_read_sense_success_ncq_log(struct ata_link *link)
static inline void ata_eh_analyze_ncq_error(struct ata_link *link) { } static inline void ata_eh_analyze_ncq_error(struct ata_link *link) { }
#endif #endif
extern int sata_link_debounce(struct ata_link *link, extern int sata_link_debounce(struct ata_link *link,
const unsigned long *params, unsigned long deadline); const unsigned int *params, unsigned long deadline);
extern int sata_link_scr_lpm(struct ata_link *link, enum ata_lpm_policy policy, extern int sata_link_scr_lpm(struct ata_link *link, enum ata_lpm_policy policy,
bool spm_wakeup); bool spm_wakeup);
extern int ata_slave_link_init(struct ata_port *ap); extern int ata_slave_link_init(struct ata_port *ap);
......
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