So I'm guessing this has to do with the following I noticed in the changelog:
1.7.4
(voxl2_SDK_1.1.3)
BSP:
add voxl-fysnc-mod kernel module
add voxl-gpio-mod kernel module
--- GPIO now exporting to /sys/class/gpio
convert SE13 from 4W to 2W UART, freeing GPIO36/37
add voxl-platform-mod kernel module
--- see /sys/module/voxl_platform_mod/parameters
add new target 'M0054-2' support (same rootfs as M0054-1)
new kernel
new devcfg.mbn
In system image 1.7.1 (SDK v1.1.2) on the drone that has no rc issues, recipes-kernel/linux-msm/files/dts/common/m0xxx-modalai-gpio.dtsi has:
&soc {
b2b_conn_gpio_init {
compatible = "modalai,voxl-b2b";
pinctrl-names = "default";
pinctrl-0 = <&tck22912G_ctrl_pin &b2b_pin7 &b2b_pin9 &b2b_pin17 &b2b_pin19 &b2b_pin38 &b2b_pin40 &hs_b2b_pin41 &hs_b2b_pin42 &hs_b2b_pin43 &hs_b2b_pin44 &hs_b2b_pin46 &hs_b2b_pin47 &hs_b2b_pin50 &hs_b2b_pin51 &hs_b2b_pin78 &hs_b2b_pin79 &hs_b2b_pin80 &hs_b2b_pin81 &hs_b2b_pin82 &j10_lvl_shf_ctrl_pin>;
status = "ok";
};
rc_in_enable_init {
compatible = "modalai,voxl-rc-in";
pinctrl-names = "default";
pinctrl-0 = <&rc_in_3v3_en_pin>;
status = "ok";
};
};
In image 1.7.4 (SDK 1.1.3), recipes-kernel/linux-msm/files/dts/common/m0xxx-modalai-gpio.dtsi:
&soc {
voxl_gpio {
compatible = "modalai,voxl-gpio";
pinctrl-names = "default";
pinctrl-0 = <&tck22912G_ctrl_pin
&b2b_pin7 &b2b_pin9 &b2b_pin17 &b2b_pin19 &b2b_pin38 &b2b_pin40
&hs_b2b_pin41 &hs_b2b_pin42 &hs_b2b_pin43 &hs_b2b_pin44 &hs_b2b_pin46 &hs_b2b_pin47 &hs_b2b_pin50 &hs_b2b_pin51 &hs_b2b_pin78 &hs_b2b_pin79 &hs_b2b_pin80 &hs_b2b_pin81 &hs_b2b_pin82 &hs_b2b_pin95 &hs_b2b_pin96
&j10_lvl_shf_ctrl_pin &rc_in_3v3_en_pin &ds2_led_red &ds2_led_green &ds2_led_blue &id_som_1 &id_som_2 &id_mai_3 &id_mai_4>;
modalai,gpio-init-output-high = <0 1 53 56 57 85 86 87 88 89 124 152 157 159>;
modalai,gpio-init-output-low = <36 37 46 54 55 67 82 83 84 131 153 154 155>;
modalai,gpio-init-input = <48 49 50 51 52>;
status = "ok";
};
voxl_fsync {
compatible = "modalai,voxl-fsync";
pinctrl-names = "default";
pinctrl-0 = <&camera_sync_110 &camera_sync_111 &camera_sync_112 &camera_sync_113 &camera_sync_114>;
status = "ok";
};
};
And then in image 1.8.06 (SDK v1.6.3) that is on the drone with the bind issues, recipes-kernel/linux-msm/files/dts/common/m0xxx-modalai-gpio.dtsi:
&soc {
voxl_gpio {
compatible = "modalai,voxl-gpio";
pinctrl-names = "default";
pinctrl-0 = <&tck22912G_ctrl_pin
&b2b_pin7 &b2b_pin9 &b2b_pin17 &b2b_pin19 &b2b_pin38 &b2b_pin40
&hs_b2b_pin41 &hs_b2b_pin42 &hs_b2b_pin43 &hs_b2b_pin44 &hs_b2b_pin46 &hs_b2b_pin47 &hs_b2b_pin50 &hs_b2b_pin51 &hs_b2b_pin78 &hs_b2b_pin79 &hs_b2b_pin80 &hs_b2b_pin81 &hs_b2b_pin82 &hs_b2b_pin95 &hs_b2b_pin96
&j10_lvl_shf_ctrl_pin &rc_in_3v3_en_pin &ds2_led_red &ds2_led_green &ds2_led_blue &id_som_1 &id_som_2 &id_mai_3 &id_mai_4
&camera_sync_110 &camera_sync_111 &camera_sync_112 &camera_sync_113 &camera_sync_114>;
modalai,gpio-init-output-high = <0 1 53 56 57 67 85 86 87 88 89 124 152 157 159>;
modalai,gpio-init-output-low = <36 37 54 55 82 83 84 131 153 154 155>;
modalai,gpio-init-input = <48 49 50 51 52 110 111 112 113 114>;
status = "ok";
};
voxl_fsync {
compatible = "modalai,voxl-fsync";
pinctrl-names = "default";
status = "ok";
};
};
So the gpio initialization process changed and rc_in_enable_init was removed between SDK v1.1.2 and v1.1.3, and between SDK v1.1.3 and v1.6.3, GPIO pin 67 got moved from modalai,gpio-init-output-low to modalai,gpio-init-output-high and GPIO pin 46 got removed from modalai,gpio-init-output-low.
https://gitlab.com/voxl-public/system-image-build/meta-voxl2-bsp/-/commit/538c324713548174c8c1694680e9cba7f2d47bcb
https://gitlab.com/voxl-public/system-image-build/meta-voxl2-bsp/-/commit/ccd3893e062b03d05885da5a279be2f8d2f6c97c
Idk which change is responsible for the binding issues. I'd like to avoid flashing v1.1.3 to narrow it down. Can someone explain how the pins are meant to function for my set-up (M0094 + M0054, rc already bound)?