aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/pata_mpc52xx.c
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 /drivers/ata/pata_mpc52xx.c
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 'drivers/ata/pata_mpc52xx.c')
-rw-r--r--drivers/ata/pata_mpc52xx.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c
index a56694b2833e..412140f02853 100644
--- a/drivers/ata/pata_mpc52xx.c
+++ b/drivers/ata/pata_mpc52xx.c
@@ -302,7 +302,8 @@ static struct ata_port_operations mpc52xx_ata_port_ops = {
302}; 302};
303 303
304static int __devinit 304static int __devinit
305mpc52xx_ata_init_one(struct device *dev, struct mpc52xx_ata_priv *priv) 305mpc52xx_ata_init_one(struct device *dev, struct mpc52xx_ata_priv *priv,
306 unsigned long raw_ata_regs)
306{ 307{
307 struct ata_host *host; 308 struct ata_host *host;
308 struct ata_port *ap; 309 struct ata_port *ap;
@@ -336,6 +337,8 @@ mpc52xx_ata_init_one(struct device *dev, struct mpc52xx_ata_priv *priv)
336 aio->status_addr = &priv->ata_regs->tf_command; 337 aio->status_addr = &priv->ata_regs->tf_command;
337 aio->command_addr = &priv->ata_regs->tf_command; 338 aio->command_addr = &priv->ata_regs->tf_command;
338 339
340 ata_port_desc(ap, "ata_regs 0x%lx", raw_ata_regs);
341
339 /* activate host */ 342 /* activate host */
340 return ata_host_activate(host, priv->ata_irq, ata_interrupt, 0, 343 return ata_host_activate(host, priv->ata_irq, ata_interrupt, 0,
341 &mpc52xx_ata_sht); 344 &mpc52xx_ata_sht);
@@ -432,7 +435,7 @@ mpc52xx_ata_probe(struct of_device *op, const struct of_device_id *match)
432 } 435 }
433 436
434 /* Register ourselves to libata */ 437 /* Register ourselves to libata */
435 rv = mpc52xx_ata_init_one(&op->dev, priv); 438 rv = mpc52xx_ata_init_one(&op->dev, priv, res_mem.start);
436 if (rv) { 439 if (rv) {
437 printk(KERN_ERR DRV_NAME ": " 440 printk(KERN_ERR DRV_NAME ": "
438 "Error while registering to ATA layer\n"); 441 "Error while registering to ATA layer\n");