Commit b7ac98b1 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://linuxconsole.bkbits.net/stable

into home.transmeta.com:/home/torvalds/v2.5/linux
parents ce9f2117 6664cef1
......@@ -533,19 +533,6 @@ static int __devinit aec62xx_init_one(struct pci_dev *dev, const struct pci_devi
return 0;
}
/**
* aec62xx_remove_one - called when an AEC is unplugged
* @dev: the device that was removed
*
* Disconnect an AEC device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void aec62xx_remove_one(struct pci_dev *dev)
{
panic("AEC62xx removal not yet supported");
}
static struct pci_device_id aec62xx_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP850UF, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
{ PCI_VENDOR_ID_ARTOP, PCI_DEVICE_ID_ARTOP_ATP860, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 },
......@@ -559,7 +546,6 @@ static struct pci_driver driver = {
name: "AEC62xx IDE",
id_table: aec62xx_pci_tbl,
probe: aec62xx_init_one,
remove: __devexit_p(aec62xx_remove_one),
};
static int aec62xx_ide_init(void)
......
......@@ -862,19 +862,6 @@ static int __devinit alim15x3_init_one(struct pci_dev *dev, const struct pci_dev
}
/**
* ali15x3_remove_one - called with an ALi is unplugged
* @dev: the device that was removed
*
* Disconnect an ALi device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void ali15x3_remove_one(struct pci_dev *dev)
{
panic("ALi removal not yet supported");
}
static struct pci_device_id alim15x3_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M5229, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
{ 0, },
......@@ -884,7 +871,6 @@ static struct pci_driver driver = {
name: "ALI15x3 IDE",
id_table: alim15x3_pci_tbl,
probe: alim15x3_init_one,
remove: __devexit_p(ali15x3_remove_one),
};
static int ali15x3_ide_init(void)
......
......@@ -403,19 +403,6 @@ static int __devinit amd74xx_init_one(struct pci_dev *dev, const struct pci_devi
return 0;
}
/**
* amd74xx_remove_one - called with an AMD IDE is unplugged
* @dev: the device that was removed
*
* Disconnect an AMD IDE device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void amd74xx_remove_one(struct pci_dev *dev)
{
panic("AMD IDE removal not yet supported");
}
static struct pci_device_id amd74xx_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_COBRA_7401, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7409, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -429,7 +416,6 @@ static struct pci_driver driver = {
name: "AMD IDE",
id_table: amd74xx_pci_tbl,
probe: amd74xx_init_one,
remove: __devexit_p(amd74xx_remove_one),
};
static int amd74xx_ide_init(void)
......
......@@ -777,19 +777,6 @@ static int __devinit cmd64x_init_one(struct pci_dev *dev, const struct pci_devic
return 0;
}
/**
* cmd64x_remove_one - called with an CMD64x is unplugged
* @dev: the device that was removed
*
* Disconnect a CMD64x device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void cmd64x_remove_one(struct pci_dev *dev)
{
panic("CMD64x removal not yet supported");
}
static struct pci_device_id cmd64x_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_CMD_643, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_CMD_646, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -802,7 +789,6 @@ static struct pci_driver driver = {
name: "CMD64x IDE",
id_table: cmd64x_pci_tbl,
probe: cmd64x_init_one,
remove: __devexit_p(cmd64x_remove_one),
};
static int cmd64x_ide_init(void)
......
......@@ -430,19 +430,6 @@ static int __devinit cs5530_init_one(struct pci_dev *dev, const struct pci_devic
return 0;
}
/**
* cs5530_remove_one - called when a CS5530 is unplugged
* @dev: the device that was removed
*
* Disconnect an Cyrix device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void cs5530_remove_one(struct pci_dev *dev)
{
panic("Cyrix removal not yet supported");
}
static struct pci_device_id cs5530_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -452,7 +439,6 @@ static struct pci_driver driver = {
name: "CS5530 IDE",
id_table: cs5530_pci_tbl,
probe: cs5530_init_one,
remove: __devexit_p(cs5530_remove_one),
};
static int cs5530_ide_init(void)
......
......@@ -428,19 +428,6 @@ static int __devinit cy82c693_init_one(struct pci_dev *dev, const struct pci_dev
return 0;
}
/**
* cy82c693_remove_one - called with an Cypress is unplugged
* @dev: the device that was removed
*
* Disconnect an Cypress device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void cy82c693_remove_one(struct pci_dev *dev)
{
panic("Cypress removal not yet supported");
}
static struct pci_device_id cy82c693_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -450,7 +437,6 @@ static struct pci_driver driver = {
name: "Cypress IDE",
id_table: cy82c693_pci_tbl,
probe: cy82c693_init_one,
remove: __devexit_p(cy82c693_remove_one),
};
static int cy82c693_ide_init(void)
......
......@@ -118,19 +118,6 @@ static int __devinit generic_init_one(struct pci_dev *dev, const struct pci_devi
return 0;
}
/**
* generic_remove_one - called when PCI IDE is unplugged
* @dev: the device that was removed
*
* Disconnect an IDE device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void generic_remove_one(struct pci_dev *dev)
{
panic("PCI IDE removal not yet supported");
}
static struct pci_device_id generic_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_87410, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_PCTECH, PCI_DEVICE_ID_PCTECH_SAMURAI_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -148,7 +135,6 @@ static struct pci_driver driver = {
name: "PCI IDE",
id_table: generic_pci_tbl,
probe: generic_init_one,
remove: __devexit_p(generic_remove_one),
};
static int generic_ide_init(void)
......
......@@ -337,19 +337,6 @@ static int __devinit hpt34x_init_one(struct pci_dev *dev, const struct pci_devic
return 0;
}
/**
* hpt34x_remove_one - called with an hpt34x is unplugged
* @dev: the device that was removed
*
* Disconnect an hpt34x device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void hpt34x_remove_one(struct pci_dev *dev)
{
panic("hpt34x removal not yet supported");
}
static struct pci_device_id hpt34x_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT343, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -359,7 +346,6 @@ static struct pci_driver driver = {
name: "HPT34x IDE",
id_table: hpt34x_pci_tbl,
probe: hpt34x_init_one,
remove: __devexit_p(hpt34x_remove_one),
};
static int hpt34x_ide_init(void)
......
......@@ -1188,25 +1188,12 @@ static int __devinit hpt366_init_one(struct pci_dev *dev, const struct pci_devic
return 0;
}
/**
* hpt366_remove_one - called when an HPT366 is unplugged
* @dev: the device that was removed
*
* Disconnect a HPT366 device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void hpt366_remove_one(struct pci_dev *dev)
{
panic("HPT366 removal not yet supported");
}
static struct pci_device_id hpt366_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT366, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT372, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
{ PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT302, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
{ PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3},
{ PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT374, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 15},
{ PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT374, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4},
{ 0, },
};
......@@ -1214,7 +1201,6 @@ static struct pci_driver driver = {
name: "HPT366 IDE",
id_table: hpt366_pci_tbl,
probe: hpt366_init_one,
remove: __devexit_p(hpt366_remove_one),
};
static int hpt366_ide_init(void)
......
......@@ -308,19 +308,6 @@ static int __devinit it8172_init_one(struct pci_dev *dev, const struct pci_devic
return 0;
}
/**
* it8172_remove_one - called with an IT8172 is unplugged
* @dev: the device that was removed
*
* Disconnect an IT8172 device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void it8172_remove_one(struct pci_dev *dev)
{
panic("IT8172 removal not yet supported");
}
static struct pci_device_id it8172_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_IT8172G, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -330,7 +317,6 @@ static struct pci_driver driver = {
name: "IT8172IDE",
id_table: it8172_pci_tbl,
probe: it8172_init_one,
remove: __devexit_p(it8172_remove_one),
};
static int it8172_ide_init(void)
......
......@@ -239,19 +239,6 @@ static int __devinit ns87415_init_one(struct pci_dev *dev, const struct pci_devi
return 0;
}
/**
* ns87415_remove_one - called with an NS87415 is unplugged
* @dev: the device that was removed
*
* Disconnect an NS87415 device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void ns87415_remove_one(struct pci_dev *dev)
{
panic("NS87415 removal not yet supported");
}
static struct pci_device_id ns87415_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_87415, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -261,7 +248,6 @@ static struct pci_driver driver = {
name: "NS87415IDE",
id_table: ns87415_pci_tbl,
probe: ns87415_init_one,
remove: __devexit_p(ns87415_remove_one),
};
static int ns87415_ide_init(void)
......
......@@ -346,19 +346,6 @@ static int __devinit nforce_init_one(struct pci_dev *dev, const struct pci_devic
return 0;
}
/**
* nforce_remove_one - called with an nForce is unplugged
* @dev: the device that was removed
*
* Disconnect an nForce device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void nforce_remove_one(struct pci_dev *dev)
{
panic("nForce removal not yet supported");
}
static struct pci_device_id nforce_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -368,7 +355,6 @@ static struct pci_driver driver = {
name: "nForce IDE",
id_table: nforce_pci_tbl,
probe: nforce_init_one,
remove: __devexit_p(nforce_remove_one),
};
static int nforce_ide_init(void)
......
......@@ -373,19 +373,6 @@ static int __devinit opti621_init_one(struct pci_dev *dev, const struct pci_devi
return 0;
}
/**
* opti621_remove_one - called with an Opti621 is unplugged
* @dev: the device that was removed
*
* Disconnect an Opti621 device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void opti621_remove_one(struct pci_dev *dev)
{
panic("Opti621 removal not yet supported");
}
static struct pci_device_id opti621_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C621, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -396,7 +383,6 @@ static struct pci_driver driver = {
name: "Opti621 IDE",
id_table: opti621_pci_tbl,
probe: opti621_init_one,
remove: __devexit_p(opti621_remove_one),
};
static int opti621_ide_init(void)
......
#ifndef PDC202XX_H
#define PDC202XX_H
#include <linux/config.h>
#include <linux/pci.h>
#include <linux/ide.h>
#define DISPLAY_PDC202XX_TIMINGS
#ifndef SPLIT_BYTE
#define SPLIT_BYTE(B,H,L) ((H)=(B>>4), (L)=(B-((B>>4)<<4)))
#endif
#define PDC202XX_DEBUG_DRIVE_INFO 0
#define PDC202XX_DECODE_REGISTER_INFO 0
const char *pdc_quirk_drives[] = {
"QUANTUM FIREBALLlct08 08",
"QUANTUM FIREBALLP KA6.4",
"QUANTUM FIREBALLP KA9.1",
"QUANTUM FIREBALLP LM20.4",
"QUANTUM FIREBALLP KX13.6",
"QUANTUM FIREBALLP KX20.5",
"QUANTUM FIREBALLP KX27.3",
"QUANTUM FIREBALLP LM20.5",
NULL
};
static inline u8 *pdc202xx_pio_verbose (u32 drive_pci)
{
if ((drive_pci & 0x000ff000) == 0x000ff000) return("NOTSET");
if ((drive_pci & 0x00000401) == 0x00000401) return("PIO 4");
if ((drive_pci & 0x00000602) == 0x00000602) return("PIO 3");
if ((drive_pci & 0x00000803) == 0x00000803) return("PIO 2");
if ((drive_pci & 0x00000C05) == 0x00000C05) return("PIO 1");
if ((drive_pci & 0x00001309) == 0x00001309) return("PIO 0");
return("PIO ?");
}
static inline u8 *pdc202xx_dma_verbose (u32 drive_pci)
{
if ((drive_pci & 0x00036000) == 0x00036000) return("MWDMA 2");
if ((drive_pci & 0x00046000) == 0x00046000) return("MWDMA 1");
if ((drive_pci & 0x00056000) == 0x00056000) return("MWDMA 0");
if ((drive_pci & 0x00056000) == 0x00056000) return("SWDMA 2");
if ((drive_pci & 0x00068000) == 0x00068000) return("SWDMA 1");
if ((drive_pci & 0x000BC000) == 0x000BC000) return("SWDMA 0");
return("PIO---");
}
static inline u8 *pdc202xx_ultra_verbose (u32 drive_pci, u16 slow_cable)
{
if ((drive_pci & 0x000ff000) == 0x000ff000)
return("NOTSET");
if ((drive_pci & 0x00012000) == 0x00012000)
return((slow_cable) ? "UDMA 2" : "UDMA 4");
if ((drive_pci & 0x00024000) == 0x00024000)
return((slow_cable) ? "UDMA 1" : "UDMA 3");
if ((drive_pci & 0x00036000) == 0x00036000)
return("UDMA 0");
return(pdc202xx_dma_verbose(drive_pci));
}
/* A Register */
#define SYNC_ERRDY_EN 0xC0
#define SYNC_IN 0x80 /* control bit, different for master vs. slave drives */
#define ERRDY_EN 0x40 /* control bit, different for master vs. slave drives */
#define IORDY_EN 0x20 /* PIO: IOREADY */
#define PREFETCH_EN 0x10 /* PIO: PREFETCH */
#define PA3 0x08 /* PIO"A" timing */
#define PA2 0x04 /* PIO"A" timing */
#define PA1 0x02 /* PIO"A" timing */
#define PA0 0x01 /* PIO"A" timing */
/* B Register */
#define MB2 0x80 /* DMA"B" timing */
#define MB1 0x40 /* DMA"B" timing */
#define MB0 0x20 /* DMA"B" timing */
#define PB4 0x10 /* PIO_FORCE 1:0 */
#define PB3 0x08 /* PIO"B" timing */ /* PIO flow Control mode */
#define PB2 0x04 /* PIO"B" timing */ /* PIO 4 */
#define PB1 0x02 /* PIO"B" timing */ /* PIO 3 half */
#define PB0 0x01 /* PIO"B" timing */ /* PIO 3 other half */
/* C Register */
#define IORDYp_NO_SPEED 0x4F
#define SPEED_DIS 0x0F
#define DMARQp 0x80
#define IORDYp 0x40
#define DMAR_EN 0x20
#define DMAW_EN 0x10
#define MC3 0x08 /* DMA"C" timing */
#define MC2 0x04 /* DMA"C" timing */
#define MC1 0x02 /* DMA"C" timing */
#define MC0 0x01 /* DMA"C" timing */
#if PDC202XX_DECODE_REGISTER_INFO
#define REG_A 0x01
#define REG_B 0x02
#define REG_C 0x04
#define REG_D 0x08
static void decode_registers (u8 registers, u8 value)
{
u8 bit = 0, bit1 = 0, bit2 = 0;
switch(registers) {
case REG_A:
bit2 = 0;
printk("A Register ");
if (value & 0x80) printk("SYNC_IN ");
if (value & 0x40) printk("ERRDY_EN ");
if (value & 0x20) printk("IORDY_EN ");
if (value & 0x10) printk("PREFETCH_EN ");
if (value & 0x08) { printk("PA3 ");bit2 |= 0x08; }
if (value & 0x04) { printk("PA2 ");bit2 |= 0x04; }
if (value & 0x02) { printk("PA1 ");bit2 |= 0x02; }
if (value & 0x01) { printk("PA0 ");bit2 |= 0x01; }
printk("PIO(A) = %d ", bit2);
break;
case REG_B:
bit1 = 0;bit2 = 0;
printk("B Register ");
if (value & 0x80) { printk("MB2 ");bit1 |= 0x80; }
if (value & 0x40) { printk("MB1 ");bit1 |= 0x40; }
if (value & 0x20) { printk("MB0 ");bit1 |= 0x20; }
printk("DMA(B) = %d ", bit1 >> 5);
if (value & 0x10) printk("PIO_FORCED/PB4 ");
if (value & 0x08) { printk("PB3 ");bit2 |= 0x08; }
if (value & 0x04) { printk("PB2 ");bit2 |= 0x04; }
if (value & 0x02) { printk("PB1 ");bit2 |= 0x02; }
if (value & 0x01) { printk("PB0 ");bit2 |= 0x01; }
printk("PIO(B) = %d ", bit2);
break;
case REG_C:
bit2 = 0;
printk("C Register ");
if (value & 0x80) printk("DMARQp ");
if (value & 0x40) printk("IORDYp ");
if (value & 0x20) printk("DMAR_EN ");
if (value & 0x10) printk("DMAW_EN ");
if (value & 0x08) { printk("MC3 ");bit2 |= 0x08; }
if (value & 0x04) { printk("MC2 ");bit2 |= 0x04; }
if (value & 0x02) { printk("MC1 ");bit2 |= 0x02; }
if (value & 0x01) { printk("MC0 ");bit2 |= 0x01; }
printk("DMA(C) = %d ", bit2);
break;
case REG_D:
printk("D Register ");
break;
default:
return;
}
printk("\n %s ", (registers & REG_D) ? "DP" :
(registers & REG_C) ? "CP" :
(registers & REG_B) ? "BP" :
(registers & REG_A) ? "AP" : "ERROR");
for (bit=128;bit>0;bit/=2)
printk("%s", (value & bit) ? "1" : "0");
printk("\n");
}
#endif /* PDC202XX_DECODE_REGISTER_INFO */
#define set_2regs(a, b) \
do { \
hwif->OUTB((a + adj), indexreg); \
hwif->OUTB(b, datareg); \
} while(0)
#define set_ultra(a, b, c) \
do { \
set_2regs(0x10,(a)); \
set_2regs(0x11,(b)); \
set_2regs(0x12,(c)); \
} while(0)
#define set_ata2(a, b) \
do { \
set_2regs(0x0e,(a)); \
set_2regs(0x0f,(b)); \
} while(0)
#define set_pio(a, b, c) \
do { \
set_2regs(0x0c,(a)); \
set_2regs(0x0d,(b)); \
set_2regs(0x13,(c)); \
} while(0)
#define DISPLAY_PDC202XX_TIMINGS
#if defined(DISPLAY_PDC202XX_TIMINGS) && defined(CONFIG_PROC_FS)
#include <linux/stat.h>
#include <linux/proc_fs.h>
static u8 pdc202xx_proc;
static int pdc202xx_get_info(char *, char **, off_t, int);
static ide_pci_host_proc_t pdc202xx_procs[] __initdata = {
{
name: "pdc202xx",
set: 1,
get_info: pdc202xx_get_info,
parent: NULL,
},
};
#endif /* DISPLAY_PDC202XX_TIMINGS && CONFIG_PROC_FS */
static void init_setup_pdc202ata4(struct pci_dev *dev, ide_pci_device_t *d);
static void init_setup_pdc20265(struct pci_dev *, ide_pci_device_t *);
static void init_setup_pdc202xx(struct pci_dev *, ide_pci_device_t *);
static void init_setup_pdc20270(struct pci_dev *, ide_pci_device_t *);
static void init_setup_pdc20276(struct pci_dev *dev, ide_pci_device_t *d);
static unsigned int init_chipset_pdc202xx(struct pci_dev *, const char *);
static void init_hwif_pdc202xx(ide_hwif_t *);
static void init_hwif_pdc202new(ide_hwif_t *);
static void init_dma_pdc202xx(ide_hwif_t *, unsigned long);
static void init_dma_pdc202new(ide_hwif_t *, unsigned long);
static ide_pci_device_t pdc202xx_chipsets[] __initdata = {
{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20246,
name: "PDC20246",
init_setup: init_setup_pdc202ata4,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202xx,
init_dma: init_dma_pdc202xx,
channels: 2,
autodma: AUTODMA,
#ifdef CONFIG_PDC202XX_FORCE
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
#else /* !CONFIG_PDC202XX_FORCE */
enablebits: {{0x50,0x02,0x02}, {0x50,0x04,0x04}},
#endif
bootable: OFF_BOARD,
extra: 16,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20262,
name: "PDC20262",
init_setup: init_setup_pdc202ata4,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202xx,
init_dma: init_dma_pdc202xx,
channels: 2,
autodma: AUTODMA,
#ifdef CONFIG_PDC202XX_FORCE
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
#else /* !CONFIG_PDC202XX_FORCE */
enablebits: {{0x50,0x02,0x02}, {0x50,0x04,0x04}},
#endif
bootable: OFF_BOARD,
extra: 48,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20263,
name: "PDC20263",
init_setup: init_setup_pdc202ata4,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202xx,
init_dma: init_dma_pdc202xx,
channels: 2,
autodma: AUTODMA,
#ifdef CONFIG_PDC202XX_FORCE
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
#else /* !CONFIG_PDC202XX_FORCE */
enablebits: {{0x50,0x02,0x02}, {0x50,0x04,0x04}},
#endif
bootable: OFF_BOARD,
extra: 48,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20265,
name: "PDC20265",
init_setup: init_setup_pdc20265,
init_chipset: init_chipset_pdc202xx,
init_hwif: init_hwif_pdc202xx,
init_dma: init_dma_pdc202xx,
channels: 2,
autodma: AUTODMA,
#ifdef CONFIG_PDC202XX_FORCE
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
#else /* !CONFIG_PDC202XX_FORCE */
enablebits: {{0x50,0x02,0x02}, {0x50,0x04,0x04}},
#endif
bootable: OFF_BOARD,
extra: 48,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20267,
name: "PDC20267",
init_setup: init_setup_pdc202xx,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202xx,
init_dma: init_dma_pdc202xx,
channels: 2,
autodma: AUTODMA,
#ifdef CONFIG_PDC202XX_FORCE
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
#else /* !CONFIG_PDC202XX_FORCE */
enablebits: {{0x50,0x02,0x02}, {0x50,0x04,0x04}},
#endif
bootable: OFF_BOARD,
extra: 48,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20268,
name: "PDC20268",
init_setup: init_setup_pdc202xx,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202new,
init_dma: init_dma_pdc202new,
channels: 2,
autodma: AUTODMA,
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
bootable: OFF_BOARD,
extra: 0,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20269,
name: "PDC20269",
init_setup: init_setup_pdc202xx,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202new,
init_dma: init_dma_pdc202new,
channels: 2,
autodma: AUTODMA,
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
bootable: OFF_BOARD,
extra: 0,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20270,
name: "PDC20270",
init_setup: init_setup_pdc20270,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202new,
init_dma: init_dma_pdc202new,
channels: 2,
autodma: AUTODMA,
#ifdef CONFIG_PDC202XX_FORCE
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
#else /* !CONFIG_PDC202XX_FORCE */
enablebits: {{0x50,0x02,0x02}, {0x50,0x04,0x04}},
#endif
bootable: OFF_BOARD,
extra: 0,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20271,
name: "PDC20271",
init_setup: init_setup_pdc202xx,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202new,
init_dma: init_dma_pdc202new,
channels: 2,
autodma: AUTODMA,
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
bootable: OFF_BOARD,
extra: 0,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20275,
name: "PDC20275",
init_setup: init_setup_pdc202xx,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202new,
init_dma: init_dma_pdc202new,
channels: 2,
autodma: AUTODMA,
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
bootable: OFF_BOARD,
extra: 0,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20276,
name: "PDC20276",
init_setup: init_setup_pdc20276,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202new,
init_dma: init_dma_pdc202new,
channels: 2,
autodma: AUTODMA,
#ifdef CONFIG_PDC202XX_FORCE
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
#else /* !CONFIG_PDC202XX_FORCE */
enablebits: {{0x50,0x02,0x02}, {0x50,0x04,0x04}},
#endif
bootable: OFF_BOARD,
extra: 0,
},{
vendor: PCI_VENDOR_ID_PROMISE,
device: PCI_DEVICE_ID_PROMISE_20277,
name: "PDC20277",
init_setup: init_setup_pdc202xx,
init_chipset: init_chipset_pdc202xx,
init_iops: NULL,
init_hwif: init_hwif_pdc202new,
init_dma: init_dma_pdc202new,
channels: 2,
autodma: AUTODMA,
enablebits: {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
bootable: OFF_BOARD,
extra: 0,
},{
vendor: 0,
device: 0,
channels: 0,
bootable: EOL,
}
};
#endif /* PDC202XX_H */
......@@ -666,19 +666,6 @@ static int __devinit pdc202new_init_one(struct pci_dev *dev, const struct pci_de
return 0;
}
/**
* pdc202new_remove_one - called when a pdc202xx is unplugged
* @dev: the device that was removed
*
* Disconnect an IDE device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void pdc202new_remove_one(struct pci_dev *dev)
{
panic("Promise IDE removal not yet supported");
}
static struct pci_device_id pdc202new_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20268, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20269, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -694,7 +681,6 @@ static struct pci_driver driver = {
name: "Promise IDE",
id_table: pdc202new_pci_tbl,
probe: pdc202new_init_one,
remove: __devexit_p(pdc202new_remove_one),
};
static int pdc202new_ide_init(void)
......
......@@ -938,19 +938,6 @@ static int __devinit pdc202xx_init_one(struct pci_dev *dev, const struct pci_dev
return 0;
}
/**
* pdc202xx_remove_one - called with the IDE to be unplugged
* @dev: the device that was removed
*
* Disconnect an IDE device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void pdc202xx_remove_one(struct pci_dev *dev)
{
panic("Promise IDE removal not yet supported");
}
static struct pci_device_id pdc202xx_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20246, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20262, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -964,7 +951,6 @@ static struct pci_driver driver = {
name: "Promise Old IDE",
id_table: pdc202xx_pci_tbl,
probe: pdc202xx_init_one,
remove: __devexit_p(pdc202xx_remove_one),
};
static int pdc202xx_ide_init(void)
......
......@@ -136,19 +136,6 @@ static int __devinit pdcadma_init_one(struct pci_dev *dev, const struct pci_devi
return 1;
}
/**
* pdcadma_remove_one - called when a PDCADMA is unplugged
* @dev: the device that was removed
*
* Disconnect a PDCADMA device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void pdcadma_remove_one(struct pci_dev *dev)
{
panic("PDCADMA removal not yet supported");
}
static struct pci_device_id pdcadma_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_PDC, PCI_DEVICE_ID_PDC_1841, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -158,7 +145,6 @@ static struct pci_driver driver = {
name: "PDCADMA-IDE",
id_table: pdcadma_pci_tbl,
probe: pdcadma_init_one,
remove: __devexit_p(pdcadma_remove_one),
};
static int pdcadma_ide_init(void)
......
......@@ -683,19 +683,6 @@ static int __devinit piix_init_one(struct pci_dev *dev, const struct pci_device_
return 0;
}
/**
* piix_remove_one - called with a PIIX is unplugged
* @dev: the device that was removed
*
* Disconnect a PIIX device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void piix_remove_one(struct pci_dev *dev)
{
panic("PIIX removal not yet supported");
}
static struct pci_device_id piix_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371FB_0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371FB_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -720,7 +707,6 @@ static struct pci_driver driver = {
name: "PIIX IDE",
id_table: piix_pci_tbl,
probe: piix_init_one,
remove: __devexit_p(piix_remove_one),
};
static int piix_ide_init(void)
......
......@@ -65,19 +65,6 @@ static int __devinit rz1000_init_one(struct pci_dev *dev, const struct pci_devic
return 0;
}
/**
* rz1000_remove_one - called with an RZ1000 is unplugged
* @dev: the device that was removed
*
* Disconnect an RZ1000 device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void rz1000_remove_one(struct pci_dev *dev)
{
panic("RZ1000 removal not yet supported");
}
static struct pci_device_id rz1000_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_PCTECH, PCI_DEVICE_ID_PCTECH_RZ1000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_PCTECH, PCI_DEVICE_ID_PCTECH_RZ1001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -88,7 +75,6 @@ static struct pci_driver driver = {
name: "RZ1000 IDE",
id_table: rz1000_pci_tbl,
probe: rz1000_init_one,
remove: __devexit_p(rz1000_remove_one),
};
static int rz1000_ide_init(void)
......
......@@ -787,19 +787,6 @@ static int __devinit svwks_init_one(struct pci_dev *dev, const struct pci_device
return 0;
}
/**
* svwks_remove_one - called when an OSB/CSB is unplugged
* @dev: the device that was removed
*
* Disconnect a SVWKS device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void svwks_remove_one(struct pci_dev *dev)
{
panic("SVWKS removal not yet supported");
}
static struct pci_device_id svwks_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_OSB4IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -812,7 +799,6 @@ static struct pci_driver driver = {
name: "Serverworks IDE",
id_table: svwks_pci_tbl,
probe: svwks_init_one,
remove: __devexit_p(svwks_remove_one),
#if 0 /* FIXME: implement */
suspend: ,
resume: ,
......
......@@ -847,19 +847,6 @@ static int __devinit siimage_init_one(struct pci_dev *dev, const struct pci_devi
return 0;
}
/**
* siimage_remove_one - called when an SI IDE is unplugged
* @dev: the device that was removed
*
* Disconnect an IDE device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void siimage_remove_one(struct pci_dev *dev)
{
panic("SiImage IDE removal not yet supported");
}
static struct pci_device_id siimage_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_SII_680, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_SII_3112, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -870,7 +857,6 @@ static struct pci_driver driver = {
name: "SiI IDE",
id_table: siimage_pci_tbl,
probe: siimage_init_one,
remove: __devexit_p(siimage_remove_one),
};
static int siimage_ide_init(void)
......
......@@ -1033,19 +1033,6 @@ static int __devinit sis5513_init_one(struct pci_dev *dev, const struct pci_devi
return 0;
}
/**
* sis5513_remove_one - called when SIS IDE is unplugged
* @dev: the device that was removed
*
* Disconnect a SIS IDE device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void sis5513_remove_one(struct pci_dev *dev)
{
panic("SIS IDE removal not yet supported");
}
static struct pci_device_id sis5513_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5513, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -1055,7 +1042,6 @@ static struct pci_driver driver = {
name: "SIS IDE",
id_table: sis5513_pci_tbl,
probe: sis5513_init_one,
remove: __devexit_p(sis5513_remove_one),
};
static int sis5513_ide_init(void)
......
......@@ -291,19 +291,6 @@ static int __devinit sl82c105_init_one(struct pci_dev *dev, const struct pci_dev
return 0;
}
/**
* sl82c105_remove_one - called with an SLC82c105 is unplugged
* @dev: the device that was removed
*
* Disconnect an W82C105 device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void sl82c105_remove_one(struct pci_dev *dev)
{
panic("W82C105 removal not yet supported");
}
static struct pci_device_id sl82c105_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -313,7 +300,6 @@ static struct pci_driver driver = {
name: "W82C105 IDE",
id_table: sl82c105_pci_tbl,
probe: sl82c105_init_one,
remove: __devexit_p(sl82c105_remove_one),
};
static int sl82c105_ide_init(void)
......
......@@ -375,19 +375,6 @@ static int __devinit slc90e66_init_one(struct pci_dev *dev, const struct pci_dev
return 0;
}
/**
* slc90e66_remove_one - called with an slc90e66 is unplugged
* @dev: the device that was removed
*
* Disconnect an slc90e66 device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void slc90e66_remove_one(struct pci_dev *dev)
{
panic("slc90e66 removal not yet supported");
}
static struct pci_device_id slc90e66_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_EFAR, PCI_DEVICE_ID_EFAR_SLC90E66_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -397,7 +384,6 @@ static struct pci_driver driver = {
name: "SLC90e66 IDE",
id_table: slc90e66_pci_tbl,
probe: slc90e66_init_one,
remove: __devexit_p(slc90e66_remove_one),
};
static int slc90e66_ide_init(void)
......
......@@ -406,19 +406,6 @@ static int __devinit trm290_init_one(struct pci_dev *dev, const struct pci_devic
return 0;
}
/**
* trm290_remove_one - called when an trm290 is unplugged
* @dev: the device that was removed
*
* Disconnect a trm290 device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void trm290_remove_one(struct pci_dev *dev)
{
panic("trm290 removal not yet supported");
}
static struct pci_device_id trm290_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_TEKRAM, PCI_DEVICE_ID_TEKRAM_DC290, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ 0, },
......@@ -428,7 +415,6 @@ static struct pci_driver driver = {
name: "TRM290 IDE",
id_table: trm290_pci_tbl,
probe: trm290_init_one,
remove: __devexit_p(trm290_remove_one),
};
static int trm290_ide_init(void)
......
......@@ -644,19 +644,6 @@ static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_i
return 0;
}
/**
* via_remove_one - called with a VIA IDE interface is unplugged
* @dev: the device that was removed
*
* Disconnect a VIA IDE device that has been unplugged either by hotplug
* or by a more civilized notification scheme. Not yet supported.
*/
static void via_remove_one(struct pci_dev *dev)
{
panic("VIA IDE removal not yet supported");
}
static struct pci_device_id via_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
......@@ -667,7 +654,6 @@ static struct pci_driver driver = {
name: "VIA IDE",
id_table: via_pci_tbl,
probe: via_init_one,
remove: __devexit_p(via_remove_one),
};
static int via_ide_init(void)
......
......@@ -1018,7 +1018,6 @@ static int ntfs_prepare_nonresident_write(struct page *page,
ntfs_volume *vol;
run_list_element *rl;
struct buffer_head *bh, *head, *wait[2], **wait_bh = wait;
char *kaddr = page_address(page);
unsigned int vcn_ofs, block_start, block_end, blocksize;
int err;
BOOL is_retry;
......@@ -1267,13 +1266,20 @@ static int ntfs_prepare_nonresident_write(struct page *page,
* region. NOTE: This is how we decide if to
* zero or not!
*/
if (block_end > to)
memset(kaddr + to, 0, block_end - to);
if (block_start < from)
memset(kaddr + block_start, 0,
from - block_start);
if (block_end > to || block_start < from)
if (block_end > to || block_start < from) {
void *kaddr;
kaddr = kmap_atomic(page, KM_USER0);
if (block_end > to)
memset(kaddr + to, 0,
block_end - to);
if (block_start < from)
memset(kaddr + block_start, 0,
from -
block_start);
flush_dcache_page(page);
kunmap_atomic(kaddr, KM_USER0);
}
continue;
}
}
......@@ -1330,10 +1336,14 @@ static int ntfs_prepare_nonresident_write(struct page *page,
if (block_start >= to)
break;
if (buffer_new(bh)) {
void *kaddr;
clear_buffer_new(bh);
if (buffer_uptodate(bh))
buffer_error();
kaddr = kmap_atomic(page, KM_USER0);
memset(kaddr + block_start, 0, bh->b_size);
kunmap_atomic(kaddr, KM_USER0);
set_buffer_uptodate(bh);
mark_buffer_dirty(bh);
is_retry = TRUE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment