diff options
| -rw-r--r-- | drivers/ata/libata-core.c | 2 | ||||
| -rw-r--r-- | drivers/ata/libata-sff.c | 2 | ||||
| -rw-r--r-- | include/linux/libata.h | 8 |
3 files changed, 8 insertions, 4 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 200f49d09228..bf6ffc1273a0 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
| @@ -5634,10 +5634,8 @@ struct ata_port *ata_port_alloc(struct ata_host *host) | |||
| 5634 | ap->pflags |= ATA_PFLAG_INITIALIZING; | 5634 | ap->pflags |= ATA_PFLAG_INITIALIZING; |
| 5635 | ap->lock = &host->lock; | 5635 | ap->lock = &host->lock; |
| 5636 | ap->print_id = -1; | 5636 | ap->print_id = -1; |
| 5637 | ap->ctl = ATA_DEVCTL_OBS; | ||
| 5638 | ap->host = host; | 5637 | ap->host = host; |
| 5639 | ap->dev = host->dev; | 5638 | ap->dev = host->dev; |
| 5640 | ap->last_ctl = 0xFF; | ||
| 5641 | 5639 | ||
| 5642 | #if defined(ATA_VERBOSE_DEBUG) | 5640 | #if defined(ATA_VERBOSE_DEBUG) |
| 5643 | /* turn on all debugging levels */ | 5641 | /* turn on all debugging levels */ |
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 6a103b310cac..8a1396f52a3a 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c | |||
| @@ -3074,6 +3074,8 @@ EXPORT_SYMBOL_GPL(ata_pci_bmdma_init); | |||
| 3074 | */ | 3074 | */ |
| 3075 | void ata_sff_port_init(struct ata_port *ap) | 3075 | void ata_sff_port_init(struct ata_port *ap) |
| 3076 | { | 3076 | { |
| 3077 | ap->ctl = ATA_DEVCTL_OBS; | ||
| 3078 | ap->last_ctl = 0xFF; | ||
| 3077 | } | 3079 | } |
| 3078 | 3080 | ||
| 3079 | int __init ata_sff_init(void) | 3081 | int __init ata_sff_init(void) |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 19f716edd3be..85b99b83f990 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -721,10 +721,10 @@ struct ata_port { | |||
| 721 | 721 | ||
| 722 | #ifdef CONFIG_ATA_SFF | 722 | #ifdef CONFIG_ATA_SFF |
| 723 | struct ata_ioports ioaddr; /* ATA cmd/ctl/dma register blocks */ | 723 | struct ata_ioports ioaddr; /* ATA cmd/ctl/dma register blocks */ |
| 724 | #endif /* CONFIG_ATA_SFF */ | ||
| 725 | |||
| 726 | u8 ctl; /* cache of ATA control register */ | 724 | u8 ctl; /* cache of ATA control register */ |
| 727 | u8 last_ctl; /* Cache last written value */ | 725 | u8 last_ctl; /* Cache last written value */ |
| 726 | #endif /* CONFIG_ATA_SFF */ | ||
| 727 | |||
| 728 | unsigned int pio_mask; | 728 | unsigned int pio_mask; |
| 729 | unsigned int mwdma_mask; | 729 | unsigned int mwdma_mask; |
| 730 | unsigned int udma_mask; | 730 | unsigned int udma_mask; |
| @@ -1435,7 +1435,11 @@ static inline void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf) | |||
| 1435 | { | 1435 | { |
| 1436 | memset(tf, 0, sizeof(*tf)); | 1436 | memset(tf, 0, sizeof(*tf)); |
| 1437 | 1437 | ||
| 1438 | #ifdef CONFIG_ATA_SFF | ||
| 1438 | tf->ctl = dev->link->ap->ctl; | 1439 | tf->ctl = dev->link->ap->ctl; |
| 1440 | #else | ||
| 1441 | tf->ctl = ATA_DEVCTL_OBS; | ||
| 1442 | #endif | ||
| 1439 | if (dev->devno == 0) | 1443 | if (dev->devno == 0) |
| 1440 | tf->device = ATA_DEVICE_OBS; | 1444 | tf->device = ATA_DEVICE_OBS; |
| 1441 | else | 1445 | else |
