Hello,
I am creating a custom cape which uses SPI1 with both cs0 and cs1 and uses multiple GPIO pins including 8.07 mapped as GPIO pin… My prototype has been working without issues but I recently noticed a curious issue while parsing dmesg:
[ 10.775173] pinctrl-single 44e10800.pinmux: pin 44e10890.0 already requested by ocp:gpio_helper; cannot claim for 481a0000.spi
[ 10.786802] pinctrl-single 44e10800.pinmux: pin-36 (481a0000.spi) status -22
[ 10.793955] pinctrl-single 44e10800.pinmux: could not request pin 36 (44e10890.0) from group MYTEST_GPIO on device pinctrl-single
[ 10.805516] omap2_mcspi 481a0000.spi: Error applying setting, reverse things back
where MYTEST_GPIO is:
overlay {
my_example: MYTEST_GPIO {
pinctrl-single,pins = <
0x090 0x07 // P8_07 this seems to be the offending pin
0x094 0x07 // P8_08
// few more pins not shown here
;
};
};
The SPI overlay is:
bb_spi1_pins: pinmux_bb_spi1_pins {
pinctrl-single,pins = <
0x190 0x33 /* spi1_sclk, INPUT_PULLUP | MODE3 /
0x194 0x13 / spi1_d0, OUTPUT_PULLUP | MODE3 /
0x19c 0x13 / spi1_cs0, OUTPUT_PULLUP | MODE3 /
0x164 0x12 / spi1_cs1 OUTPUT_PULLUP | MODE2 */
;
};
I am not defining the use of a timer in the overlays. I understand SPI needs to generate a clock in master mode, though I am not sure if one of the timers is used for this purpose. However, I am not sure I understand why is the pin 8.07 physically required especially when I am mapping it as a GPIO pin.
Some system information if it helps:
debian@beaglebone:~$ uname -a
Linux beaglebone 4.4.47-ti-r87 #1 SMP Mon Feb 6 22:21:49 UTC 2017 armv7l GNU/Linux
debian@beaglebone:~$ cat /sys/devices/platform/bone_capemgr/slots
0: P—L- 0 4D 4.3 LCD CAPE- 4DCAPE-43T ,00A1,4D SYSTEMS ,BB-BONE-LCD4-01
1: PF---- -1
2: PF---- -1
3: PF---- -1
4: P-O-L- 1 Override Board Name,00A0,Override Manuf,MYTEST-SPIDEV1
5: P-O-L- 2 Override Board Name,00A0,Override Manuf,MYTEST-GPIO
Any thoughts would be appreciated…
Thanks
Gaurav