Hi All,
we use Apalis IMX8 with Torizon 5.4.115-5.3.0+git.dbdbcabf0f98 (no customizations so far) and would like to use SODIM 275 and 281 as GPIO output. According to the UM, this means we want to use mode 3 for both pins:
X1 Pin | i.MX 8 Ball Name | Ball | ALT0 | ALT1 | ALT3 | Type | Default Mode | Reset State | Power Block |
---|---|---|---|---|---|---|---|---|---|
275 | SIM0_GPIO0_00 | AP46 | DMA.SIM0.POWER_EN | LSIO.GPIO0.IO05 | GPIO | ALT3 | PD | VDD_SIM_3P3 | |
281 | LVDS1_I2C0_SCL | BL35 | LVDS1.I2C0.SCL | LVDS1.GPIO0.IO02 | LSIO.GPIO1.IO12 | GPIO | ALT0 | PU | VDD_LVDS_DIG_3P3 |
Checking the device tree sources, I see following entries for 275:
#define IMX8QM_SIM0_GPIO0_00 5
#define IMX8QM_SIM0_GPIO0_00_DMA_SIM0_POWER_EN IMX8QM_SIM0_GPIO0_00 0
#define IMX8QM_SIM0_GPIO0_00_LSIO_GPIO0_IO05 IMX8QM_SIM0_GPIO0_00 3
/* Apalis LCD1_ */
pinctrl_sim0_gpios: sim0gpiosgrp {
fsl,pins = <
/* Apalis LCD1_G5 */
IMX8QM_SIM0_CLK_LSIO_GPIO0_IO00 0x00000021
/* Apalis LCD1_G3 */
IMX8QM_SIM0_GPIO0_00_LSIO_GPIO0_IO05 0x00000021
/* Apalis TS_5 */
IMX8QM_SIM0_IO_LSIO_GPIO0_IO02 0x00000021
/* Apalis LCD1_G4 */
IMX8QM_SIM0_RST_LSIO_GPIO0_IO01 0x00000021
>;
};
and for 281:
#define IMX8QM_LVDS1_I2C0_SCL 58
#define IMX8QM_LVDS1_I2C0_SCL_LVDS1_I2C0_SCL IMX8QM_LVDS1_I2C0_SCL 0
#define IMX8QM_LVDS1_I2C0_SCL_LVDS1_GPIO0_IO02 IMX8QM_LVDS1_I2C0_SCL 1
#define IMX8QM_LVDS1_I2C0_SCL_LSIO_GPIO1_IO12 IMX8QM_LVDS1_I2C0_SCL 3
/* Apalis LCD1_G6+7 */
pinctrl_lvds1_i2c0_gpios: lvds1i2c0gpiosgrp {
fsl,pins = <
/* Apalis LCD1_G6 */
IMX8QM_LVDS1_I2C0_SCL_LSIO_GPIO1_IO12 0x00000021
/* Apalis LCD1_G7 */
IMX8QM_LVDS1_I2C0_SDA_LSIO_GPIO1_IO13 0x00000021
>;
};
I can confirm these settings are present in the active device tree, by both, unpacking the dtb file and parsing through the /proc/device-tree/scu/pinctrl
file system.
I can also (at least I thought) confirm they are applied during the boot as this is what I see in pinctrl-handles
under /sys/kernel/debug/pinctrl
Requested pin control handlers their pinmux maps:
device: scu:pinctrl current state: default
state: default
type: MUX_GROUP controller scu:pinctrl group: lvds1i2c0gpiosgrp (19) function: apalis-imx8qm (0)
type: CONFIGS_PIN controller scu:pinctrl pin IMX8QM_LVDS1_I2C0_SCL (58) config 00000003 config 00000021
type: CONFIGS_PIN controller scu:pinctrl pin IMX8QM_LVDS1_I2C0_SDA (59) config 00000003 config 00000021
type: MUX_GROUP controller scu:pinctrl group: sim0gpiosgrp (22) function: apalis-imx8qm (0)
type: CONFIGS_PIN controller scu:pinctrl pin IMX8QM_SIM0_CLK (0) config 00000003 config 00000021
type: CONFIGS_PIN controller scu:pinctrl pin IMX8QM_SIM0_GPIO0_00 (5) config 00000003 config 00000021
type: CONFIGS_PIN controller scu:pinctrl pin IMX8QM_SIM0_IO (2) config 00000003 config 00000021
type: CONFIGS_PIN controller scu:pinctrl pin IMX8QM_SIM0_RST (1) config 00000003 config 00000021
or in pinconf-pins
at the same location:
pin 5 (IMX8QM_SIM0_GPIO0_00): 0x18000021
pin 58 (IMX8QM_LVDS1_I2C0_SCL): 0x18000021
At the same time, the GPIOs also seem to be exported and set (/sys/kernel/debug/gpio
):
gpiochip1: GPIOs 448-479, parent: platform/5d090000.gpio, 5d090000.gpio:
...
gpio-460 (MXM3_281 |sysfs ) out hi
...
gpiochip0: GPIOs 480-511, parent: platform/5d080000.gpio, 5d080000.gpio:
...
gpio-485 (MXM3_275 |sysfs ) out hi
...
but still, the pin 281 measures as low and writing to the GPIO value has no effect, while for 275 it worked out of the box.