On 1/12/07, Alan <alan@xxxxxxxxxxxxxxxxxxx> wrote:
> It seems that it821x_tune_chipset() is buggy since it sends SET FEATURES > command even when in smart mode. Shouldn't there be "don't tune" flag > in it812x_fixups() to tell it821x_tune_chipset() to not send SET FEATURES > commands? It's itdev->smart but falls through to ide_config_drive_speed while it should probably just copy bits of the code from it. Thats all fixed in the libata driver which allows chip specific mode setup.
ide_config_drive_speed() does the following things: 1. disables host DMA 2. sends SET FEATURES command (in polling mode) 3. re-enables host DMA (only if DMA mode was set) 4. updates drive->id->dma_{ultra,mword,1word} 5. updates drive->{current,init}_speed 1. and 2. should really go to higher layers 3. obviously shouldn't be done for itdev->smart 4. also shouldn't be done for itdev>smart (we are not changing speed mode) 5. should be done once outside of it821x_tune_chipset() Therefore current TODO looks like: * moving DMA fiddling code out of ide_config_drive_speed() * setting drive->{current,init} speed in it821x_fixups() * fixing it821x not to call ide_config_drive_speed() for itdev->smart Fixing user space generated requests requires more work (i.e. adding ->set_mode method)... I'll try to cook up some patches later unless somebody beats me to it. Thanks, Bart - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html