diff options
| -rw-r--r-- | drivers/ide/ide-probe.c | 12 | ||||
| -rw-r--r-- | drivers/ide/via82cxxx.c | 57 |
2 files changed, 3 insertions, 66 deletions
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index fbedd35feb44..4c3d1bfec0c5 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
| @@ -695,14 +695,8 @@ static int ide_probe_port(ide_hwif_t *hwif) | |||
| 695 | if (irqd) | 695 | if (irqd) |
| 696 | disable_irq(hwif->irq); | 696 | disable_irq(hwif->irq); |
| 697 | 697 | ||
| 698 | rc = ide_port_wait_ready(hwif); | 698 | if (ide_port_wait_ready(hwif) == -EBUSY) |
| 699 | if (rc == -ENODEV) { | 699 | printk(KERN_DEBUG "%s: Wait for ready failed before probe !\n", hwif->name); |
| 700 | printk(KERN_INFO "%s: no devices on the port\n", hwif->name); | ||
| 701 | goto out; | ||
| 702 | } else if (rc == -EBUSY) | ||
| 703 | printk(KERN_ERR "%s: not ready before the probe\n", hwif->name); | ||
| 704 | else | ||
| 705 | rc = -ENODEV; | ||
| 706 | 700 | ||
| 707 | /* | 701 | /* |
| 708 | * Second drive should only exist if first drive was found, | 702 | * Second drive should only exist if first drive was found, |
| @@ -713,7 +707,7 @@ static int ide_probe_port(ide_hwif_t *hwif) | |||
| 713 | if (drive->dev_flags & IDE_DFLAG_PRESENT) | 707 | if (drive->dev_flags & IDE_DFLAG_PRESENT) |
| 714 | rc = 0; | 708 | rc = 0; |
| 715 | } | 709 | } |
| 716 | out: | 710 | |
| 717 | /* | 711 | /* |
| 718 | * Use cached IRQ number. It might be (and is...) changed by probe | 712 | * Use cached IRQ number. It might be (and is...) changed by probe |
| 719 | * code above | 713 | * code above |
diff --git a/drivers/ide/via82cxxx.c b/drivers/ide/via82cxxx.c index e65d010b708d..48fd4efc90ad 100644 --- a/drivers/ide/via82cxxx.c +++ b/drivers/ide/via82cxxx.c | |||
| @@ -110,7 +110,6 @@ struct via82cxxx_dev | |||
| 110 | { | 110 | { |
| 111 | struct via_isa_bridge *via_config; | 111 | struct via_isa_bridge *via_config; |
| 112 | unsigned int via_80w; | 112 | unsigned int via_80w; |
| 113 | u8 cached_device[2]; | ||
| 114 | }; | 113 | }; |
| 115 | 114 | ||
| 116 | /** | 115 | /** |
| @@ -403,66 +402,10 @@ static const struct ide_port_ops via_port_ops = { | |||
| 403 | .cable_detect = via82cxxx_cable_detect, | 402 | .cable_detect = via82cxxx_cable_detect, |
| 404 | }; | 403 | }; |
| 405 | 404 | ||
| 406 | static void via_write_devctl(ide_hwif_t *hwif, u8 ctl) | ||
| 407 | { | ||
| 408 | struct via82cxxx_dev *vdev = hwif->host->host_priv; | ||
| 409 | |||
| 410 | outb(ctl, hwif->io_ports.ctl_addr); | ||
| 411 | outb(vdev->cached_device[hwif->channel], hwif->io_ports.device_addr); | ||
| 412 | } | ||
| 413 | |||
| 414 | static void __via_dev_select(ide_drive_t *drive, u8 select) | ||
| 415 | { | ||
| 416 | ide_hwif_t *hwif = drive->hwif; | ||
| 417 | struct via82cxxx_dev *vdev = hwif->host->host_priv; | ||
| 418 | |||
| 419 | outb(select, hwif->io_ports.device_addr); | ||
| 420 | vdev->cached_device[hwif->channel] = select; | ||
| 421 | } | ||
| 422 | |||
| 423 | static void via_dev_select(ide_drive_t *drive) | ||
| 424 | { | ||
| 425 | __via_dev_select(drive, drive->select | ATA_DEVICE_OBS); | ||
| 426 | } | ||
| 427 | |||
| 428 | static void via_tf_load(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid) | ||
| 429 | { | ||
| 430 | ide_hwif_t *hwif = drive->hwif; | ||
| 431 | struct ide_io_ports *io_ports = &hwif->io_ports; | ||
| 432 | |||
| 433 | if (valid & IDE_VALID_FEATURE) | ||
| 434 | outb(tf->feature, io_ports->feature_addr); | ||
| 435 | if (valid & IDE_VALID_NSECT) | ||
| 436 | outb(tf->nsect, io_ports->nsect_addr); | ||
| 437 | if (valid & IDE_VALID_LBAL) | ||
| 438 | outb(tf->lbal, io_ports->lbal_addr); | ||
| 439 | if (valid & IDE_VALID_LBAM) | ||
| 440 | outb(tf->lbam, io_ports->lbam_addr); | ||
| 441 | if (valid & IDE_VALID_LBAH) | ||
| 442 | outb(tf->lbah, io_ports->lbah_addr); | ||
| 443 | if (valid & IDE_VALID_DEVICE) | ||
| 444 | __via_dev_select(drive, tf->device); | ||
| 445 | } | ||
| 446 | |||
| 447 | const struct ide_tp_ops via_tp_ops = { | ||
| 448 | .exec_command = ide_exec_command, | ||
| 449 | .read_status = ide_read_status, | ||
| 450 | .read_altstatus = ide_read_altstatus, | ||
| 451 | .write_devctl = via_write_devctl, | ||
| 452 | |||
| 453 | .dev_select = via_dev_select, | ||
| 454 | .tf_load = via_tf_load, | ||
| 455 | .tf_read = ide_tf_read, | ||
| 456 | |||
| 457 | .input_data = ide_input_data, | ||
| 458 | .output_data = ide_output_data, | ||
| 459 | }; | ||
| 460 | |||
| 461 | static const struct ide_port_info via82cxxx_chipset __devinitdata = { | 405 | static const struct ide_port_info via82cxxx_chipset __devinitdata = { |
| 462 | .name = DRV_NAME, | 406 | .name = DRV_NAME, |
| 463 | .init_chipset = init_chipset_via82cxxx, | 407 | .init_chipset = init_chipset_via82cxxx, |
| 464 | .enablebits = { { 0x40, 0x02, 0x02 }, { 0x40, 0x01, 0x01 } }, | 408 | .enablebits = { { 0x40, 0x02, 0x02 }, { 0x40, 0x01, 0x01 } }, |
| 465 | .tp_ops = &via_tp_ops, | ||
| 466 | .port_ops = &via_port_ops, | 409 | .port_ops = &via_port_ops, |
| 467 | .host_flags = IDE_HFLAG_PIO_NO_BLACKLIST | | 410 | .host_flags = IDE_HFLAG_PIO_NO_BLACKLIST | |
| 468 | IDE_HFLAG_POST_SET_MODE | | 411 | IDE_HFLAG_POST_SET_MODE | |
