I am having some difficulty configuring pins as inputs to the SPE. I am following the GPIO example in the SPE docs to set the SCR values and PADCTL values. I am setting the corresponding SCR values to 0x1C001010 and the PADCTL value to 0x00000058.
However I am not able to read the pin values correctly on the SPE and I am not able to interrupt on these pins either. What do I need to do to have pins work as inputs to the SPE? The specific pins I am using are AO_DMIC_IN_CLK, AO_DMIC_IN_DAT, GPIO9_MOTION_INT.
I’m fairly certain that AO_DMIC_IN_CLK/CAN_GPIO1/E16 is output only from the SoM. There is some sort of strong pull-down or buffer on E16 in the module that prevents any type of input signal usage on E16. AO_DMIC_IN_DAT/CAN_GPIO0/D16 does work properly as an input GPIO signal. I’m not sure about the routing to the SPE though.
Try first using those signals that you are interested in (i.e., AO_DMIC_IN_DAT and GPIO9_MOTION_INT) as input GPIOs in the main CPU (Linux kernel GPIO driver), before you attempt to use them in the SPE. If they can be used as inputs, with the value properly changing and being read by the main CPU complex, then I would think they could be used by the SPE. Usage as an interrupt is a different question, as it requires SoC GPIO interrupt signal routing to also go to the SPE.