diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/apm_bios.h | 1 | ||||
| -rw-r--r-- | include/linux/fs.h | 1 | ||||
| -rw-r--r-- | include/linux/i2o.h | 1 | ||||
| -rw-r--r-- | include/linux/ide.h | 78 | ||||
| -rw-r--r-- | include/linux/nfsd/nfsd.h | 2 | ||||
| -rw-r--r-- | include/linux/nfsd/xdr.h | 2 | ||||
| -rw-r--r-- | include/linux/nfsd/xdr3.h | 4 | ||||
| -rw-r--r-- | include/linux/ntfs_fs_sb.h | 1 | ||||
| -rw-r--r-- | include/linux/pci_ids.h | 5 |
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 |
