Part Number: AM68
Other Parts Discussed in Thread: TCA6408, , AM69
Hi TI Community,
I am trying to bring up a Technexion TEVS camera module on the SK-AM68 (AM68A-SK) board using the official `tn,tevs` driver.
Current Status:
- PCA9543 I2C mux is working(`i2cdetect -y 3` shows 0x70).
- TCA6408 IO expander (`exp3 @ 0x20`) is working and GPIO hog is applied successfully.
- TEVS driver probes but cannot communicate with the sensor.
Problem: The sensor is not responding on I2C bus 4. No device appears at address `0x48`.
bash i2cdetect -y 4 (no 48 detected)
This is my log:
root@am68a-sk:/opt/edgeai-gst-apps# dmesg | grep tevs
[ 5.487384] tevs 4-0048: tevs_probe() device node: tevs@48
[ 5.498970] tevs 4-0048: data-lanes [4] ,continuous-clock [0], supports-over-4k-res [0], hw-reset [1], trigger-mode [0], data-frequency [800]
[ 5.556407] tevs 4-0048: tevs_power_off()
[ 5.671621] tevs 4-0048: tevs_power_on()
[ 6.048756] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 6.145262] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 6.159306] tevs 4-0048: tevs bootup state: 65535
[ 6.428085] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 6.477443] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 6.498352] tevs 4-0048: tevs bootup state: 65535
[ 6.777091] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 6.801895] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 6.837419] tevs 4-0048: tevs bootup state: 65535
[ 7.096701] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 7.103753] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 7.110798] tevs 4-0048: tevs bootup state: 65535
[ 7.384702] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 7.391720] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 7.399862] tevs 4-0048: tevs bootup state: 65535
[ 7.672800] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 7.679871] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 7.688022] tevs 4-0048: tevs bootup state: 65535
[ 7.960718] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 7.967754] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 7.976041] tevs 4-0048: tevs bootup state: 65535
[ 8.248695] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 8.255673] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 8.262684] tevs 4-0048: tevs bootup state: 65535
[ 8.536689] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 8.543792] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 8.550829] tevs 4-0048: tevs bootup state: 65535
[ 8.824707] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 8.831706] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 8.838707] tevs 4-0048: tevs bootup state: 65535
[ 9.112948] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 9.120651] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 9.128408] tevs 4-0048: tevs bootup state: 65535
[ 9.400692] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 9.407690] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 9.414679] tevs 4-0048: tevs bootup state: 65535
[ 9.692684] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 9.699674] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 9.706663] tevs 4-0048: tevs bootup state: 65535
[ 9.976717] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 9.983755] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 9.990725] tevs 4-0048: tevs bootup state: 65535
[ 10.264753] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 10.271776] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 10.280649] tevs 4-0048: tevs bootup state: 65535
[ 10.552874] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 10.600581] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 10.607728] tevs 4-0048: tevs bootup state: 65535
[ 10.872811] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 10.880441] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 10.887499] tevs 4-0048: tevs bootup state: 65535
[ 11.160762] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 11.167903] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 11.176762] tevs 4-0048: tevs bootup state: 65535
[ 11.448707] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 11.456382] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 11.463672] tevs 4-0048: tevs bootup state: 65535
[ 11.736713] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 11.743871] tevs 4-0048: Failed to read from register: ret=-121, reg=0x3004
[ 11.750955] tevs 4-0048: tevs bootup state: 65535
[ 11.750963] tevs 4-0048: tevs bootup timeout: state: 0xFFFF
[ 12.024971] tevs 4-0048: cannot find tevs camera
[ 12.032020] tevs: probe of 4-0048 failed with error -22
*What I have tried so far:
- Correct pinmux for reset pin (WKUP_GPIO0_70)
- Both GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW for reset-gpios
- GPIO hog for CSI_VIO_SEL and CSI_SEL_FPC
- Removed standby-gpios temporarily
*Device Tree (latest version):
- I have attached my current overlay (k3-am68-sk-tevs.dtso).
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/gpio.h>
#include "k3-pinctrl.h"
&wkup_pmx2 {
tevs_cam0_reset_pins: tevs-cam0-reset-pins {
pinctrl-single,pins = <
J721S2_WKUP_IOPAD(0x0044, PIN_OUTPUT, 7)
>;
};
tevs_cam1_reset_pins: tevs-cam1-reset-pins {
pinctrl-single,pins = <
J721S2_WKUP_IOPAD(0x00A8, PIN_OUTPUT, 7)
>;
};
};
&wkup_gpio0 {
pinctrl-names = "default";
pinctrl-0 = <&mcu_rpi_header_gpio0_pins0_default>,
<&mcu_rpi_header_gpio0_pins1_default>;
};
&exp3 {
csi-vio-sel-hog {
gpio-hog;
gpios = <0 GPIO_ACTIVE_HIGH>;
output-high;
};
csi-sel-fpc-hog {
gpio-hog;
gpios = <1 GPIO_ACTIVE_HIGH>;
output-low;
};
};
&main_i2c1 {
status = "okay";
clock-frequency = <400000>;
i2c-mux@70 {
compatible = "nxp,pca9543";
reg = <0x70>;
#address-cells = <1>;
#size-cells = <0>;
i2c-alias-pool = /bits/ 16 <0x3c 0x3d>;
status = "okay";
/* CAM0 */
cam0_i2c: i2c@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
tevs_cam0: tevs@48 {
compatible = "tn,tevs";
reg = <0x48>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&tevs_cam0_reset_pins>;
reset-gpios = <&wkup_gpio0 70 GPIO_ACTIVE_HIGH>;
//standby-gpios = <&exp3 3 GPIO_ACTIVE_HIGH>;
hw-reset;
data-lanes = <4>;
data-frequency = <800>;
continuous-clock = <0>;
port {
csi2_cam0: endpoint {
remote-endpoint = <&csi2rx0_in_sensor>;
clock-lanes = <0>;
data-lanes = <1 2 3 4>;
link-frequencies = /bits/ 64 <800000000>;
};
};
};
};
};
};
&csi0_port0 {
status = "okay";
csi2rx0_in_sensor: endpoint {
remote-endpoint = <&csi2_cam0>;
bus-type = <4>;
clock-lanes = <0>;
data-lanes = <1 2 3 4>;
link-frequencies = /bits/ 64 <800000000>;
};
};
&dphy_rx0 {
status = "okay";
};
&ti_csi2rx0 {
status = "okay";
};
*Questions:
- Is the reset pin (WKUP_GPIO0_70) correct for TEVS on AM68 SK?
- Does TEVS require any special power-up sequence or additional configuration on TCA6408?
- Any known working Device Tree example for TEVS on AM68 series?
- Should I try forcing the sensor into a different mode or using only hardware reset?
Any help or suggestion would be greatly appreciated.
Hardware:
- Board: SK-AM68 (PROC125E2)
- Camera: Technexion TEVS (AR0522-M-S140-IR-RPI22)
- Kernel: TI Linux 6.1 (edgeai SDK)



