I have a legacy IDE program which program disk with legacy IDE registers. It failed to work with AHCI controller if it is set as AHCI mode in the BIOS.
First I disable the AE bit in AHCI global control register, that enables the legacy IDE register accessible and the HDD start to work as usual. However, after the AE bit turned off, the general BIOS read (ah = 42h int 13h) cannot work, there is a long-time delay for about 1 minute and the buffer is filled with 0 but no error status reported from BIOS.
I tried to enable the AE bit before every BIOS call in the program, but it doesn't help. In my case shall I need to do the port initialization to bring the chip back to AHCI mode or should I simply change the register(task file) programming to support the AHCI mode (FIS) ? I compared all the other AHCI registers before and after AE bit clear but there is no change.