[ide] remove broken pdc4030 driver

Sigh, I broke it by accident 16 months ago and nobody has noticed
(I suspect that it was non-functional even earlier).

Additionally, this driver:
* should be converted to use scatterlists
* has verbose debugging enabled by default
* needs hacks all over IDE code
* is guilty of crimes against ide_hwifs[]

Just remove it for now.
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent e13a55b1
......@@ -304,7 +304,7 @@ Summary of ide driver parameters for kernel command line
"ide=reverse" : formerly called to pci sub-system, but now local.
The following are valid ONLY on ide0 (except dc4030), which usually corresponds
The following are valid ONLY on ide0, which usually corresponds
to the first ATA interface found on the particular host, and the defaults for
the base,ctl ports must not be altered.
......@@ -315,7 +315,7 @@ the base,ctl ports must not be altered.
"ide0=qd65xx" : probe/support qd65xx interface
"ide0=ali14xx" : probe/support ali14xx chipsets (ALI M1439/M1443/M1445)
"ide0=umc8672" : probe/support umc8672 chipsets
"idex=dc4030" : probe/support Promise DC4030VL interface
"ide=doubler" : probe/support IDE doublers on Amiga
There may be more options than shown -- use the source, Luke!
......
......@@ -1007,19 +1007,6 @@ config BLK_DEV_HT6560B
See the <file:Documentation/ide.txt> and
<file:drivers/ide/legacy/ht6560b.c> files for more info.
config BLK_DEV_PDC4030
tristate "PROMISE DC4030 support (EXPERIMENTAL)"
depends on BLK_DEV_IDEDISK && EXPERIMENTAL
help
This driver provides support for the secondary IDE interface and
cache of the original Promise IDE chipsets, e.g. DC4030 and DC5030.
It is nothing to do with the later range of Promise UDMA chipsets -
see the PDC_202XX support for these. CD-ROM and TAPE devices are not
supported (and probably never will be since I don't think the cards
support them). This driver is enabled at runtime using the "ide0=dc4030"
or "ide1=dc4030" kernel boot parameter. See the
<file:drivers/ide/legacy/pdc4030.c> file for more info.
config BLK_DEV_QD65XX
tristate "QDI QD65xx support"
help
......
......@@ -71,10 +71,6 @@
#include <asm/io.h>
#include <asm/div64.h>
/* FIXME: some day we shouldn't need to look in here! */
#include "legacy/pdc4030.h"
/*
* lba_capacity_is_ok() performs a sanity check on the claimed "lba_capacity"
* value for this drive (from its reported identification information).
......@@ -863,6 +859,8 @@ static sector_t idedisk_capacity (ide_drive_t *drive)
return drive->capacity64 - drive->sect0;
}
#define IS_PDC4030_DRIVE 0
static ide_startstop_t idedisk_special (ide_drive_t *drive)
{
special_t *s = &drive->special;
......
......@@ -1587,18 +1587,6 @@ int ide_do_drive_cmd (ide_drive_t *drive, struct request *rq, ide_action_t actio
int where = ELEVATOR_INSERT_BACK, err;
int must_wait = (action == ide_wait || action == ide_head_wait);
#ifdef CONFIG_BLK_DEV_PDC4030
/*
* FIXME: there should be a drive or hwif->special
* handler that points here by default, not hacks
* in the ide-io.c code
*
* FIXME2: That code breaks power management if used with
* this chipset, that really doesn't belong here !
*/
if (HWIF(drive)->chipset == ide_pdc4030 && rq->buffer != NULL)
return -ENOSYS; /* special drive cmds not supported */
#endif
rq->errors = 0;
rq->rq_status = RQ_ACTIVE;
......
......@@ -180,12 +180,6 @@ static inline void do_identify (ide_drive_t *drive, u8 cmd)
if (cmd == WIN_PIDENTIFY) {
u8 type = (id->config >> 8) & 0x1f;
printk("ATAPI ");
#ifdef CONFIG_BLK_DEV_PDC4030
if (hwif->channel == 1 && hwif->chipset == ide_pdc4030) {
printk(" -- not supported on 2nd Promise port\n");
goto err_misc;
}
#endif /* CONFIG_BLK_DEV_PDC4030 */
switch (type) {
case ide_floppy:
if (!strstr(id->model, "CD-ROM")) {
......@@ -297,13 +291,9 @@ static int actual_try_to_identify (ide_drive_t *drive, u8 cmd)
/* disable dma & overlap */
hwif->OUTB(0, IDE_FEATURE_REG);
if (hwif->identify != NULL) {
if (hwif->identify(drive))
return 1;
} else {
/* ask drive for ID */
hwif->OUTB(cmd, IDE_COMMAND_REG);
}
/* ask drive for ID */
hwif->OUTB(cmd, IDE_COMMAND_REG);
timeout = ((cmd == WIN_IDENTIFY) ? WAIT_WORSTCASE : WAIT_PIDENTIFY) / 2;
timeout += jiffies;
do {
......@@ -676,9 +666,6 @@ static void probe_hwif(ide_hwif_t *hwif)
return;
if ((hwif->chipset != ide_4drives || !hwif->mate || !hwif->mate->present) &&
#ifdef CONFIG_BLK_DEV_PDC4030
(hwif->chipset != ide_pdc4030 || hwif->channel == 0) &&
#endif /* CONFIG_BLK_DEV_PDC4030 */
(ide_hwif_request_regions(hwif))) {
u16 msgout = 0;
for (unit = 0; unit < MAX_DRIVES; ++unit) {
......
......@@ -314,7 +314,6 @@ static int proc_ide_read_imodel
case ide_qd65xx: name = "qd65xx"; break;
case ide_umc8672: name = "umc8672"; break;
case ide_ht6560b: name = "ht6560b"; break;
case ide_pdc4030: name = "pdc4030"; break;
case ide_rz1000: name = "rz1000"; break;
case ide_trm290: name = "trm290"; break;
case ide_cmd646: name = "cmd646"; break;
......
......@@ -668,7 +668,6 @@ static void ide_hwif_restore(ide_hwif_t *hwif, ide_hwif_t *tmp_hwif)
hwif->cds = tmp_hwif->cds;
#endif
hwif->identify = tmp_hwif->identify;
hwif->tuneproc = tmp_hwif->tuneproc;
hwif->speedproc = tmp_hwif->speedproc;
hwif->selectproc = tmp_hwif->selectproc;
......@@ -1778,9 +1777,6 @@ static int __init match_parm (char *s, const char *keywords[], int vals[], int m
return 0; /* zero = nothing matched */
}
#ifdef CONFIG_BLK_DEV_PDC4030
static int __initdata probe_pdc4030;
#endif
#ifdef CONFIG_BLK_DEV_ALI14XX
static int __initdata probe_ali14xx;
extern int ali14xx_init(void);
......@@ -1949,7 +1945,7 @@ int __init ide_setup (char *s)
"noprobe", "serialize", "autotune", "noautotune",
"reset", "dma", "ata66", "minus8", "minus9",
"minus10", "four", "qd65xx", "ht6560b", "cmd640_vlb",
"dtc2278", "umc8672", "ali14xx", "dc4030", NULL };
"dtc2278", "umc8672", "ali14xx", NULL };
hw = s[3] - '0';
hwif = &ide_hwifs[hw];
i = match_parm(&s[4], ide_words, vals, 3);
......@@ -1975,11 +1971,6 @@ int __init ide_setup (char *s)
}
switch (i) {
#ifdef CONFIG_BLK_DEV_PDC4030
case -18: /* "dc4030" */
probe_pdc4030 = 1;
goto done;
#endif
#ifdef CONFIG_BLK_DEV_ALI14XX
case -17: /* "ali14xx" */
probe_ali14xx = 1;
......@@ -2114,13 +2105,6 @@ static void __init probe_for_hwifs (void)
ide_probe_for_cmd640x();
}
#endif /* CONFIG_BLK_DEV_CMD640 */
#ifdef CONFIG_BLK_DEV_PDC4030
{
extern int pdc4030_init(void);
if (probe_pdc4030)
(void)pdc4030_init();
}
#endif /* CONFIG_BLK_DEV_PDC4030 */
#ifdef CONFIG_BLK_DEV_IDE_PMAC
{
extern void pmac_ide_probe(void);
......
......@@ -2,7 +2,6 @@
obj-$(CONFIG_BLK_DEV_ALI14XX) += ali14xx.o
obj-$(CONFIG_BLK_DEV_DTC2278) += dtc2278.o
obj-$(CONFIG_BLK_DEV_HT6560B) += ht6560b.o
obj-$(CONFIG_BLK_DEV_PDC4030) += pdc4030.o
obj-$(CONFIG_BLK_DEV_QD65XX) += qd65xx.o
obj-$(CONFIG_BLK_DEV_UMC8672) += umc8672.o
......
This diff is collapsed.
/*
* linux/drivers/ide/legacy/pdc4030.h
*
* Copyright (C) 1995-1998 Linus Torvalds & authors
*/
/*
* Principal author: Peter Denison <peterd@pnd-pc.demon.co.uk>
*/
#ifndef IDE_PROMISE_H
#define IDE_PROMISE_H
#include <linux/config.h>
#ifndef CONFIG_BLK_DEV_PDC4030
# ifdef _IDE_DISK
# define IS_PDC4030_DRIVE (0) /* auto-NULLs out pdc4030 code */
ide_startstop_t promise_rw_disk(ide_drive_t *, struct request *, unsigned long);
ide_startstop_t promise_rw_disk(ide_drive_t *drive, struct request *rq, unsigned long block)
{
return ide_stopped;
}
# endif /* _IDE_DISK */
#else /* CONFIG_BLK_DEV_PDC4030 */
# ifdef _IDE_DISK
# define IS_PDC4030_DRIVE (HWIF(drive)->chipset == ide_pdc4030)
ide_startstop_t promise_rw_disk(ide_drive_t *, struct request *, unsigned long);
# endif /* _IDE_DISK */
#endif /* CONFIG_BLK_DEV_PDC4030 */
#ifdef __PROMISE_4030
#define PROMISE_EXTENDED_COMMAND 0xF0
#define PROMISE_READ 0xF2
#define PROMISE_WRITE 0xF3
/* Extended commands - main command code = 0xf0 */
#define PROMISE_GET_CONFIG 0x10
#define PROMISE_IDENTIFY 0x20
struct translation_mode {
u16 cyl;
u8 head;
u8 sect;
};
struct dc_ident {
u8 type;
u8 unknown1;
u8 hw_revision;
u8 firmware_major;
u8 firmware_minor;
u8 bios_address;
u8 irq;
u8 unknown2;
u16 cache_mem;
u16 unknown3;
u8 id[2];
u16 info;
struct translation_mode current_tm[4];
u8 pad[SECTOR_WORDS*4 - 32];
};
#endif /* __PROMISE_4030 */
#endif /* IDE_PROMISE_H */
......@@ -602,7 +602,6 @@ ide_init_sgiioc4(ide_hwif_t * hwif)
hwif->ultra_mask = 0x0; /* Disable Ultra DMA */
hwif->mwdma_mask = 0x2; /* Multimode-2 DMA */
hwif->swdma_mask = 0x2;
hwif->identify = NULL;
hwif->tuneproc = NULL; /* Sets timing for PIO mode */
hwif->speedproc = NULL; /* Sets timing for DMA &/or PIO modes */
hwif->selectproc = NULL;/* Use the default routine to select drive */
......
......@@ -242,7 +242,7 @@ typedef int (ide_ack_intr_t)(struct hwif_s *);
typedef enum { ide_unknown, ide_generic, ide_pci,
ide_cmd640, ide_dtc2278, ide_ali14xx,
ide_qd65xx, ide_umc8672, ide_ht6560b,
ide_pdc4030, ide_rz1000, ide_trm290,
ide_rz1000, ide_trm290,
ide_cmd646, ide_cy82c693, ide_4drives,
ide_pmac, ide_etrax100, ide_acorn,
ide_forced
......@@ -832,8 +832,6 @@ typedef struct hwif_s {
#if 0
ide_hwif_ops_t *hwifops;
#else
/* routine is for HBA specific IDENTITY operations */
int (*identify)(ide_drive_t *);
/* routine to tune PIO mode for drives */
void (*tuneproc)(ide_drive_t *, u8);
/* routine to retune DMA modes for drives */
......
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