mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-27 00:51:35 +00:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: IDE: fix sparse signed-ness errors with host->host_busy ide: fix suspend regression tx4938ide: Fix build error due to read_sff_dma_status moving ide: remove unused CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ sl82c105: remove dead code via82cxxx: fix cable warning message ide: can't use SSD/non-rotational queue flag for all CFA devices it821x.c: use dev->revision instead of pci_read_config_byte it821x: Add ultra_mask quirk for Vortex86SX ide: fix accidental LOCKDEP breakage caused by local_irq_set() removal
This commit is contained in:
commit
c2919f2ab9
12 changed files with 27 additions and 27 deletions
|
@ -52,14 +52,12 @@ Two files are introduced:
|
||||||
b) 'drivers/ide/mips/au1xxx-ide.c'
|
b) 'drivers/ide/mips/au1xxx-ide.c'
|
||||||
contains the functionality of the AU1XXX IDE driver
|
contains the functionality of the AU1XXX IDE driver
|
||||||
|
|
||||||
Four configs variables are introduced:
|
Following extra configs variables are introduced:
|
||||||
|
|
||||||
CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA - enable the PIO+DBDMA mode
|
CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA - enable the PIO+DBDMA mode
|
||||||
CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA - enable the MWDMA mode
|
CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA - enable the MWDMA mode
|
||||||
CONFIG_BLK_DEV_IDE_AU1XXX_BURSTABLE_ON - set Burstable FIFO in DBDMA
|
CONFIG_BLK_DEV_IDE_AU1XXX_BURSTABLE_ON - set Burstable FIFO in DBDMA
|
||||||
controller
|
controller
|
||||||
CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ - maximum transfer size
|
|
||||||
per descriptor
|
|
||||||
|
|
||||||
|
|
||||||
SUPPORTED IDE MODES
|
SUPPORTED IDE MODES
|
||||||
|
@ -87,7 +85,6 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
|
||||||
CONFIG_IDEDMA_PCI_AUTO=y
|
CONFIG_IDEDMA_PCI_AUTO=y
|
||||||
CONFIG_BLK_DEV_IDE_AU1XXX=y
|
CONFIG_BLK_DEV_IDE_AU1XXX=y
|
||||||
CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=y
|
CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=y
|
||||||
CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ=128
|
|
||||||
CONFIG_BLK_DEV_IDEDMA=y
|
CONFIG_BLK_DEV_IDEDMA=y
|
||||||
CONFIG_IDEDMA_AUTO=y
|
CONFIG_IDEDMA_AUTO=y
|
||||||
|
|
||||||
|
@ -105,7 +102,6 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
|
||||||
CONFIG_IDEDMA_PCI_AUTO=y
|
CONFIG_IDEDMA_PCI_AUTO=y
|
||||||
CONFIG_BLK_DEV_IDE_AU1XXX=y
|
CONFIG_BLK_DEV_IDE_AU1XXX=y
|
||||||
CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=y
|
CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=y
|
||||||
CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ=128
|
|
||||||
CONFIG_BLK_DEV_IDEDMA=y
|
CONFIG_BLK_DEV_IDEDMA=y
|
||||||
CONFIG_IDEDMA_AUTO=y
|
CONFIG_IDEDMA_AUTO=y
|
||||||
|
|
||||||
|
|
|
@ -701,11 +701,6 @@ config BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
|
||||||
depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX
|
depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ
|
|
||||||
int "Maximum transfer size (KB) per request (up to 128)"
|
|
||||||
default "128"
|
|
||||||
depends on BLK_DEV_IDE_AU1XXX
|
|
||||||
|
|
||||||
config BLK_DEV_IDE_TX4938
|
config BLK_DEV_IDE_TX4938
|
||||||
tristate "TX4938 internal IDE support"
|
tristate "TX4938 internal IDE support"
|
||||||
depends on SOC_TX4938
|
depends on SOC_TX4938
|
||||||
|
|
|
@ -633,7 +633,7 @@ static void ide_disk_setup(ide_drive_t *drive)
|
||||||
printk(KERN_INFO "%s: max request size: %dKiB\n", drive->name,
|
printk(KERN_INFO "%s: max request size: %dKiB\n", drive->name,
|
||||||
q->max_sectors / 2);
|
q->max_sectors / 2);
|
||||||
|
|
||||||
if (ata_id_is_ssd(id) || ata_id_is_cfa(id))
|
if (ata_id_is_ssd(id))
|
||||||
queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q);
|
queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q);
|
||||||
|
|
||||||
/* calculate drive capacity, and select LBA if possible */
|
/* calculate drive capacity, and select LBA if possible */
|
||||||
|
|
|
@ -493,7 +493,7 @@ static int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad, unsigned long ti
|
||||||
stat = tp_ops->read_status(hwif);
|
stat = tp_ops->read_status(hwif);
|
||||||
|
|
||||||
if (stat & ATA_BUSY) {
|
if (stat & ATA_BUSY) {
|
||||||
local_irq_save(flags);
|
local_save_flags(flags);
|
||||||
local_irq_enable_in_hardirq();
|
local_irq_enable_in_hardirq();
|
||||||
timeout += jiffies;
|
timeout += jiffies;
|
||||||
while ((stat = tp_ops->read_status(hwif)) & ATA_BUSY) {
|
while ((stat = tp_ops->read_status(hwif)) & ATA_BUSY) {
|
||||||
|
|
|
@ -186,12 +186,10 @@ void ide_complete_pm_request(ide_drive_t *drive, struct request *rq)
|
||||||
blk_pm_suspend_request(rq) ? "suspend" : "resume");
|
blk_pm_suspend_request(rq) ? "suspend" : "resume");
|
||||||
#endif
|
#endif
|
||||||
spin_lock_irqsave(q->queue_lock, flags);
|
spin_lock_irqsave(q->queue_lock, flags);
|
||||||
if (blk_pm_suspend_request(rq)) {
|
if (blk_pm_suspend_request(rq))
|
||||||
blk_stop_queue(q);
|
blk_stop_queue(q);
|
||||||
} else {
|
else
|
||||||
drive->dev_flags &= ~IDE_DFLAG_BLOCKED;
|
drive->dev_flags &= ~IDE_DFLAG_BLOCKED;
|
||||||
blk_start_queue(q);
|
|
||||||
}
|
|
||||||
spin_unlock_irqrestore(q->queue_lock, flags);
|
spin_unlock_irqrestore(q->queue_lock, flags);
|
||||||
|
|
||||||
drive->hwif->rq = NULL;
|
drive->hwif->rq = NULL;
|
||||||
|
@ -219,6 +217,8 @@ void ide_check_pm_state(ide_drive_t *drive, struct request *rq)
|
||||||
* point.
|
* point.
|
||||||
*/
|
*/
|
||||||
ide_hwif_t *hwif = drive->hwif;
|
ide_hwif_t *hwif = drive->hwif;
|
||||||
|
struct request_queue *q = drive->queue;
|
||||||
|
unsigned long flags;
|
||||||
int rc;
|
int rc;
|
||||||
#ifdef DEBUG_PM
|
#ifdef DEBUG_PM
|
||||||
printk("%s: Wakeup request inited, waiting for !BSY...\n", drive->name);
|
printk("%s: Wakeup request inited, waiting for !BSY...\n", drive->name);
|
||||||
|
@ -231,5 +231,9 @@ void ide_check_pm_state(ide_drive_t *drive, struct request *rq)
|
||||||
rc = ide_wait_not_busy(hwif, 100000);
|
rc = ide_wait_not_busy(hwif, 100000);
|
||||||
if (rc)
|
if (rc)
|
||||||
printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name);
|
printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name);
|
||||||
|
|
||||||
|
spin_lock_irqsave(q->queue_lock, flags);
|
||||||
|
blk_start_queue(q);
|
||||||
|
spin_unlock_irqrestore(q->queue_lock, flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -796,7 +796,7 @@ static int ide_probe_port(ide_hwif_t *hwif)
|
||||||
if (irqd)
|
if (irqd)
|
||||||
disable_irq(hwif->irq);
|
disable_irq(hwif->irq);
|
||||||
|
|
||||||
local_irq_save(flags);
|
local_save_flags(flags);
|
||||||
local_irq_enable_in_hardirq();
|
local_irq_enable_in_hardirq();
|
||||||
|
|
||||||
if (ide_port_wait_ready(hwif) == -EBUSY)
|
if (ide_port_wait_ready(hwif) == -EBUSY)
|
||||||
|
|
|
@ -68,6 +68,8 @@
|
||||||
|
|
||||||
#define DRV_NAME "it821x"
|
#define DRV_NAME "it821x"
|
||||||
|
|
||||||
|
#define QUIRK_VORTEX86 1
|
||||||
|
|
||||||
struct it821x_dev
|
struct it821x_dev
|
||||||
{
|
{
|
||||||
unsigned int smart:1, /* Are we in smart raid mode */
|
unsigned int smart:1, /* Are we in smart raid mode */
|
||||||
|
@ -79,6 +81,7 @@ struct it821x_dev
|
||||||
u16 pio[2]; /* Cached PIO values */
|
u16 pio[2]; /* Cached PIO values */
|
||||||
u16 mwdma[2]; /* Cached MWDMA values */
|
u16 mwdma[2]; /* Cached MWDMA values */
|
||||||
u16 udma[2]; /* Cached UDMA values (per drive) */
|
u16 udma[2]; /* Cached UDMA values (per drive) */
|
||||||
|
u16 quirks;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ATA_66 0
|
#define ATA_66 0
|
||||||
|
@ -557,8 +560,7 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif)
|
||||||
* this is necessary.
|
* this is necessary.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pci_read_config_byte(dev, 0x08, &conf);
|
if (dev->revision == 0x10) {
|
||||||
if (conf == 0x10) {
|
|
||||||
idev->timing10 = 1;
|
idev->timing10 = 1;
|
||||||
hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA;
|
hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA;
|
||||||
if (idev->smart == 0)
|
if (idev->smart == 0)
|
||||||
|
@ -577,6 +579,12 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif)
|
||||||
|
|
||||||
hwif->ultra_mask = ATA_UDMA6;
|
hwif->ultra_mask = ATA_UDMA6;
|
||||||
hwif->mwdma_mask = ATA_MWDMA2;
|
hwif->mwdma_mask = ATA_MWDMA2;
|
||||||
|
|
||||||
|
/* Vortex86SX quirk: prevent Ultra-DMA mode to fix BadCRC issue */
|
||||||
|
if (idev->quirks & QUIRK_VORTEX86) {
|
||||||
|
if (dev->revision == 0x11)
|
||||||
|
hwif->ultra_mask = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void it8212_disable_raid(struct pci_dev *dev)
|
static void it8212_disable_raid(struct pci_dev *dev)
|
||||||
|
@ -649,6 +657,8 @@ static int __devinit it821x_init_one(struct pci_dev *dev, const struct pci_devic
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
itdevs->quirks = id->driver_data;
|
||||||
|
|
||||||
rc = ide_pci_init_one(dev, &it821x_chipset, itdevs);
|
rc = ide_pci_init_one(dev, &it821x_chipset, itdevs);
|
||||||
if (rc)
|
if (rc)
|
||||||
kfree(itdevs);
|
kfree(itdevs);
|
||||||
|
@ -668,6 +678,7 @@ static void __devexit it821x_remove(struct pci_dev *dev)
|
||||||
static const struct pci_device_id it821x_pci_tbl[] = {
|
static const struct pci_device_id it821x_pci_tbl[] = {
|
||||||
{ PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8211), 0 },
|
{ PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8211), 0 },
|
||||||
{ PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8212), 0 },
|
{ PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8212), 0 },
|
||||||
|
{ PCI_VDEVICE(RDC, PCI_DEVICE_ID_RDC_D1010), QUIRK_VORTEX86 },
|
||||||
{ 0, },
|
{ 0, },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -310,10 +310,6 @@ static const struct ide_port_info sl82c105_chipset __devinitdata = {
|
||||||
.dma_ops = &sl82c105_dma_ops,
|
.dma_ops = &sl82c105_dma_ops,
|
||||||
.host_flags = IDE_HFLAG_IO_32BIT |
|
.host_flags = IDE_HFLAG_IO_32BIT |
|
||||||
IDE_HFLAG_UNMASK_IRQS |
|
IDE_HFLAG_UNMASK_IRQS |
|
||||||
/* FIXME: check for Compatibility mode in generic IDE PCI code */
|
|
||||||
#if defined(CONFIG_LOPEC) || defined(CONFIG_SANDPOINT)
|
|
||||||
IDE_HFLAG_FORCE_LEGACY_IRQS |
|
|
||||||
#endif
|
|
||||||
IDE_HFLAG_SERIALIZE_DMA |
|
IDE_HFLAG_SERIALIZE_DMA |
|
||||||
IDE_HFLAG_NO_AUTODMA,
|
IDE_HFLAG_NO_AUTODMA,
|
||||||
.pio_mask = ATA_PIO5,
|
.pio_mask = ATA_PIO5,
|
||||||
|
|
|
@ -202,7 +202,6 @@ static const struct ide_tp_ops tx4938ide_tp_ops = {
|
||||||
.exec_command = ide_exec_command,
|
.exec_command = ide_exec_command,
|
||||||
.read_status = ide_read_status,
|
.read_status = ide_read_status,
|
||||||
.read_altstatus = ide_read_altstatus,
|
.read_altstatus = ide_read_altstatus,
|
||||||
.read_sff_dma_status = ide_read_sff_dma_status,
|
|
||||||
|
|
||||||
.set_irq = ide_set_irq,
|
.set_irq = ide_set_irq,
|
||||||
|
|
||||||
|
|
|
@ -432,8 +432,6 @@ static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_i
|
||||||
if (via_clock < 20000 || via_clock > 50000) {
|
if (via_clock < 20000 || via_clock > 50000) {
|
||||||
printk(KERN_WARNING DRV_NAME ": User given PCI clock speed "
|
printk(KERN_WARNING DRV_NAME ": User given PCI clock speed "
|
||||||
"impossible (%d), using 33 MHz instead.\n", via_clock);
|
"impossible (%d), using 33 MHz instead.\n", via_clock);
|
||||||
printk(KERN_WARNING DRV_NAME ": Use ide0=ata66 if you want "
|
|
||||||
"to assume 80-wire cable.\n");
|
|
||||||
via_clock = 33333;
|
via_clock = 33333;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -871,7 +871,7 @@ struct ide_host {
|
||||||
ide_hwif_t *cur_port; /* for hosts requiring serialization */
|
ide_hwif_t *cur_port; /* for hosts requiring serialization */
|
||||||
|
|
||||||
/* used for hosts requiring serialization */
|
/* used for hosts requiring serialization */
|
||||||
volatile long host_busy;
|
volatile unsigned long host_busy;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IDE_HOST_BUSY 0
|
#define IDE_HOST_BUSY 0
|
||||||
|
|
|
@ -2174,6 +2174,7 @@
|
||||||
#define PCI_DEVICE_ID_RDC_R6040 0x6040
|
#define PCI_DEVICE_ID_RDC_R6040 0x6040
|
||||||
#define PCI_DEVICE_ID_RDC_R6060 0x6060
|
#define PCI_DEVICE_ID_RDC_R6060 0x6060
|
||||||
#define PCI_DEVICE_ID_RDC_R6061 0x6061
|
#define PCI_DEVICE_ID_RDC_R6061 0x6061
|
||||||
|
#define PCI_DEVICE_ID_RDC_D1010 0x1010
|
||||||
|
|
||||||
#define PCI_VENDOR_ID_LENOVO 0x17aa
|
#define PCI_VENDOR_ID_LENOVO 0x17aa
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue