ide-cd: fix SAMSUNG CD-ROM SCR-3231 quirk
PATCH 1/63 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.
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
--- drivers/ide/ide-cd.c | 5 ++++- drivers/ide/ide-cd.h | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-)
drivers/ide/ide-cd.c +4 -1
@@ -2903,6 +2903,9 @@ static int ide_cdrom_register (ide_driveif (!CDROM_CONFIG_FLAGS (drive)->ram) devinfo->mask |=CDC_RAM ; +if (CDROM_CONFIG_FLAGS (drive)->no_speed_select) + devinfo->mask |=CDC_SELECT_SPEED ; + devinfo->disk = info->disk;return register_cdrom (devinfo); }
@@ -3155,7 +3158,7 @@ int ide_cdrom_setup (ide_drive_t *drive)CDROM_CONFIG_FLAGS (drive)->limit_nframes =1 ;/* the 3231 model does not support the SET_CD_SPEED command */ 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 /* by default Sanyo 3 CD changer support is turned off and
drivers/ide/ide-cd.h +2 -1
@@ -91,7 +91,8 @@ struct ide_cd_config_flags { __u8 close_tray : 1; /* can close the tray */ __u8 writing : 1; /* pseudo write in progress */ __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 */ };#define CDROM_CONFIG_FLAGS (drive) (&(((struct cdrom_info *)(drive->driver_data))->config_flags))
Quoted 6 lines · Bartlomiej Zolnierkiewicz
cdi->maskis cleared byide_cdrom_register()which is called after the quirk.Fix it by adding new ->no_speed_select flag to struct
ide_cd_config_flagsand using it inide_cdrom_register()to setCDC_SELECT_SPEEDflag.Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
Acked-by Sergei Shtylyov <[email protected]>
MBR, Sergei