summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/apm_bios.h1
-rw-r--r--include/linux/fs.h1
-rw-r--r--include/linux/i2o.h1
-rw-r--r--include/linux/ide.h78
-rw-r--r--include/linux/nfsd/nfsd.h2
-rw-r--r--include/linux/nfsd/xdr.h2
-rw-r--r--include/linux/nfsd/xdr3.h4
-rw-r--r--include/linux/ntfs_fs_sb.h1
-rw-r--r--include/linux/pci_ids.h5
9 files changed, 81 insertions, 14 deletions
diff --git a/include/linux/apm_bios.h b/include/linux/apm_bios.h
index 22fa68ec907b..1f11b7d91b6e 100644
--- a/include/linux/apm_bios.h
+++ b/include/linux/apm_bios.h
@@ -52,6 +52,7 @@ struct apm_info {
struct apm_bios_info bios;
unsigned short connection_version;
int get_power_status_broken;
+ int get_power_status_swabinminutes;
int allow_ints;
int realmode_power_off;
int disabled;
diff --git a/include/linux/fs.h b/include/linux/fs.h
index d8fed404b1e2..574c6377c97d 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1347,6 +1347,7 @@ extern void do_generic_file_read(struct file *, loff_t *, read_descriptor_t *, r
extern loff_t no_llseek(struct file *file, loff_t offset, int origin);
extern loff_t generic_file_llseek(struct file *file, loff_t offset, int origin);
extern ssize_t generic_read_dir(struct file *, char *, size_t, loff_t *);
+extern int generic_file_open(struct inode * inode, struct file * filp);
extern struct file_operations generic_ro_fops;
diff --git a/include/linux/i2o.h b/include/linux/i2o.h
index 45c45ef0170a..3ece9cee16bb 100644
--- a/include/linux/i2o.h
+++ b/include/linux/i2o.h
@@ -30,6 +30,7 @@
#include <asm/semaphore.h> /* Needed for MUTEX init macros */
#include <linux/config.h>
#include <linux/notifier.h>
+#include <linux/ioport.h>
#include <asm/atomic.h>
/*
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 17a7748b996e..5db43159a3be 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -87,6 +87,11 @@ typedef unsigned char byte; /* used everywhere */
#define ERROR_RECAL 1 /* Recalibrate every 2nd retry */
/*
+ * state flags
+ */
+#define DMA_PIO_RETRY 1 /* retrying in PIO */
+
+/*
* Ensure that various configuration flags have compatible settings
*/
#ifdef REALLY_SLOW_IO
@@ -133,14 +138,6 @@ typedef unsigned char byte; /* used everywhere */
#define IDE_BCOUNTL_REG IDE_LCYL_REG
#define IDE_BCOUNTH_REG IDE_HCYL_REG
-#ifdef REALLY_FAST_IO
-#define OUT_BYTE(b,p) outb((b),(p))
-#define IN_BYTE(p) (byte)inb(p)
-#else
-#define OUT_BYTE(b,p) outb_p((b),(p))
-#define IN_BYTE(p) (byte)inb_p(p)
-#endif /* REALLY_FAST_IO */
-
#define GET_ERR() IN_BYTE(IDE_ERROR_REG)
#define GET_STAT() IN_BYTE(IDE_STATUS_REG)
#define GET_ALTSTAT() IN_BYTE(IDE_CONTROL_REG)
@@ -255,6 +252,27 @@ void ide_setup_ports( hw_regs_t *hw,
#include <asm/ide.h>
/*
+ * If the arch-dependant ide.h did not declare/define any OUT_BYTE
+ * or IN_BYTE functions, we make some defaults here.
+ */
+
+#ifndef HAVE_ARCH_OUT_BYTE
+#ifdef REALLY_FAST_IO
+#define OUT_BYTE(b,p) outb((b),(p))
+#else
+#define OUT_BYTE(b,p) outb_p((b),(p))
+#endif
+#endif
+
+#ifndef HAVE_ARCH_IN_BYTE
+#ifdef REALLY_FAST_IO
+#define IN_BYTE(p) (byte)inb_p(p)
+#else
+#define IN_BYTE(p) (byte)inb(p)
+#endif
+#endif
+
+/*
* Now for the data we need to maintain per-drive: ide_drive_t
*/
@@ -286,6 +304,8 @@ typedef struct ide_drive_s {
special_t special; /* special action flags */
byte keep_settings; /* restore settings after drive reset */
byte using_dma; /* disk is using dma for read/write */
+ byte retry_pio; /* retrying dma capable host in pio */
+ byte state; /* retry state */
byte waiting_for_dma; /* dma currently in progress */
byte unmask; /* flag: okay to unmask other irqs */
byte slow; /* flag: slow data port */
@@ -349,6 +369,8 @@ typedef struct ide_drive_s {
byte init_speed; /* transfer rate set at boot */
byte current_speed; /* current transfer rate set */
byte dn; /* now wide spread use */
+ unsigned int failures; /* current failure count */
+ unsigned int max_failures; /* maximum allowed failure count */
} ide_drive_t;
/*
@@ -373,6 +395,23 @@ typedef enum { ide_dma_read, ide_dma_write, ide_dma_begin,
typedef int (ide_dmaproc_t)(ide_dma_action_t, ide_drive_t *);
/*
+ * An ide_ideproc_t() performs CPU-polled transfers to/from a drive.
+ * Arguments are: the drive, the buffer pointer, and the length (in bytes or
+ * words depending on if it's an IDE or ATAPI call).
+ *
+ * If it is not defined for a controller, standard-code is used from ide.c.
+ *
+ * Controllers which are not memory-mapped in the standard way need to
+ * override that mechanism using this function to work.
+ *
+ */
+typedef enum { ideproc_ide_input_data, ideproc_ide_output_data,
+ ideproc_atapi_input_bytes, ideproc_atapi_output_bytes
+} ide_ide_action_t;
+
+typedef void (ide_ideproc_t)(ide_ide_action_t, ide_drive_t *, void *, unsigned int);
+
+/*
* An ide_tuneproc_t() is used to set the speed of an IDE interface
* to a particular PIO mode. The "byte" parameter is used
* to select the PIO mode by number (0,1,2,3,4,5), and a value of 255
@@ -397,6 +436,11 @@ typedef void (ide_maskproc_t) (ide_drive_t *, int);
typedef void (ide_rw_proc_t) (ide_drive_t *, ide_dma_action_t);
/*
+ * ide soft-power support
+ */
+typedef int (ide_busproc_t) (struct hwif_s *, int);
+
+/*
* hwif_chipset_t is used to keep track of the specific hardware
* chipset used by each IDE interface, if known.
*/
@@ -405,9 +449,13 @@ typedef enum { ide_unknown, ide_generic, ide_pci,
ide_qd6580, ide_umc8672, ide_ht6560b,
ide_pdc4030, ide_rz1000, ide_trm290,
ide_cmd646, ide_cy82c693, ide_4drives,
- ide_pmac
+ ide_pmac, ide_etrax100
} hwif_chipset_t;
+#define IDE_CHIPSET_PCI_MASK \
+ ((1<<ide_pci)|(1<<ide_cmd646)|(1<<ide_ali14xx))
+#define IDE_CHIPSET_IS_PCI(c) ((IDE_CHIPSET_PCI_MASK >> (c)) & 1)
+
#ifdef CONFIG_BLK_DEV_IDEPCI
typedef struct ide_pci_devid_s {
unsigned short vid;
@@ -433,12 +481,14 @@ typedef struct hwif_s {
ide_maskproc_t *maskproc; /* special host masking for drive selection */
ide_quirkproc_t *quirkproc; /* check host's drive quirk list */
ide_rw_proc_t *rwproc; /* adjust timing based upon rq->cmd direction */
+ ide_ideproc_t *ideproc; /* CPU-polled transfer routine */
ide_dmaproc_t *dmaproc; /* dma read/write/abort routine */
unsigned int *dmatable_cpu; /* dma physical region descriptor table (cpu view) */
dma_addr_t dmatable_dma; /* dma physical region descriptor table (dma view) */
struct scatterlist *sg_table; /* Scatter-gather list used to build the above */
int sg_nents; /* Current number of entries in it */
int sg_dma_direction; /* dma transfer direction */
+ int sg_dma_active; /* is it in use */
struct hwif_s *mate; /* other hwif from same PCI chip */
unsigned long dma_base; /* base addr for dma ports */
unsigned dma_extra; /* extra addr for dma ports */
@@ -467,6 +517,8 @@ typedef struct hwif_s {
#endif
byte straight8; /* Alan's straight 8 check */
void *hwif_data; /* extra hwif data */
+ ide_busproc_t *busproc; /* driver soft-power interface */
+ byte bus_state; /* power state of the IDE bus */
} ide_hwif_t;
@@ -595,6 +647,7 @@ typedef void (ide_pre_reset_proc)(ide_drive_t *);
typedef unsigned long (ide_capacity_proc)(ide_drive_t *);
typedef ide_startstop_t (ide_special_proc)(ide_drive_t *);
typedef void (ide_setting_proc)(ide_drive_t *);
+typedef int (ide_driver_reinit_proc)(ide_drive_t *);
typedef struct ide_driver_s {
const char *name;
@@ -615,6 +668,7 @@ typedef struct ide_driver_s {
ide_capacity_proc *capacity;
ide_special_proc *special;
ide_proc_entry_t *proc;
+ ide_driver_reinit_proc *driver_reinit;
} ide_driver_t;
#define DRIVER(drive) ((ide_driver_t *)((drive)->driver))
@@ -739,6 +793,12 @@ unsigned long current_capacity (ide_drive_t *drive);
ide_startstop_t ide_do_reset (ide_drive_t *);
/*
+ * Re-Start an operation for an IDE interface.
+ * The caller should return immediately after invoking this.
+ */
+ide_startstop_t restart_request (ide_drive_t *);
+
+/*
* This function is intended to be used prior to invoking ide_do_drive_cmd().
*/
void ide_init_drive_cmd (struct request *rq);
diff --git a/include/linux/nfsd/nfsd.h b/include/linux/nfsd/nfsd.h
index ed5fbc59d247..571557de8762 100644
--- a/include/linux/nfsd/nfsd.h
+++ b/include/linux/nfsd/nfsd.h
@@ -57,7 +57,7 @@ struct readdir_cd {
char dotonly;
};
typedef int (*encode_dent_fn)(struct readdir_cd *, const char *,
- int, off_t, ino_t, unsigned int);
+ int, loff_t, ino_t, unsigned int);
typedef int (*nfsd_dirop_t)(struct inode *, struct dentry *, int, int);
/*
diff --git a/include/linux/nfsd/xdr.h b/include/linux/nfsd/xdr.h
index 4bb4f668bf7c..5d96579529ed 100644
--- a/include/linux/nfsd/xdr.h
+++ b/include/linux/nfsd/xdr.h
@@ -151,7 +151,7 @@ int nfssvc_encode_statfsres(struct svc_rqst *, u32 *, struct nfsd_statfsres *);
int nfssvc_encode_readdirres(struct svc_rqst *, u32 *, struct nfsd_readdirres *);
int nfssvc_encode_entry(struct readdir_cd *, const char *name,
- int namlen, off_t offset, ino_t ino, unsigned int);
+ int namlen, loff_t offset, ino_t ino, unsigned int);
int nfssvc_release_fhandle(struct svc_rqst *, u32 *, struct nfsd_fhandle *);
diff --git a/include/linux/nfsd/xdr3.h b/include/linux/nfsd/xdr3.h
index a5ca90410204..35d167ad6cd2 100644
--- a/include/linux/nfsd/xdr3.h
+++ b/include/linux/nfsd/xdr3.h
@@ -292,10 +292,10 @@ int nfs3svc_release_fhandle(struct svc_rqst *, u32 *,
int nfs3svc_release_fhandle2(struct svc_rqst *, u32 *,
struct nfsd3_fhandle_pair *);
int nfs3svc_encode_entry(struct readdir_cd *, const char *name,
- int namlen, off_t offset, ino_t ino,
+ int namlen, loff_t offset, ino_t ino,
unsigned int);
int nfs3svc_encode_entry_plus(struct readdir_cd *, const char *name,
- int namlen, off_t offset, ino_t ino,
+ int namlen, loff_t offset, ino_t ino,
unsigned int);
diff --git a/include/linux/ntfs_fs_sb.h b/include/linux/ntfs_fs_sb.h
index af11d732f022..6181604ff0e8 100644
--- a/include/linux/ntfs_fs_sb.h
+++ b/include/linux/ntfs_fs_sb.h
@@ -8,7 +8,6 @@ struct ntfs_sb_info{
ntfs_uid_t uid;
ntfs_gid_t gid;
ntmode_t umask;
- unsigned int nct;
void *nls_map;
unsigned int ngt;
/* Configuration provided by user with the ntfstools.
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index a32080868dcd..a17b5ca29623 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1417,8 +1417,13 @@
#define PCI_DEVICE_ID_AIRONET_4500 0x4800 // drivers/net/aironet4500_card.c
#define PCI_VENDOR_ID_TITAN 0x14D2
+#define PCI_DEVICE_ID_TITAN_010L 0x8001
+#define PCI_DEVICE_ID_TITAN_100L 0x8010
#define PCI_DEVICE_ID_TITAN_110L 0x8011
+#define PCI_DEVICE_ID_TITAN_200L 0x8020
#define PCI_DEVICE_ID_TITAN_210L 0x8021
+#define PCI_DEVICE_ID_TITAN_400L 0x8040
+#define PCI_DEVICE_ID_TITAN_800L 0x8080
#define PCI_DEVICE_ID_TITAN_100 0xA001
#define PCI_DEVICE_ID_TITAN_200 0xA005
#define PCI_DEVICE_ID_TITAN_400 0xA003