blob: 17cf865e583d28edd7890b3e874bcd0cdec561ce [file] [log] [blame]
Bartlomiej Zolnierkiewicz01278542008-10-10 22:39:38 +02001#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
Bartlomiej Zolnierkiewicz01278542008-10-10 22:39:38 +020016 /* 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
Bartlomiej Zolnierkiewicz01278542008-10-10 22:39:38 +020021 /* Last error information */
22 u8 sense_key, asc, ascq;
Bartlomiej Zolnierkiewiczbaf08f02008-10-13 21:39:32 +020023
Bartlomiej Zolnierkiewicz01278542008-10-10 22:39:38 +020024 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 *);
Bartlomiej Zolnierkiewiczb9103da2008-10-13 21:39:44 +020051sector_t ide_floppy_capacity(ide_drive_t *);
Bartlomiej Zolnierkiewicz01278542008-10-10 22:39:38 +020052
53/* ide-floppy_ioctl.c */
Bartlomiej Zolnierkiewicz5bb15362008-10-13 21:39:44 +020054int ide_floppy_ioctl(struct inode *, struct file *, unsigned, unsigned long);
Bartlomiej Zolnierkiewicz01278542008-10-10 22:39:38 +020055
Bartlomiej Zolnierkiewiczb9103da2008-10-13 21:39:44 +020056#ifdef CONFIG_IDE_PROC_FS
57/* ide-floppy_proc.c */
58extern ide_proc_entry_t ide_floppy_proc[];
59extern const struct ide_proc_devset ide_floppy_settings[];
60#endif
61
Bartlomiej Zolnierkiewicz01278542008-10-10 22:39:38 +020062#endif /*__IDE_FLOPPY_H */