Re: [PATCH] PROMISE 20265 support

From: Andre Hedrick (andre@linux-ide.org)
Date: Wed Jul 26 2000 - 00:27:18 EST


On Tue, 25 Jul 2000, ISHIKAWA Mutsumi wrote:

> Hi, Linux IDE guy,
>
> I've gotten 964D PRO Motherboard. This motherboard have `on board
> UDMA100 connect.' It's contorolled by PDC20265.
>
> But, IDE driver of Linux can't detected this controller, so I wrote
> a patch to use it. I'll happy if apply this for next release :-)

I would be happy if I could patches like this in the kernel myself.
It lookes valid and I know of the chipset.

Good Look on getting it in because I am cut off for now......

> This patch can apply to kernel 2.4.0-test5-pre4 with
> ide.2.4.0-t5-2.all.4c.patch.bz2
>
> Thanks.
>
> --
> ISHIKAWA Mutsumi
> <ishikawa@linux.or.jp>, <ishikawa@debian.org>, <ishikawa@redhat.com>
>
>
>
> diff -x .config -urN linux.orig/Documentation/Configure.help linux/Documentation/Configure.help
> --- linux.orig/Documentation/Configure.help Tue Jul 25 15:31:13 2000
> +++ linux/Documentation/Configure.help Tue Jul 25 16:20:13 2000
> @@ -898,7 +898,7 @@
> CONFIG_BLK_DEV_PDC202XX
> Promise Ultra33 or PDC20246
> Promise Ultra66 or PDC20262
> - Promise Ultra100 or PDC20267
> + Promise Ultra100 or PDC20265/PDC20267
>
> This driver adds up to 4 more EIDE devices sharing a single
> interrupt. This add-on card is a bootable PCI UDMA controller. Since
> @@ -918,11 +918,11 @@
>
> Special UDMA Feature (EXPERIMENTAL)
> CONFIG_PDC202XX_BURST
> - For PDC20246, PDC20262 and PDC20267 Ultra DMA chipsets. Designed
> - originally for PDC20246/Ultra33 that has BIOS setup failures when
> - using 3 or more cards.
> + For PDC20246, PDC20262, PDC20265 and PDC20267 Ultra DMA chipsets.
> + Designed originally for PDC20246/Ultra33 that has BIOS setup
> + failures when using 3 or more cards.
>
> - Unknown for PDC20267 Ultra DMA 100.
> + Unknown for PDC20265/PDC20267 Ultra DMA 100.
>
> Please read the comments at the top of drivers/ide/pdc202xx.c
>
> diff -x .config -urN linux.orig/drivers/ide/ide-pci.c linux/drivers/ide/ide-pci.c
> --- linux.orig/drivers/ide/ide-pci.c Tue Jun 20 23:52:36 2000
> +++ linux/drivers/ide/ide-pci.c Tue Jul 25 15:50:37 2000
> @@ -39,6 +39,7 @@
> #define DEVID_VP_IDE ((ide_pci_devid_t){PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1})
> #define DEVID_PDC20246 ((ide_pci_devid_t){PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20246})
> #define DEVID_PDC20262 ((ide_pci_devid_t){PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20262})
> +#define DEVID_PDC20265 ((ide_pci_devid_t){PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20265})
> #define DEVID_PDC20267 ((ide_pci_devid_t){PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20267})
> #define DEVID_RZ1000 ((ide_pci_devid_t){PCI_VENDOR_ID_PCTECH, PCI_DEVICE_ID_PCTECH_RZ1000})
> #define DEVID_RZ1001 ((ide_pci_devid_t){PCI_VENDOR_ID_PCTECH, PCI_DEVICE_ID_PCTECH_RZ1001})
> @@ -318,6 +319,7 @@
> {DEVID_VP_IDE, "VP_IDE", PCI_VIA82CXXX, ATA66_VIA82CXXX,INIT_VIA82CXXX, DMA_VIA82CXXX, {{0x40,0x02,0x02}, {0x40,0x01,0x01}}, ON_BOARD, 0 },
> {DEVID_PDC20246,"PDC20246", PCI_PDC202XX, NULL, INIT_PDC202XX, NULL, {{0x50,0x02,0x02}, {0x50,0x04,0x04}}, OFF_BOARD, 16 },
> {DEVID_PDC20262,"PDC20262", PCI_PDC202XX, ATA66_PDC202XX, INIT_PDC202XX, NULL, {{0x50,0x02,0x02}, {0x50,0x04,0x04}}, OFF_BOARD, 48 },
> + {DEVID_PDC20265,"PDC20265", PCI_PDC202XX, ATA66_PDC202XX, INIT_PDC202XX, NULL, {{0x50,0x02,0x02}, {0x50,0x04,0x04}}, OFF_BOARD, 48 },
> {DEVID_PDC20267,"PDC20267", PCI_PDC202XX, ATA66_PDC202XX, INIT_PDC202XX, NULL, {{0x50,0x02,0x02}, {0x50,0x04,0x04}}, OFF_BOARD, 48 },
> {DEVID_RZ1000, "RZ1000", NULL, NULL, INIT_RZ1000, NULL, {{0x00,0x00,0x00}, {0x00,0x00,0x00}}, ON_BOARD, 0 },
> {DEVID_RZ1001, "RZ1001", NULL, NULL, INIT_RZ1000, NULL, {{0x00,0x00,0x00}, {0x00,0x00,0x00}}, ON_BOARD, 0 },
> @@ -362,6 +364,7 @@
> case PCI_DEVICE_ID_TTI_HPT366:
> case PCI_DEVICE_ID_PROMISE_20246:
> case PCI_DEVICE_ID_PROMISE_20262:
> + case PCI_DEVICE_ID_PROMISE_20265:
> case PCI_DEVICE_ID_PROMISE_20267:
> case PCI_DEVICE_ID_ARTOP_ATP850UF:
> case PCI_DEVICE_ID_ARTOP_ATP860:
> @@ -633,6 +636,7 @@
> hwif->autodma = 1;
> if (IDE_PCI_DEVID_EQ(d->devid, DEVID_PDC20246) ||
> IDE_PCI_DEVID_EQ(d->devid, DEVID_PDC20262) ||
> + IDE_PCI_DEVID_EQ(d->devid, DEVID_PDC20265) ||
> IDE_PCI_DEVID_EQ(d->devid, DEVID_PDC20267) ||
> IDE_PCI_DEVID_EQ(d->devid, DEVID_AEC6210) ||
> IDE_PCI_DEVID_EQ(d->devid, DEVID_AEC6260) ||
> diff -x .config -urN linux.orig/drivers/ide/pdc202xx.c linux/drivers/ide/pdc202xx.c
> --- linux.orig/drivers/ide/pdc202xx.c Tue Jul 25 15:30:49 2000
> +++ linux/drivers/ide/pdc202xx.c Tue Jul 25 15:46:53 2000
> @@ -142,6 +142,9 @@
> case PCI_DEVICE_ID_PROMISE_20267:
> p += sprintf(p, "\n PDC20267 Chipset.\n");
> break;
> + case PCI_DEVICE_ID_PROMISE_20265:
> + p += sprintf(p, "\n PDC20265 Chipset.\n");
> + break;
> case PCI_DEVICE_ID_PROMISE_20262:
> p += sprintf(p, "\n PDC20262 Chipset.\n");
> break;
> @@ -516,7 +519,7 @@
> byte CLKSPD = IN_BYTE(high_16 + 0x11);
> byte udma_33 = ultra ? (inb(high_16 + 0x001f) & 1) : 0;
> byte udma_66 = ((eighty_ninty_three(drive)) && udma_33) ? 1 : 0;
> - byte udma_100 = ((dev->device == PCI_DEVICE_ID_PROMISE_20267) && udma_66) ? 1 : 0;
> + byte udma_100 = (((dev->device == PCI_DEVICE_ID_PROMISE_20265) || (dev->device == PCI_DEVICE_ID_PROMISE_20267)) && udma_66) ? 1 : 0;
>
> /*
> * Set the control register to use the 66Mhz system
> @@ -762,6 +765,7 @@
> byte secondary_mode = inb(high_16 + 0x001b);
>
> if ((dev->device == PCI_DEVICE_ID_PROMISE_20262) ||
> + (dev->device == PCI_DEVICE_ID_PROMISE_20265) ||
> (dev->device == PCI_DEVICE_ID_PROMISE_20267)) {
> int i = 0;
> /*
> @@ -791,7 +795,7 @@
> byte irq = 0, irq2 = 0;
> pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
> pci_read_config_byte(dev, (PCI_INTERRUPT_LINE)|0x80, &irq2); /* 0xbc */
> - if ((irq != irq2) && (dev->device != PCI_DEVICE_ID_PROMISE_20267)) {
> + if ((irq != irq2) && (dev->device != PCI_DEVICE_ID_PROMISE_20265) && (dev->device != PCI_DEVICE_ID_PROMISE_20267)) {
> pci_write_config_byte(dev, (PCI_INTERRUPT_LINE)|0x80, irq); /* 0xbc */
> printk("%s: pci-config space interrupt mirror fixed.\n", name);
> }
> @@ -855,6 +859,7 @@
> hwif->quirkproc = &pdc202xx_quirkproc;
>
> if ((hwif->pci_dev->device == PCI_DEVICE_ID_PROMISE_20262) ||
> + (hwif->pci_dev->device == PCI_DEVICE_ID_PROMISE_20265) ||
> (hwif->pci_dev->device == PCI_DEVICE_ID_PROMISE_20267))
> hwif->resetproc = &pdc202xx_reset;
>
> diff -x .config -urN linux.orig/include/linux/pci_ids.h linux/include/linux/pci_ids.h
> --- linux.orig/include/linux/pci_ids.h Thu Jul 13 08:24:33 2000
> +++ linux/include/linux/pci_ids.h Tue Jul 25 15:41:24 2000
> @@ -421,6 +421,7 @@
>
> #define PCI_VENDOR_ID_PROMISE 0x105a
> #define PCI_DEVICE_ID_PROMISE_20267 0x4d30
> +#define PCI_DEVICE_ID_PROMISE_20265 0x0d30
> #define PCI_DEVICE_ID_PROMISE_20246 0x4d33
> #define PCI_DEVICE_ID_PROMISE_20262 0x4d38
> #define PCI_DEVICE_ID_PROMISE_5300 0x5300
>

Andre Hedrick
The Linux ATA/IDE guy

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jul 31 2000 - 21:00:21 EST