Commit 125a4634 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] Add support for SGI's IOC4 chipset

From: Aniket Malatpure <aniket@sgi.com>

Adds support for the IOC4 IDE part.
parent 409c7f3a
...@@ -745,6 +745,14 @@ config BLK_DEV_SVWKS ...@@ -745,6 +745,14 @@ config BLK_DEV_SVWKS
This driver adds PIO/(U)DMA support for the ServerWorks OSB4/CSB5 This driver adds PIO/(U)DMA support for the ServerWorks OSB4/CSB5
chipsets. chipsets.
config BLK_DEV_SGIIOC4
tristate "Silicon Graphics IOC4 chipset support"
depends on IA64_SGI_SN2
help
This driver adds PIO & MultiMode DMA-2 support for the SGI IOC4
chipset, which has one channel and can support two devices.
Please say Y here if you have an Altix System from SGI.
config BLK_DEV_SIIMAGE config BLK_DEV_SIIMAGE
tristate "Silicon Image chipset support" tristate "Silicon Image chipset support"
help help
......
...@@ -214,7 +214,7 @@ static void icside_maskproc(ide_drive_t *drive, int mask) ...@@ -214,7 +214,7 @@ static void icside_maskproc(ide_drive_t *drive, int mask)
#define NR_ENTRIES 256 #define NR_ENTRIES 256
#define TABLE_SIZE (NR_ENTRIES * 8) #define TABLE_SIZE (NR_ENTRIES * 8)
static void ide_build_sglist(ide_drive_t *drive, struct request *rq) static void icside_build_sglist(ide_drive_t *drive, struct request *rq)
{ {
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct icside_state *state = hwif->hwif_data; struct icside_state *state = hwif->hwif_data;
...@@ -543,7 +543,7 @@ icside_dma_common(ide_drive_t *drive, struct request *rq, ...@@ -543,7 +543,7 @@ icside_dma_common(ide_drive_t *drive, struct request *rq,
BUG_ON(hwif->sg_dma_active); BUG_ON(hwif->sg_dma_active);
BUG_ON(dma_channel_active(hwif->hw.dma)); BUG_ON(dma_channel_active(hwif->hw.dma));
ide_build_sglist(drive, rq); icside_build_sglist(drive, rq);
/* /*
* Ensure that we have the right interrupt routed. * Ensure that we have the right interrupt routed.
......
...@@ -201,7 +201,7 @@ EXPORT_SYMBOL_GPL(ide_dma_intr); ...@@ -201,7 +201,7 @@ EXPORT_SYMBOL_GPL(ide_dma_intr);
* operate in a portable fashion * operate in a portable fashion
*/ */
static int ide_build_sglist (ide_drive_t *drive, struct request *rq) int ide_build_sglist(ide_drive_t *drive, struct request *rq)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct scatterlist *sg = hwif->sg_table; struct scatterlist *sg = hwif->sg_table;
...@@ -220,6 +220,8 @@ static int ide_build_sglist (ide_drive_t *drive, struct request *rq) ...@@ -220,6 +220,8 @@ static int ide_build_sglist (ide_drive_t *drive, struct request *rq)
return pci_map_sg(hwif->pci_dev, sg, nents, hwif->sg_dma_direction); return pci_map_sg(hwif->pci_dev, sg, nents, hwif->sg_dma_direction);
} }
EXPORT_SYMBOL_GPL(ide_build_sglist);
/** /**
* ide_raw_build_sglist - map IDE scatter gather for DMA * ide_raw_build_sglist - map IDE scatter gather for DMA
* @drive: the drive to build the DMA table for * @drive: the drive to build the DMA table for
...@@ -231,7 +233,7 @@ static int ide_build_sglist (ide_drive_t *drive, struct request *rq) ...@@ -231,7 +233,7 @@ static int ide_build_sglist (ide_drive_t *drive, struct request *rq)
* operate in a portable fashion * operate in a portable fashion
*/ */
static int ide_raw_build_sglist (ide_drive_t *drive, struct request *rq) int ide_raw_build_sglist(ide_drive_t *drive, struct request *rq)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
struct scatterlist *sg = hwif->sg_table; struct scatterlist *sg = hwif->sg_table;
...@@ -270,6 +272,8 @@ static int ide_raw_build_sglist (ide_drive_t *drive, struct request *rq) ...@@ -270,6 +272,8 @@ static int ide_raw_build_sglist (ide_drive_t *drive, struct request *rq)
return pci_map_sg(hwif->pci_dev, sg, nents, hwif->sg_dma_direction); return pci_map_sg(hwif->pci_dev, sg, nents, hwif->sg_dma_direction);
} }
EXPORT_SYMBOL_GPL(ide_raw_build_sglist);
/** /**
* ide_build_dmatable - build IDE DMA table * ide_build_dmatable - build IDE DMA table
* *
......
...@@ -21,6 +21,7 @@ obj-$(CONFIG_BLK_DEV_PDC202XX_NEW) += pdc202xx_new.o ...@@ -21,6 +21,7 @@ obj-$(CONFIG_BLK_DEV_PDC202XX_NEW) += pdc202xx_new.o
obj-$(CONFIG_BLK_DEV_PIIX) += piix.o obj-$(CONFIG_BLK_DEV_PIIX) += piix.o
obj-$(CONFIG_BLK_DEV_RZ1000) += rz1000.o obj-$(CONFIG_BLK_DEV_RZ1000) += rz1000.o
obj-$(CONFIG_BLK_DEV_SVWKS) += serverworks.o obj-$(CONFIG_BLK_DEV_SVWKS) += serverworks.o
obj-$(CONFIG_BLK_DEV_SGIIOC4) += sgiioc4.o
obj-$(CONFIG_BLK_DEV_SIIMAGE) += siimage.o obj-$(CONFIG_BLK_DEV_SIIMAGE) += siimage.o
obj-$(CONFIG_BLK_DEV_SIS5513) += sis5513.o obj-$(CONFIG_BLK_DEV_SIS5513) += sis5513.o
obj-$(CONFIG_BLK_DEV_SL82C105) += sl82c105.o obj-$(CONFIG_BLK_DEV_SL82C105) += sl82c105.o
......
This diff is collapsed.
...@@ -1693,6 +1693,8 @@ extern void ide_setup_pci_devices(struct pci_dev *, struct pci_dev *, ide_pci_de ...@@ -1693,6 +1693,8 @@ extern void ide_setup_pci_devices(struct pci_dev *, struct pci_dev *, ide_pci_de
#define GOOD_DMA_DRIVE 1 #define GOOD_DMA_DRIVE 1
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI #ifdef CONFIG_BLK_DEV_IDEDMA_PCI
extern int ide_build_sglist(ide_drive_t *, struct request *);
extern int ide_raw_build_sglist(ide_drive_t *, struct request *);
extern int ide_build_dmatable(ide_drive_t *, struct request *); extern int ide_build_dmatable(ide_drive_t *, struct request *);
extern void ide_destroy_dmatable(ide_drive_t *); extern void ide_destroy_dmatable(ide_drive_t *);
extern ide_startstop_t ide_dma_intr(ide_drive_t *); extern ide_startstop_t ide_dma_intr(ide_drive_t *);
......
...@@ -900,6 +900,7 @@ ...@@ -900,6 +900,7 @@
#define PCI_VENDOR_ID_SGI 0x10a9 #define PCI_VENDOR_ID_SGI 0x10a9
#define PCI_DEVICE_ID_SGI_IOC3 0x0003 #define PCI_DEVICE_ID_SGI_IOC3 0x0003
#define PCI_DEVICE_ID_SGI_IOC4 0x100a
#define PCI_VENDOR_ID_SGI_LITHIUM 0x1002 #define PCI_VENDOR_ID_SGI_LITHIUM 0x1002
#define PCI_VENDOR_ID_ACC 0x10aa #define PCI_VENDOR_ID_ACC 0x10aa
......
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