ide-floppy.h revision 5bb1536a07cca0b66f2bb41dfdf84140939b8f1f
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 */
9typedef 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
24	int progress_indication;
25
26	/* Device information */
27	/* Current format */
28	int blocks, block_size, bs_factor;
29	/* Last format capacity descriptor */
30	u8 cap_desc[8];
31	/* Copy of the flexible disk page */
32	u8 flexible_disk_page[32];
33} idefloppy_floppy_t;
34
35/*
36 * Pages of the SELECT SENSE / MODE SENSE packet commands.
37 * See SFF-8070i spec.
38 */
39#define	IDEFLOPPY_CAPABILITIES_PAGE	0x1b
40#define IDEFLOPPY_FLEXIBLE_DISK_PAGE	0x05
41
42/* IOCTLs used in low-level formatting. */
43#define	IDEFLOPPY_IOCTL_FORMAT_SUPPORTED	0x4600
44#define	IDEFLOPPY_IOCTL_FORMAT_GET_CAPACITY	0x4601
45#define	IDEFLOPPY_IOCTL_FORMAT_START		0x4602
46#define IDEFLOPPY_IOCTL_FORMAT_GET_PROGRESS	0x4603
47
48/* ide-floppy.c */
49void ide_floppy_create_mode_sense_cmd(struct ide_atapi_pc *, u8);
50void ide_floppy_create_read_capacity_cmd(struct ide_atapi_pc *);
51
52/* ide-floppy_ioctl.c */
53int ide_floppy_ioctl(struct inode *, struct file *, unsigned, unsigned long);
54
55#endif /*__IDE_FLOPPY_H */
56