forked from Minki/linux
ide-floppy: remove struct idefloppy_capabilities_page
This change is rather temporary and is in preparation of using generic commands as is the case with ide-cd and the uniform cdrom layer (i.e. init_cdrom_command()) However, before this happens, we'll have to remove all typedefs and teach idefloppy_create_mode_sense_cmd() to work directly on u8 buffers. Also, since idefloppy_get_capability_page() was used to read only the sfrp bit, rename the latter so that the name reflects what it does. Signed-off-by: Borislav Petkov <bbpetkov@yahoo.de> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
bcc77d9cc1
commit
948391d17c
@ -119,44 +119,6 @@ typedef struct idefloppy_packet_command_s {
|
||||
|
||||
#define PC_SUPPRESS_ERROR 6 /* Suppress error reporting */
|
||||
|
||||
/*
|
||||
* Removable Block Access Capabilities Page
|
||||
*/
|
||||
typedef struct {
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
unsigned page_code :6; /* Page code - Should be 0x1b */
|
||||
unsigned reserved1_6 :1; /* Reserved */
|
||||
unsigned ps :1; /* Should be 0 */
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
unsigned ps :1; /* Should be 0 */
|
||||
unsigned reserved1_6 :1; /* Reserved */
|
||||
unsigned page_code :6; /* Page code - Should be 0x1b */
|
||||
#else
|
||||
#error "Bitfield endianness not defined! Check your byteorder.h"
|
||||
#endif
|
||||
u8 page_length; /* Page Length - Should be 0xa */
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
unsigned reserved2 :6;
|
||||
unsigned srfp :1; /* Supports reporting progress of format */
|
||||
unsigned sflp :1; /* System floppy type device */
|
||||
unsigned tlun :3; /* Total logical units supported by the device */
|
||||
unsigned reserved3 :3;
|
||||
unsigned sml :1; /* Single / Multiple lun supported */
|
||||
unsigned ncd :1; /* Non cd optical device */
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
unsigned sflp :1; /* System floppy type device */
|
||||
unsigned srfp :1; /* Supports reporting progress of format */
|
||||
unsigned reserved2 :6;
|
||||
unsigned ncd :1; /* Non cd optical device */
|
||||
unsigned sml :1; /* Single / Multiple lun supported */
|
||||
unsigned reserved3 :3;
|
||||
unsigned tlun :3; /* Total logical units supported by the device */
|
||||
#else
|
||||
#error "Bitfield endianness not defined! Check your byteorder.h"
|
||||
#endif
|
||||
u8 reserved[8];
|
||||
} idefloppy_capabilities_page_t;
|
||||
|
||||
/*
|
||||
* Flexible disk page.
|
||||
*/
|
||||
@ -397,7 +359,8 @@ typedef struct {
|
||||
} idefloppy_request_sense_result_t;
|
||||
|
||||
/*
|
||||
* Pages of the SELECT SENSE / MODE SENSE packet commands.
|
||||
* Pages of the SELECT SENSE / MODE SENSE packet commands.
|
||||
* See SFF-8070i spec.
|
||||
*/
|
||||
#define IDEFLOPPY_CAPABILITIES_PAGE 0x1b
|
||||
#define IDEFLOPPY_FLEXIBLE_DISK_PAGE 0x05
|
||||
@ -1273,25 +1236,20 @@ static int idefloppy_get_flexible_disk_page (ide_drive_t *drive)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int idefloppy_get_capability_page(ide_drive_t *drive)
|
||||
static int idefloppy_get_sfrp_bit(ide_drive_t *drive)
|
||||
{
|
||||
idefloppy_floppy_t *floppy = drive->driver_data;
|
||||
idefloppy_pc_t pc;
|
||||
idefloppy_mode_parameter_header_t *header;
|
||||
idefloppy_capabilities_page_t *page;
|
||||
|
||||
floppy->srfp = 0;
|
||||
idefloppy_create_mode_sense_cmd(&pc, IDEFLOPPY_CAPABILITIES_PAGE,
|
||||
MODE_SENSE_CURRENT);
|
||||
|
||||
set_bit(PC_SUPPRESS_ERROR, &pc.flags);
|
||||
if (idefloppy_queue_pc_tail(drive,&pc)) {
|
||||
if (idefloppy_queue_pc_tail(drive, &pc))
|
||||
return 1;
|
||||
}
|
||||
|
||||
header = (idefloppy_mode_parameter_header_t *) pc.buffer;
|
||||
page= (idefloppy_capabilities_page_t *)(header+1);
|
||||
floppy->srfp = page->srfp;
|
||||
floppy->srfp = pc.buffer[8 + 2] & 0x40;
|
||||
return (0);
|
||||
}
|
||||
|
||||
@ -1497,8 +1455,7 @@ static int idefloppy_begin_format(ide_drive_t *drive, int __user *arg)
|
||||
return (-EFAULT);
|
||||
}
|
||||
|
||||
/* Get the SFRP bit */
|
||||
(void) idefloppy_get_capability_page(drive);
|
||||
(void) idefloppy_get_sfrp_bit(drive);
|
||||
idefloppy_create_format_unit_cmd(&pc, blocks, length, flags);
|
||||
if (idefloppy_queue_pc_tail(drive, &pc)) {
|
||||
return (-EIO);
|
||||
|
Loading…
Reference in New Issue
Block a user