Reading OMAP3 CONTROL_RAND_KEY_0 register hangs

We like to read OMAP3's CONTROL_RAND_KEY_0 (0x4800 2318) register in U-Boot with something like

printf ("attempting cpu_uid read\n");
u32 cpu_uid = *((u32 *) 0x48002318);
/* u32 cpu_uid = readl(&ctrl_base->randkey_0); */
printf ("cpu_uid read done\n");

This does hang after first printf, second printf is never printed. Both, the direct register access and the readl style doesn't work. Access to other system control module register in the same address range works fine, though.

Any idea or hint?

For details see spruf98b.pdf page 960 and

http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=blobdiff;f=cpu/arm_cortexa8/omap3/sys_info.c;h=347e8ba24b03d5a4c3a37878cf6fc9f6868066c7;hp=67955531f3f0782b2f3f7e587472e0bef08c921c;hb=292a36ca0271c4a93196f4efd118640b11a65482;hpb=0b043b4ac2144a517d2a5d24ffff7c957b9178f7

Thanks

Dirk

Hi Dirk,

Have you considered, that this register is only accessible in "secure mode"
(page 840), which isn't available in GP-devices, but only in HS-devices?
(GP="General Purpose" - HS="High Secure")

I'm not 100% confident how the specific HS-registers are supposed to work in
GP-devices - If at all? - I think it's a bit dependent on the IP block and
thereby might differ from "block to block"/"register to register"... In
general don't use/trust them in GP devices - It's unsupported
functionality...

I would expect you get a similar stall if you try to read the
CONTROL_CUST_KEY_x-registers?

And now a Question: Why would you like to read this register? For what
usage?

Best regards
  Søren

Related thread in l-o list: http://marc.info/?l=linux-omap&m=123215130432099&w=2
Regards,
Nishanth Menon