We have a problem with GPIO response time in BCM58305 where we are just setting the GPIO output register in a **** loop that gives results as 3.3Mhz waveform (on physical GPIO) - in such conditions we are not running any other tasks. In the infinite loop software just writes value to the ASIU_SGP_DATA_OUT_3 register.
#define HVAR(object, addr) *(volatile object *)(addr)
for(;;){
HVAR(u32,ASIU_SGP_DATA_OUT_3) = 0xFFFFFEFF;
HVAR(u32,ASIU_SGP_DATA_OUT_3) = 0xFFFFFFFF;
}
3,33 MHz
Other Broadcom processor resulting output wave on the BCM2835 of 22.7Mhz, the BCM2836 reaches 41.7Mhz
We are currently using ARM926EJ-S with clock speed 384 Mhz gives GPIO results 9.5Mhz (3 times faster than BCM58303 with clock speed 1200 Mhz).
Here are some BCM58305 speed sensitive register values
CRMU_CLOCK_GATE_CTRL=1
CRMU_CLOCK_GATE_CONTROL=c000073f
CRMU_ULTRA_LOW_POWER_CTRL=0
CRMU_CLOCK_SWITCH_STATUS=1
CRMU_GENPLL_STATUS=1a5a
IHOST_PROC_CLK_APB_DIV=0
and (we thing so some IDM wrappers registers)
CMICD_M0_IDM_IO_CONTROL_DIRECT=1ef00000
MHOST_M0_IDM_IO_CONTROL_DIRECT=0
BCM58305 has proper speed in execution code and using both CACHES L1 and L2
GP Timers (SP805) measure proper delay - what confirms proper 100Mhz peripheral clock also used to GPIO
GPIO speed measure after Soc leaving factory ROM (before start running OS) is a little slower (because CACHES are not enabled Yet) reaches speed 1.88Mhz
We would like to try to access GPIO via ACP (using the 33rd address bit).
We check datasheet manual 5830X-DS210.pdf in section 3.4.2.3.1 "When programmers set field Bypass_CT to 1 and Coherant_Transation (CT) to 1, the IDM wrapper unconditionally tags the peripheral's memory address as ACP accesses."
Questions : Which one IDM wrappers are responsible for GPIO access using ACP ? Please provide an address or exact register name ?
or what are other solutions to increase GPIO speed in BCM58305.