aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-08-18 00:14:55 -0400
committerJeff Garzik <jeff@garzik.org>2007-10-12 14:55:37 -0400
commitcbcdd87593a1d85c5c4b259945a3a09eee12814d (patch)
treeee03df963a12ec7f30f6c3a8742421daf2c34f50 /include
parente923090ddd9fef1d4e06dc6c5295e29baced19f3 (diff)
libata: implement and use ata_port_desc() to report port configuration
Currently, port configuration reporting has the following problems. * iomapped address is reported instead of raw address * report contains irrelevant fields or lacks necessary fields for non-SFF controllers. * host->irq/irq2 are there just for reporting and hacky. This patch implements and uses ata_port_desc() and ata_port_pbar_desc(). ata_port_desc() is almost identical to ata_ehi_push_desc() except that it takes @ap instead of @ehi, has no locking requirement, can only be used during host initialization and " " is used as separator instead of ", ". ata_port_pbar_desc() is a helper to ease reporting of a PCI BAR or an offsetted address into it. LLD pushes whatever description it wants using the above two functions. The accumulated description is printed on host registration after "[S/P]ATA max MAX_XFERMODE ". SFF init helpers and ata_host_activate() automatically add descriptions for addresses and irq respectively, so only LLDs which isn't standard SFF need to add custom descriptions. In many cases, such controllers need to report different things anyway. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/libata.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h
index e7d163edb4c0..d3defae689ca 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -368,8 +368,6 @@ struct ata_ioports {
368struct ata_host { 368struct ata_host {
369 spinlock_t lock; 369 spinlock_t lock;
370 struct device *dev; 370 struct device *dev;
371 unsigned long irq;
372 unsigned long irq2;
373 void __iomem * const *iomap; 371 void __iomem * const *iomap;
374 unsigned int n_ports; 372 unsigned int n_ports;
375 void *private_data; 373 void *private_data;
@@ -969,6 +967,16 @@ static inline void ata_ehi_hotplugged(struct ata_eh_info *ehi)
969} 967}
970 968
971/* 969/*
970 * port description helpers
971 */
972extern void ata_port_desc(struct ata_port *ap, const char *fmt, ...)
973 __attribute__ ((format (printf, 2, 3)));
974#ifdef CONFIG_PCI
975extern void ata_port_pbar_desc(struct ata_port *ap, int bar, ssize_t offset,
976 const char *name);
977#endif
978
979/*
972 * qc helpers 980 * qc helpers
973 */ 981 */
974static inline int 982static inline int