mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (59 commits)
ide-floppy: do not complete rq's prematurely
ide: be able to build pmac driver without IDE built-in
ide-pmac: IDE cable detection on Apple PowerBook
ide: inline SELECT_DRIVE()
ide: turn selectproc() method into dev_select() method (take 5)
MAINTAINERS: move old ide-{floppy,tape} entries to CREDITS (take 2)
ide: move data register access out of tf_{read|load}() methods (take 2)
ide: call {in|out}put_data() methods from tf_{read|load}() methods (take 2)
ide-io-std: shorten ide_{in|out}put_data()
ide: rename IDE_TFLAG_IN_[HOB_]FEATURE
ide: turn set_irq() method into write_devctl() method
ide: use ATA_HOB
ide-disk: use ATA_ERR
ide: add support for CFA specified transfer modes (take 3)
ide-iops: only clear DMA words on setting DMA mode
ide: identify data word 53 bit 1 doesn't cover words 62 and 63 (take 3)
au1xxx-ide: auide_{in|out}sw() should be static
ide-floppy: use ide_pio_bytes()
ide-{floppy,tape}: fix padding for PIO transfers
ide: remove CONFIG_BLK_DEV_IDEDOUBLER config option
...
This commit is contained in:
commit
c09bca786f
51 changed files with 847 additions and 1336 deletions
|
|
@ -265,7 +265,7 @@ enum {
|
|||
IDE_TFLAG_WRITE = (1 << 12),
|
||||
IDE_TFLAG_CUSTOM_HANDLER = (1 << 13),
|
||||
IDE_TFLAG_DMA_PIO_FALLBACK = (1 << 14),
|
||||
IDE_TFLAG_IN_HOB_FEATURE = (1 << 15),
|
||||
IDE_TFLAG_IN_HOB_ERROR = (1 << 15),
|
||||
IDE_TFLAG_IN_HOB_NSECT = (1 << 16),
|
||||
IDE_TFLAG_IN_HOB_LBAL = (1 << 17),
|
||||
IDE_TFLAG_IN_HOB_LBAM = (1 << 18),
|
||||
|
|
@ -273,10 +273,10 @@ enum {
|
|||
IDE_TFLAG_IN_HOB_LBA = IDE_TFLAG_IN_HOB_LBAL |
|
||||
IDE_TFLAG_IN_HOB_LBAM |
|
||||
IDE_TFLAG_IN_HOB_LBAH,
|
||||
IDE_TFLAG_IN_HOB = IDE_TFLAG_IN_HOB_FEATURE |
|
||||
IDE_TFLAG_IN_HOB = IDE_TFLAG_IN_HOB_ERROR |
|
||||
IDE_TFLAG_IN_HOB_NSECT |
|
||||
IDE_TFLAG_IN_HOB_LBA,
|
||||
IDE_TFLAG_IN_FEATURE = (1 << 20),
|
||||
IDE_TFLAG_IN_ERROR = (1 << 20),
|
||||
IDE_TFLAG_IN_NSECT = (1 << 21),
|
||||
IDE_TFLAG_IN_LBAL = (1 << 22),
|
||||
IDE_TFLAG_IN_LBAM = (1 << 23),
|
||||
|
|
@ -310,8 +310,12 @@ enum {
|
|||
|
||||
struct ide_taskfile {
|
||||
u8 hob_data; /* 0: high data byte (for TASKFILE IOCTL) */
|
||||
/* 1-5: additional data to support LBA48 */
|
||||
union {
|
||||
u8 hob_error; /* read: error */
|
||||
u8 hob_feature; /* write: feature */
|
||||
};
|
||||
|
||||
u8 hob_feature; /* 1-5: additional data to support LBA48 */
|
||||
u8 hob_nsect;
|
||||
u8 hob_lbal;
|
||||
u8 hob_lbam;
|
||||
|
|
@ -352,6 +356,8 @@ struct ide_cmd {
|
|||
|
||||
unsigned int nbytes;
|
||||
unsigned int nleft;
|
||||
unsigned int last_xfer_len;
|
||||
|
||||
struct scatterlist *cursg;
|
||||
unsigned int cursg_ofs;
|
||||
|
||||
|
|
@ -375,7 +381,7 @@ enum {
|
|||
* With each packet command, we allocate a buffer of IDE_PC_BUFFER_SIZE bytes.
|
||||
* This is used for several packet commands (not for READ/WRITE commands).
|
||||
*/
|
||||
#define IDE_PC_BUFFER_SIZE 256
|
||||
#define IDE_PC_BUFFER_SIZE 64
|
||||
#define ATAPI_WAIT_PC (60 * HZ)
|
||||
|
||||
struct ide_atapi_pc {
|
||||
|
|
@ -413,9 +419,6 @@ struct ide_atapi_pc {
|
|||
struct idetape_bh *bh;
|
||||
char *b_data;
|
||||
|
||||
struct scatterlist *sg;
|
||||
unsigned int sg_cnt;
|
||||
|
||||
unsigned long timeout;
|
||||
};
|
||||
|
||||
|
|
@ -456,11 +459,6 @@ enum {
|
|||
IDE_AFLAG_TOCADDR_AS_BCD = (1 << 3),
|
||||
/* TOC track numbers are in BCD. */
|
||||
IDE_AFLAG_TOCTRACKS_AS_BCD = (1 << 4),
|
||||
/*
|
||||
* Drive does not provide data in multiples of SECTOR_SIZE
|
||||
* when more than one interrupt is needed.
|
||||
*/
|
||||
IDE_AFLAG_LIMIT_NFRAMES = (1 << 5),
|
||||
/* Saved TOC information is current. */
|
||||
IDE_AFLAG_TOC_VALID = (1 << 6),
|
||||
/* We think that the drive door is locked. */
|
||||
|
|
@ -605,7 +603,7 @@ struct ide_drive_s {
|
|||
|
||||
unsigned int bios_cyl; /* BIOS/fdisk/LILO number of cyls */
|
||||
unsigned int cyl; /* "real" number of cyls */
|
||||
unsigned int drive_data; /* used by set_pio_mode/selectproc */
|
||||
unsigned int drive_data; /* used by set_pio_mode/dev_select() */
|
||||
unsigned int failures; /* current failure count */
|
||||
unsigned int max_failures; /* maximum allowed failure count */
|
||||
u64 probed_capacity;/* initial reported media capacity (ide-cd only currently) */
|
||||
|
|
@ -661,9 +659,9 @@ struct ide_tp_ops {
|
|||
void (*exec_command)(struct hwif_s *, u8);
|
||||
u8 (*read_status)(struct hwif_s *);
|
||||
u8 (*read_altstatus)(struct hwif_s *);
|
||||
void (*write_devctl)(struct hwif_s *, u8);
|
||||
|
||||
void (*set_irq)(struct hwif_s *, int);
|
||||
|
||||
void (*dev_select)(ide_drive_t *);
|
||||
void (*tf_load)(ide_drive_t *, struct ide_cmd *);
|
||||
void (*tf_read)(ide_drive_t *, struct ide_cmd *);
|
||||
|
||||
|
|
@ -681,7 +679,6 @@ extern const struct ide_tp_ops default_tp_ops;
|
|||
* @init_dev: host specific initialization of a device
|
||||
* @set_pio_mode: routine to program host for PIO mode
|
||||
* @set_dma_mode: routine to program host for DMA mode
|
||||
* @selectproc: tweaks hardware to select drive
|
||||
* @reset_poll: chipset polling based on hba specifics
|
||||
* @pre_reset: chipset specific changes to default for device-hba resets
|
||||
* @resetproc: routine to reset controller after a disk reset
|
||||
|
|
@ -698,7 +695,6 @@ struct ide_port_ops {
|
|||
void (*init_dev)(ide_drive_t *);
|
||||
void (*set_pio_mode)(ide_drive_t *, const u8);
|
||||
void (*set_dma_mode)(ide_drive_t *, const u8);
|
||||
void (*selectproc)(ide_drive_t *);
|
||||
int (*reset_poll)(ide_drive_t *);
|
||||
void (*pre_reset)(ide_drive_t *);
|
||||
void (*resetproc)(ide_drive_t *);
|
||||
|
|
@ -719,8 +715,10 @@ struct ide_dma_ops {
|
|||
int (*dma_end)(struct ide_drive_s *);
|
||||
int (*dma_test_irq)(struct ide_drive_s *);
|
||||
void (*dma_lost_irq)(struct ide_drive_s *);
|
||||
/* below ones are optional */
|
||||
int (*dma_check)(struct ide_drive_s *, struct ide_cmd *);
|
||||
int (*dma_timer_expiry)(struct ide_drive_s *);
|
||||
void (*dma_timeout)(struct ide_drive_s *);
|
||||
void (*dma_clear)(struct ide_drive_s *);
|
||||
/*
|
||||
* The following method is optional and only required to be
|
||||
* implemented for the SFF-8038i compatible controllers.
|
||||
|
|
@ -1169,18 +1167,15 @@ void ide_tf_dump(const char *, struct ide_taskfile *);
|
|||
void ide_exec_command(ide_hwif_t *, u8);
|
||||
u8 ide_read_status(ide_hwif_t *);
|
||||
u8 ide_read_altstatus(ide_hwif_t *);
|
||||
void ide_write_devctl(ide_hwif_t *, u8);
|
||||
|
||||
void ide_set_irq(ide_hwif_t *, int);
|
||||
|
||||
void ide_dev_select(ide_drive_t *);
|
||||
void ide_tf_load(ide_drive_t *, struct ide_cmd *);
|
||||
void ide_tf_read(ide_drive_t *, struct ide_cmd *);
|
||||
|
||||
void ide_input_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int);
|
||||
void ide_output_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int);
|
||||
|
||||
int ide_io_buffers(ide_drive_t *, struct ide_atapi_pc *, unsigned int, int);
|
||||
|
||||
extern void SELECT_DRIVE(ide_drive_t *);
|
||||
void SELECT_MASK(ide_drive_t *, int);
|
||||
|
||||
u8 ide_read_error(ide_drive_t *);
|
||||
|
|
@ -1226,6 +1221,8 @@ ide_startstop_t ide_issue_pc(ide_drive_t *, struct ide_cmd *);
|
|||
|
||||
ide_startstop_t do_rw_taskfile(ide_drive_t *, struct ide_cmd *);
|
||||
|
||||
void ide_pio_bytes(ide_drive_t *, struct ide_cmd *, unsigned int, unsigned int);
|
||||
|
||||
void ide_finish_cmd(ide_drive_t *, struct ide_cmd *, u8);
|
||||
|
||||
int ide_raw_taskfile(ide_drive_t *, struct ide_cmd *, u8 *, u16);
|
||||
|
|
@ -1443,8 +1440,8 @@ ide_startstop_t ide_dma_intr(ide_drive_t *);
|
|||
int ide_allocate_dma_engine(ide_hwif_t *);
|
||||
void ide_release_dma_engine(ide_hwif_t *);
|
||||
|
||||
int ide_build_sglist(ide_drive_t *, struct ide_cmd *);
|
||||
void ide_destroy_dmatable(ide_drive_t *);
|
||||
int ide_dma_prepare(ide_drive_t *, struct ide_cmd *);
|
||||
void ide_dma_unmap_sg(ide_drive_t *, struct ide_cmd *);
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
|
||||
int config_drive_for_dma(ide_drive_t *);
|
||||
|
|
@ -1462,7 +1459,6 @@ static inline int config_drive_for_dma(ide_drive_t *drive) { return 0; }
|
|||
#endif /* CONFIG_BLK_DEV_IDEDMA_SFF */
|
||||
|
||||
void ide_dma_lost_irq(ide_drive_t *);
|
||||
void ide_dma_timeout(ide_drive_t *);
|
||||
ide_startstop_t ide_dma_timeout_retry(ide_drive_t *, int);
|
||||
|
||||
#else
|
||||
|
|
@ -1478,8 +1474,10 @@ static inline void ide_check_dma_crc(ide_drive_t *drive) { ; }
|
|||
static inline ide_startstop_t ide_dma_intr(ide_drive_t *drive) { return ide_stopped; }
|
||||
static inline ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error) { return ide_stopped; }
|
||||
static inline void ide_release_dma_engine(ide_hwif_t *hwif) { ; }
|
||||
static inline int ide_build_sglist(ide_drive_t *drive,
|
||||
struct ide_cmd *cmd) { return 0; }
|
||||
static inline int ide_dma_prepare(ide_drive_t *drive,
|
||||
struct ide_cmd *cmd) { return 1; }
|
||||
static inline void ide_dma_unmap_sg(ide_drive_t *drive,
|
||||
struct ide_cmd *cmd) { ; }
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA */
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEACPI
|
||||
|
|
|
|||
Loading…
Reference in a new issue