


Pad multiplexing

The NXP i.MX8QXP Reference Manual uses a pad name such as FLEXCAN0_RX to refer to the System-On-Chip pads. This pad name typically corresponds to the first pad functionality.

Electrical parameters of a pad


Use the device tree to configure pin IOMUX and pad control



The following example shows pad selection and IOMUX setting for a particular device: CAN0. On the Linux kernel source, you can find the CAN0 device tree node in arch/arm64/boot/dts/digi/ccimx8x-sbc-express.dtsi

ConnectCore 8X SBC Pro device tree
/* CAN0 */
&flexcan1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_flexcan1>;
	xceiver-supply = <&reg_5v_display>;
	status = "disabled";


ConnectCore 8X SBC Pro device tree
pinctrl_flexcan1: flexcan0grp {
    fsl,pins = <

The device tree pinctrl documentation binding explains the fsl,pins entry as consisting of three integers representing the IOMUX selection and electrical settings of the pin.

You can look closely at the macro to discern how the pin name for the IC is connected to the desired pad functionality. From left to right, the first part of the macro after the SC_P_ prefix is the PAD/PIN name in the IC. In this example, it is FLEXCAN0_RX. The second part (everything to the right of the PAD/PIN name) represents the functionality you would like to assign to that pad.

The SC_P_FLEXCAN0_RX_ADMA_FLEXCAN0_RX macro defined in include/dt-bindings/pinctrl/pads-imx8qxp.h contains two integers:


These two integers are:

  • Pin/pad identifier (SC_P_FLEXCAN0_RX)

  • IOMUX configuration setting (0)


Configure independent pin IOMUX and pad control


ConnectCore 8X SBC Pro device tree
&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_expansion>;

	/* Expansion Connector */
	pinctrl_expansion: expansiongrp {
		fsl,pins = <
			 * Comment the pads you wish to use on any
			 * device driver, and uncomment the ones you
			 * want to use as GPIO (requires disabling the
			 * driver that manages them).
			/* GPIO4_20 */
			SC_P_USDHC1_VSELECT_LSIO_GPIO4_IO20		0x06000020
			/* GPIO4_21 */
			SC_P_USDHC1_WP_LSIO_GPIO4_IO21			0x06000020
