I''m writing a new UART driver and that seems to work reasonably well "as exprected"....
There is one little thing... So far I've left the orignal driver running separately. When I start my stuff, it will disable interrupts and then the normal dirver will not be seeing any incoming characters.
So when things started to work I happened to have a program running that would display the inciming characters and that suddenly stopped when I did "my thing" to disable the interrupts. Ok. Great.
But then... when I stopped the program reading through the normal driver, I stopped getting characters. I've dumped the whole UART register space and there is nothing out-of-the-ordinary in the differences. When it works the UART says it's waiting for the CPU to service it. Fine. That goes away when I close the cat /dev/ttyAMA0.
I'm currently working on a raspberry pi 3, so I'm using the BCM2711 arm peripherals datasheet. https://datasheets.raspberrypi.com/bcm2 ... herals.pdf
I've noticed that I write "1" to bit 10 of CR while writing this post. So I changed it to write zero as the datasheet demands.... That leads to: Datasheet is wrong: The bit is not "not implemented, it retains the value written.
I've checked the alternate functions. Those remain as exprected.
So... my question is: What does the regular PL011 driver enable on open en disable on close that makes the uart peripheral work? What am I missing?
It might be that the clock to the uart is disabled on close. The uart documentation speaks of the "clock manager" but I can't find any documentation for that. Is that expected?
There is one little thing... So far I've left the orignal driver running separately. When I start my stuff, it will disable interrupts and then the normal dirver will not be seeing any incoming characters.
So when things started to work I happened to have a program running that would display the inciming characters and that suddenly stopped when I did "my thing" to disable the interrupts. Ok. Great.
But then... when I stopped the program reading through the normal driver, I stopped getting characters. I've dumped the whole UART register space and there is nothing out-of-the-ordinary in the differences. When it works the UART says it's waiting for the CPU to service it. Fine. That goes away when I close the cat /dev/ttyAMA0.
I'm currently working on a raspberry pi 3, so I'm using the BCM2711 arm peripherals datasheet. https://datasheets.raspberrypi.com/bcm2 ... herals.pdf
I've noticed that I write "1" to bit 10 of CR while writing this post. So I changed it to write zero as the datasheet demands.... That leads to: Datasheet is wrong: The bit is not "not implemented, it retains the value written.
I've checked the alternate functions. Those remain as exprected.
So... my question is: What does the regular PL011 driver enable on open en disable on close that makes the uart peripheral work? What am I missing?
It might be that the clock to the uart is disabled on close. The uart documentation speaks of the "clock manager" but I can't find any documentation for that. Is that expected?
Statistics: Posted by rew — Sun Aug 18, 2024 10:08 pm