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
This driver adds PIO/(U)DMA support for the ServerWorks OSB4/CSB5
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
tristate "Silicon Image chipset support"
help
......
......@@ -214,7 +214,7 @@ static void icside_maskproc(ide_drive_t *drive, int mask)
#define NR_ENTRIES 256
#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;
struct icside_state *state = hwif->hwif_data;
......@@ -543,7 +543,7 @@ icside_dma_common(ide_drive_t *drive, struct request *rq,
BUG_ON(hwif->sg_dma_active);
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.
......
......@@ -200,8 +200,8 @@ EXPORT_SYMBOL_GPL(ide_dma_intr);
* kernel provide the necessary cache management so that we can
* 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);
struct scatterlist *sg = hwif->sg_table;
......@@ -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);
}
EXPORT_SYMBOL_GPL(ide_build_sglist);
/**
* ide_raw_build_sglist - map IDE scatter gather for DMA
* @drive: the drive to build the DMA table for
......@@ -230,8 +232,8 @@ static int ide_build_sglist (ide_drive_t *drive, struct request *rq)
* of the kernel provide the necessary cache management so that we can
* 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);
struct scatterlist *sg = hwif->sg_table;
......@@ -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);
}
EXPORT_SYMBOL_GPL(ide_raw_build_sglist);
/**
* ide_build_dmatable - build IDE DMA table
*
......
......@@ -21,6 +21,7 @@ obj-$(CONFIG_BLK_DEV_PDC202XX_NEW) += pdc202xx_new.o
obj-$(CONFIG_BLK_DEV_PIIX) += piix.o
obj-$(CONFIG_BLK_DEV_RZ1000) += rz1000.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_SIS5513) += sis5513.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
#define GOOD_DMA_DRIVE 1
#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 void ide_destroy_dmatable(ide_drive_t *);
extern ide_startstop_t ide_dma_intr(ide_drive_t *);
......
......@@ -900,6 +900,7 @@
#define PCI_VENDOR_ID_SGI 0x10a9
#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_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