Jack <[email protected]> wrote:
>Anders Darander <anders@...> writes:
>
>Thanks Anders,
>
>But I have this problem not only for GPIOs, but also for other
>registers.
Well, my comment about dereferencing physical addresses using *-only, wasn't
restricted to GPIO's only. It was regarding physical addresses in general...
Once again, I've not used this platform, this I'm not able to be too specific.
>For example, I tried to change DTW bits of PROCTL register in eSDH but
>I get
>"Kernel access of bad area" again. My simple code is here :
>int init_module(void)
>{
>
> // e500 Core View To Power Architecture CCSR: 0x0_FF70_0000
>
> volatile uint32_t * eSDH_PROCTL = (volatile uint32_t *)(0xFF72E028);
>
> *(eSDH_PROCTL) = 0x00000002;
I think that you should try to look at some code from the kernel that accesses
registers on your platform. For instance
http://lxr.free-electrons.com/source/sound/soc/fsl/p1022_ds.c?v=3.4 (this is
just a randomly chosen file that relates to P1022.
Have a look at how guts_phys is declared, as well as how guts later on is both
declared and initialized from guts_phys.
When the registers are actually read / written, this driver uses the
clrsetbits_XX. These functions then implements the actual reading and writing
of the registers.
(Note again, I've just looked at this file and p1022 for a couple of minutes).
Cheers,
Anders
--
ChargeStorm AB / eStorm
_______________________________________________
yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/yocto