int ide_write_setting (ide_drive_t * drive, ide_settings_t * setting, int val);
Write a drive setting if it is possible. The caller must hold the ide_setting_sem when making this call.
the data return and error are the same return value so an error -EINVAL and true return of the same value cannot be told apart
This should be changed to enqueue a special request to the driver to change settings, and then wait on a sema for completion. The current scheme of polling is kludgy, though safe enough.