We are currently working on a custom carrier board for the Verdin IMX8MM 1GB DL module.
I am getting stuck on the device tree.
Our board is based on the Yavia board, so we are using the imx8mm-verdin-nonwifi-yavia.dts device tree as a starting point and we are writing an overlay on top of it.
In the overlay, we use pin SODIMM 19 for PWM_3_DSI instead of PWM1_out.
I have disabled pwm1, but the uboot keeps providing this message:
Starting kernel ...
[ 0.871983] imx-drm 32c00000.bus:display-subsystem: no available port
[ 2.479132] regulator-dummy: Underflow of regulator enable count
Starting version 250.5+
[ 5.436245] imx8mm-pinctrl 30330000.pinctrl: pin MX8MM_IOMUXC_GPIO1_IO01 already requested by 30660000.pwm; cannot claim for hdmi-connector
[ 5.502170] imx8mm-pinctrl 30330000.pinctrl: pin-11 (hdmi-connector) status -22
[ 5.538075] imx8mm-pinctrl 30330000.pinctrl: could not request pin 11 (MX8MM_IOMUXC_GPIO1_IO01) from group pwm3dsihpdgpiogrp on device 30330000.pinctrl
[ 5.553075] display-connector hdmi-connector: Error applying setting, reverse things back
[ 8.375964] mcp251xfd spi2.0 (unnamed net_device) (uninitialized): Failed to detect MCP251xFD (osc=0x00000000).
In the device tree, I am trying to add the HDMI controller, which is connected to i2c3. Moreover, I am trying to get a CAN connector working, which is connected to Toradex SPI2, so escpi1 in the device tree. We have a CAN chip on our external board.
Both the HDMI controller and CAN chip do not seem to work.
I do not know exactly what a BSP is, but I am using the torizoncore 6.2 without evaluation containers as base image.
*small correction, BSP is being use behind the scene, I was more interested if you are using yocto or TorizonCore.
I’m a little confused on this. PWM_3_DSI is the Verdin function on pin 19 for PWM1_OUT. We can see this via the datasheet on 5**.13 PWM**. And on 5.6 Displays, where it is used for backlight brightness control. So it doesn’t make sense to disable/enable this pin for the same function. Can you elaborate on what you are trying to do here?
The SCL and SDA of I2C_4 of the verdin module are directly connected to the Lontium chip.
I understood that the I2C_4 corresponds with the i2c3 in the device tree, so I added the information to the i2c3 part.
The i2c2 signal is also used , but this is used for a HDMI i2c level shifter.
Blockquote And on 5.6 Displays, where it is used for backlight brightness control. So it doesn’t make sense to disable/enable this pin for the same function. Can you elaborate on what you are trying to do here?
I think, what I was trying to achieve is to use the SODIMM 19 pin as hdp-gpio.
In the posted device tree, i have commented the whole HDMI part out and this resolves this error:
imx8mm-pinctrl 30330000.pinctrl: pin MX8MM_IOMUXC_GPIO1_IO01 already requested by 30660000.pwm; cannot claim for hdmi-connector
However, I do not understand what I should adapt to avoid to get this error.
That error is based on two drivers attempting to use the same pin. MX8MM_IOMUXC_GPIO1_IO01 is in a two pin control groups: pwm1grp, pwm3dsihpdgpiogrp. So you’re correct to disable pwm1.
It’s a bit hard to understand what was enabled when testing. And your hdmi_connector group looks a bit more complicated than it needs to be. I’m not sure you need pinctrl-0 property, or if this is where its seeing the conflict.
Here is our imx8mm-verdin hdmi connector node hdmi_connector
And we also have our sample overlay that modifies the node: overlay @ hdmi node
Are you able to mimic these nodes for for system to see if will fix the error?
Taking a look at the dts for imx8mm, I believe you want to use the &i2c4 node and not &i2c3.
Looking at the schematics for the Yavia board. the I2C connection for the lt8912 traces back to SODIMM pin 14 and 12.This is associated with pinctrl_i2c4:i2c4grp which has a reference note of Verdin I2C_1. Which is used by the &I2c4 node.
Here is the device tree imx8mm dts. I believe this to be correct. Would you mind trying to use this node instead?