ide-cd: fix SAMSUNG CD-ROM SCR-3231 quirk
cdi->mask is cleared by ide_cdrom_register() which is called after the quirk. Fix it by adding new ->no_speed_select flag to struct ide_cd_config_flags and using it in ide_cdrom_register() to set CDC_SELECT_SPEED flag. Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
a1c6d28c2b
commit
3cbd814ef3
2 changed files with 6 additions and 2 deletions
|
@ -2909,6 +2909,9 @@ static int ide_cdrom_register (ide_drive_t *drive, int nslots)
|
||||||
if (!CDROM_CONFIG_FLAGS(drive)->ram)
|
if (!CDROM_CONFIG_FLAGS(drive)->ram)
|
||||||
devinfo->mask |= CDC_RAM;
|
devinfo->mask |= CDC_RAM;
|
||||||
|
|
||||||
|
if (CDROM_CONFIG_FLAGS(drive)->no_speed_select)
|
||||||
|
devinfo->mask |= CDC_SELECT_SPEED;
|
||||||
|
|
||||||
devinfo->disk = info->disk;
|
devinfo->disk = info->disk;
|
||||||
return register_cdrom(devinfo);
|
return register_cdrom(devinfo);
|
||||||
}
|
}
|
||||||
|
@ -3161,7 +3164,7 @@ int ide_cdrom_setup (ide_drive_t *drive)
|
||||||
CDROM_CONFIG_FLAGS(drive)->limit_nframes = 1;
|
CDROM_CONFIG_FLAGS(drive)->limit_nframes = 1;
|
||||||
/* the 3231 model does not support the SET_CD_SPEED command */
|
/* the 3231 model does not support the SET_CD_SPEED command */
|
||||||
else if (!strcmp(drive->id->model, "SAMSUNG CD-ROM SCR-3231"))
|
else if (!strcmp(drive->id->model, "SAMSUNG CD-ROM SCR-3231"))
|
||||||
cdi->mask |= CDC_SELECT_SPEED;
|
CDROM_CONFIG_FLAGS(drive)->no_speed_select = 1;
|
||||||
|
|
||||||
#if ! STANDARD_ATAPI
|
#if ! STANDARD_ATAPI
|
||||||
/* by default Sanyo 3 CD changer support is turned off and
|
/* by default Sanyo 3 CD changer support is turned off and
|
||||||
|
|
|
@ -91,7 +91,8 @@ struct ide_cd_config_flags {
|
||||||
__u8 close_tray : 1; /* can close the tray */
|
__u8 close_tray : 1; /* can close the tray */
|
||||||
__u8 writing : 1; /* pseudo write in progress */
|
__u8 writing : 1; /* pseudo write in progress */
|
||||||
__u8 mo_drive : 1; /* drive is an MO device */
|
__u8 mo_drive : 1; /* drive is an MO device */
|
||||||
__u8 reserved : 2;
|
__u8 no_speed_select : 1; /* SET_CD_SPEED command is unsupported. */
|
||||||
|
__u8 reserved : 1;
|
||||||
byte max_speed; /* Max speed of the drive */
|
byte max_speed; /* Max speed of the drive */
|
||||||
};
|
};
|
||||||
#define CDROM_CONFIG_FLAGS(drive) (&(((struct cdrom_info *)(drive->driver_data))->config_flags))
|
#define CDROM_CONFIG_FLAGS(drive) (&(((struct cdrom_info *)(drive->driver_data))->config_flags))
|
||||||
|
|
Loading…
Reference in a new issue