And the loop can be turned into ndelay:
/*
* Force at least 170ns delay before clearing
* reset bit. Each read from LCR takes at least
* 30ns so 10 times for 300ns to be safe.
*/
for(i=0;i<10;i++)
readval = *MiscCtrl;
Again, since I can't test this, I do not want this patch to contain
any functional changes. AFAIC, the 10 register reads must still
happen after this patch is applied.
You can't use ndelay(); the writes can get posted so can appear
much closer together by the time they get to the actual hardware.