I have a fairly basic question about "Kernel logical address" and "Physical
In the book about Linux Device Drivers from Alessandro Rubini I read:
"Logical addresses make up the normal address-space of the kernel. . On most
architectures, logical and their associated physical addresses differ only
by a constant offset." __pa() is used to go from logical address to Physical
address; __va() the other way round.
I have been working on a PPC platform, running Linux 2.2. This platform has
a register where you can enable different options and where you can control
several LED's. The vendor mentions that this register is mapped in memory at
When I write (in a driver)
*p = ..; (I know I should use writeb to be more portable.)
it seems to work; the leds can be manipulated. But as FA400000 is a physical
address, I thought that it had to be *p=__va(0xFA40000);
Who can help me out? Where do I find a nice document about this?