|
@@ -291,24 +291,6 @@ struct idefloppy_id_gcw {
|
|
|
#define IDEFLOPPY_CAPABILITIES_PAGE 0x1b
|
|
|
#define IDEFLOPPY_FLEXIBLE_DISK_PAGE 0x05
|
|
|
|
|
|
-/*
|
|
|
- * Mode Parameter Header for the MODE SENSE packet command
|
|
|
- */
|
|
|
-typedef struct {
|
|
|
- u16 mode_data_length; /* Length of the following data transfer */
|
|
|
- u8 medium_type; /* Medium Type */
|
|
|
-#if defined(__LITTLE_ENDIAN_BITFIELD)
|
|
|
- unsigned reserved3 :7;
|
|
|
- unsigned wp :1; /* Write protect */
|
|
|
-#elif defined(__BIG_ENDIAN_BITFIELD)
|
|
|
- unsigned wp :1; /* Write protect */
|
|
|
- unsigned reserved3 :7;
|
|
|
-#else
|
|
|
-#error "Bitfield endianness not defined! Check your byteorder.h"
|
|
|
-#endif
|
|
|
- u8 reserved[4];
|
|
|
-} idefloppy_mode_parameter_header_t;
|
|
|
-
|
|
|
static DEFINE_MUTEX(idefloppy_ref_mutex);
|
|
|
|
|
|
#define to_ide_floppy(obj) container_of(obj, struct ide_floppy_obj, kref)
|
|
@@ -954,7 +936,7 @@ static void idefloppy_create_format_unit_cmd (idefloppy_pc_t *pc, int b, int l,
|
|
|
*/
|
|
|
static void idefloppy_create_mode_sense_cmd (idefloppy_pc_t *pc, u8 page_code, u8 type)
|
|
|
{
|
|
|
- u16 length = sizeof(idefloppy_mode_parameter_header_t);
|
|
|
+ u16 length = 8; /* sizeof(Mode Parameter Header) = 8 Bytes */
|
|
|
|
|
|
idefloppy_init_pc(pc);
|
|
|
pc->c[0] = GPCMD_MODE_SENSE_10;
|
|
@@ -1120,7 +1102,6 @@ static int idefloppy_get_flexible_disk_page (ide_drive_t *drive)
|
|
|
{
|
|
|
idefloppy_floppy_t *floppy = drive->driver_data;
|
|
|
idefloppy_pc_t pc;
|
|
|
- idefloppy_mode_parameter_header_t *header;
|
|
|
idefloppy_flexible_disk_page_t *page;
|
|
|
int capacity, lba_capacity;
|
|
|
|
|
@@ -1130,10 +1111,9 @@ static int idefloppy_get_flexible_disk_page (ide_drive_t *drive)
|
|
|
"page parameters\n");
|
|
|
return 1;
|
|
|
}
|
|
|
- header = (idefloppy_mode_parameter_header_t *) pc.buffer;
|
|
|
- floppy->wp = header->wp;
|
|
|
+ floppy->wp = !!(pc.buffer[3] & 0x80);
|
|
|
set_disk_ro(floppy->disk, floppy->wp);
|
|
|
- page = (idefloppy_flexible_disk_page_t *) (header + 1);
|
|
|
+ page = (idefloppy_flexible_disk_page_t *) &pc.buffer[8];
|
|
|
|
|
|
page->transfer_rate = be16_to_cpu(page->transfer_rate);
|
|
|
page->sector_size = be16_to_cpu(page->sector_size);
|