On Tuesday 29 August 2006 21:04, Russell King wrote:
> It's worse than that - this code is there to read the ID from the divisor
> registers implemented in some UARTs. If it isn't one of those UARTs, it's
> expected to return zero.
>
> So we don't actually want to be prodding some other random registers on
> differing UARTs.
For the RM9000, DLL and DLM are located at distinct addresses, so these
registers could be accessed without prior setting of DLAB. However, the
h/w docs say that DLAB has to be used nonetheless. I doubt that, but
wanted to play safe. So, in order to make this work, I had two options:
1. to monitor all register writes for setting/clearing of DLAB, and
switch the register mapping tables accordingly, or
2. implement serial_dl_read()/serial_dl_write() to directly access
the registers, thus bypassing the mapping.
I decided to implement option #2, because it seemed less of a kludge.
Would you still say that this is an abuse?
Thomas
--
Thomas Koeller, Software Development
Basler Vision Technologies
An der Strusbek 60-62
22926 Ahrensburg
Germany
Tel +49 (4102) 463-390
Fax +49 (4102) 463-46390
mailto:thomas.koeller@baslerweb.com
http://www.baslerweb.com
|