It doesn't buy us anything in here, but it's conceivable that someone may want to write a driver that uses a shift in the I/O accessor rather than an array of port offsets,
It wouldn't be IDE driver then, and neither it would be libata which also does this another way this (despite pata_platform uses shifts too -- not in the accessors, so no speed loss).
equivalent of the cntlzw innstruction, and shift makes it clear that the stride must be power-of-two). Plus, using shift is consistent with what we do on ns16550.
Why the heck should we care about the UART code taling about IDE?!
So, let me consider your argument purely speculative and invalid. ;-)