Hello! I'm using MPU-6050 IMU attached to i.MX6 i2c1 pins on Linux. I've attached it with Device Tree and it works fine. OK, the thing is: I probed SDA and SCL pins and noticed they "idle" at 1.8V, which is out-of-specs (too low) for the chip. I want them to be pulled to 3.3V externally. My breakout board/shield for the chip carries 4.7kΩ pull-up resistors (to 3.3V) for I²C pins, and I've recently discovered the UDOO board has another 4.7kΩ pull-up resistor pair attached to EIM-D21/I2C1_SCL and EIM_D28/I2C1_SDA pins, also pulling to 3.3V [1, p.6, C4]. I'm quite sure 1.8V is due to i.MX6 having internal pull-ups for those pins, and surely there is a relevant entry in [2]: Code: pinctrl_i2c1: i2c1grp { fsl,pins = < MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 >; }; and according to i.MX6Q reference[3, sec. 36.4.234., p. 2200] have pull-ups enabled. I changed this to: Code: pinctrl_i2c1: i2c1grp { fsl,pins = < // NOTE: Internal pull-ups disabled MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001a8b1 MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001a8b1 >; }; compiled the .dtb and put it in SD card, but no luck... still 1.8V. I have no further clue what's going on. Anyone has an idea? [1] http://download.udoo.org/files/schematics/UDOO_REV_D_schematics.pdf [2] arch/arm/boot/dts/imx6qdl-udoo.dtsi [3] http://cache.freescale.com/files/32bit/doc/ref_manual/IMX6DQRM.pdf
Hello again! I retested on a fresh UDOO Quad board and it works as expected. It's now evident to me that the 1.8V level is caused by the SAM3X chip which had sustained damage from a short circuit a while back. While the above is the correct way to disable the internal pull-ups on i.MX6 for I²C pins, it's not needed to disable them in virtually any case. The default pull-up strength of internal pull-ups is 100kΩ, thus having negligible effect if you add any external pull-up on few kΩ range (e.g., 4.7kΩ). Case closed. Sorry for the noise.