I’m working on a devicetree for colibri imx8qxp module attached to a Toradex colibri-evaluation board 3.2. What Im trying to do is to enable i2c on SODIMM 23 and SODIM 138. The final solution will have an rtc (pt7c4339) connected to the pins.
pin functionality is set with.
&iomuxc {
/* Colibri I2C2 */
pinctrl_i2c2: i2c2grp {
fsl,pins = <
IMX8QXP_MIPI_DSI1_GPIO0_01_ADMA_I2C2_SDA 0x6000061 /* SODIMM 23 */
IMX8QXP_MIPI_DSI1_GPIO0_00_ADMA_I2C2_SCL 0x6000061 /* SODIMM 138 */
;
};
When I run I2c detect a new i2c bus is discovered i2c-18
i2cdetect -l
i2c-17 i2c 5a810000.i2c I2C adapter
i2c-18 i2c 5a820000.i2c I2C adapter
i2c-16 i2c 5a800000.i2c I2C adapter
I try to measure with a logic analyzer on pin 23 and 138. I expect to get a request but I get nothing.
i2cdump -r 0-0xf 18 0x68 b
Here is the complete devicetree imx8x-colibri-eval-v3.dtsi that is built with yocto toradex 5.4.0
// SPDX-License-Identifier: GPL-2.0+ OR X11
/*
* Copyright 2018-2021 Toradex
*/
/ {
aliases {
/* rtc0 = &rtc_i2c; */
rtc0 = &rtc_pt7c4339;
rtc1 = &rtc;
};
/* fixed crystal dedicated to mcp25xx */
clk16m: clock-16mhz-fixed {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <16000000>;
};
extcon_usbc_det: usbc_det {
compatible = "linux,extcon-usb-gpio";
debounce = <25>;
id-gpio = <&lsio_gpio5 9 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbc_det>;
};
reg_3v3: regulator-3v3 {
compatible = "regulator-fixed";
regulator-name = "3.3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_usbh_vbus: regulator-usbh-vbus {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbh1_reg>;
regulator-name = "usbh_vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&lsio_gpio4 3 GPIO_ACTIVE_LOW>;
regulator-always-on;
};
};
/* Colibri Analogue Inputs */
&adc0 {
status = "okay";
};
/* Colibri PWM_A */
&adma_pwm {
status = "okay";
};
/* Colibri FastEthernet */
&fec1 {
status = "okay";
};
/* Colibri I2C */
&i2c1 {
status = "okay";
/* M41T0M6 real time clock on carrier board */
rtc_i2c: rtc@68 {
compatible = "st,m41t0";
reg = <0x68>;
};
};
&dma_subsys {
i2c_rpbus_2: i2c_rpbus_2 {
compatible = "fsl,i2c-rpbus";
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
};
};
&i2c2 {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
status = "okay";
/* PT7C4339 real time clock */
rtc_pt7c4339: rtc_pt7c4339@68 {
compatible = "pericom,pt7c4339";
reg = <0x68>;
};
};
&iomuxc {
/* Colibri I2C2 */
pinctrl_i2c2: i2c2grp {
fsl,pins = <
IMX8QXP_MIPI_DSI1_GPIO0_01_ADMA_I2C2_SDA 0x6000061 /* SODIMM 23 */
IMX8QXP_MIPI_DSI1_GPIO0_00_ADMA_I2C2_SCL 0x6000061 /* SODIMM 138 */
>;
};
};
&jpegdec {
status = "okay";
};
&jpegenc {
status = "okay";
};
/* Colibri SPI */
&lpspi2 {
mcp2515: can@0 {
compatible = "microchip,mcp2515";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_can_int>;
reg = <0>;
clocks = <&clk16m>;
interrupt-parent = <&lsio_gpio3>;
interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
spi-max-frequency = <10000000>;
status = "okay";
};
/* To keep the CAN controller enabled by default,
* disable conflicting spidev. This spidev device
* enables with the devicetree overlay.
*/
spidev0: spidev@0 {
status = "disabled";
};
};
/* Colibri UART_B */
&lpuart0 {
status = "disabled";
};
/* Colibri UART_C */
&lpuart2 {
status = "disabled";
};
/* Colibri UART_A */
&lpuart3 {
status = "disabled";
};
&lsio_gpio3 {
/*
* Add GPIO3_10 as a wakeup source:
* Pin: 157 SC_P_QSPI0A_DATA1 (SODIMM_45)
* Type: 6 SC_PAD_WAKEUP_RISE_EDGE
* Line: 10 GPIO3_IO10
*/
pad-wakeup = <IMX8QXP_QSPI0A_DATA1 6 10>;
pad-wakeup-num = <1>;
};
/* Colibri PWM_B */
&pwm0 {
status = "okay";
};
/* Colibri PWM_C */
&pwm1 {
status = "okay";
};
/* Colibri PWM_D */
&pwm2 {
status = "okay";
};
/* USB PHY for &usbotg3 */
&usb3phynop1 {
status = "okay";
};
&usbotg1 {
extcon = <&extcon_usbc_det &extcon_usbc_det>;
vbus-supply = <®_usbh_vbus>;
srp-disable;
hnp-disable;
adp-disable;
power-active-high;
disable-over-current;
status = "okay";
};
&usbotg3 {
dr_mode = "host";
status = "okay";
};
/* USB PHY for &usbotg1 */
&usbphy1 {
status = "okay";
};
/* Colibri SD/MMC Card */
&usdhc2 {
status = "okay";
};
&vpu_decoder {
status = "okay";
};
&vpu_encoder {
status = "okay";
};
&vpu_lpcg {
status = "okay";
};