This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am335x wakeup sources.

Other Parts Discussed in Thread: AM3352

So I'm doing some work on the M3 code in the AM3352 chip.using the code at git://arago-project.org/git/projects/am33x-cm3.git. 

Some observation is that the SPRUH73J manual has the memory listed at 0x44d00000 and 0x44d80000 as reserved. but that is the memory the M3 cpu is using just view from the A8 memory map.

Also I have not found any docs on the memory map seen from the M3 side of things. its not the same I know that much. 

Then in the M3 code we have a function called configure_wake_sources(). and here there is some strange code I don't understand. it is a number of tests to see if a wakeup source is activated

if (BB_USB_WAKE)
   nvic_enable_irq(CM3_IRQ_USBWAKEUP);

and so on. but the macro BB_xxx_WAKE is strange. here is the relevant parts.

#define BITBAND_SRAM_BASE 0x22000000

#define BITBAND_SRAM(a,b) ((BITBAND_SRAM_BASE + ((int)(a))*32 + (b*4)))

#define BB_USB_WAKE *((volatile int *)(BITBAND_SRAM(&cmd_wake_sources, 0)))

static unsigned int cmd_wake_sources;

so cmd_wake_sources is just normal symbols so its address is set by the compiler and its going to change if any code change. 

so this address is taken multiplied by 32. why ??. 

and what is on memory 0x22000000.

my guess is that the intention is to not use the address of cmd_wake_sources but what it points to. but I still don't understand the multiply and I dont know whats in that memory that is used.