]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blob - drivers/ide/ide-floppy.h
ide: add ide_retry_pc() helper
[mirror_ubuntu-kernels.git] / drivers / ide / ide-floppy.h
1 #ifndef __IDE_FLOPPY_H
2 #define __IDE_FLOPPY_H
3
4 /*
5 * Most of our global data which we need to save even as we leave the driver
6 * due to an interrupt or a timer event is stored in a variable of type
7 * idefloppy_floppy_t, defined below.
8 */
9 typedef struct ide_floppy_obj {
10 ide_drive_t *drive;
11 ide_driver_t *driver;
12 struct gendisk *disk;
13 struct kref kref;
14 unsigned int openers; /* protected by BKL for now */
15
16 /* Last failed packet command */
17 struct ide_atapi_pc *failed_pc;
18 /* used for blk_{fs,pc}_request() requests */
19 struct ide_atapi_pc queued_pc;
20
21 /* Last error information */
22 u8 sense_key, asc, ascq;
23 /* delay this long before sending packet command */
24 u8 ticks;
25 int progress_indication;
26
27 /* Device information */
28 /* Current format */
29 int blocks, block_size, bs_factor;
30 /* Last format capacity descriptor */
31 u8 cap_desc[8];
32 /* Copy of the flexible disk page */
33 u8 flexible_disk_page[32];
34 } idefloppy_floppy_t;
35
36 /*
37 * Pages of the SELECT SENSE / MODE SENSE packet commands.
38 * See SFF-8070i spec.
39 */
40 #define IDEFLOPPY_CAPABILITIES_PAGE 0x1b
41 #define IDEFLOPPY_FLEXIBLE_DISK_PAGE 0x05
42
43 /* IOCTLs used in low-level formatting. */
44 #define IDEFLOPPY_IOCTL_FORMAT_SUPPORTED 0x4600
45 #define IDEFLOPPY_IOCTL_FORMAT_GET_CAPACITY 0x4601
46 #define IDEFLOPPY_IOCTL_FORMAT_START 0x4602
47 #define IDEFLOPPY_IOCTL_FORMAT_GET_PROGRESS 0x4603
48
49 /* ide-floppy.c */
50 void ide_floppy_create_mode_sense_cmd(struct ide_atapi_pc *, u8);
51 void ide_floppy_create_read_capacity_cmd(struct ide_atapi_pc *);
52
53 /* ide-floppy_ioctl.c */
54 int ide_floppy_format_ioctl(ide_drive_t *, struct file *, unsigned int,
55 void __user *);
56
57 #endif /*__IDE_FLOPPY_H */