Apalis iMX6 with Ixora alternate gpios

Hello everyone,

I have a second display I want to turn on but I need some extra GPIOs. All my 8 GPIOs from Ixora are occupied.

I’ve been looking for some alternate pins I could alter but I didn’t see any obvious pin I could deactivate to use as GPIO.

Do you know any pins that can be used as GPIO by removing from respective module and adding in iomux without any major issues?

If this helps, I could use any pin from

  • X14 - camera interface
  • pcie
  • sim card

These are probably not a good idea but I am not using:

  • can
  • spi
  • lvds
  • resistive touch

Thank you for your help in advance!

Hi

The pinout designer is a nice tool to keep an overview of the pins.

  • PCIe/LVDS use both differential pairs and are thus inherently not usable as GPIO.
  • The SIM card is not connected to the Apalis iMX6 but to the mini PCIe slot.
  • Resistive Touch comes from a touch controller. The one the Apalis iMX6 can be used as GPIO but I don’t know if there is a driver for that. Even if the driver exist that will require extensive work compared to other options. Also on another Apalis module you may not have that option.
  • CAN can be used as GPIO, but e.g. on a Apalis T30 the pins are dedicated to CAN, so probably not the best choice.

The parallel camera interface and SPI could both be used for your purpose. You would need to change the device tree to

  • disable the driver which is currently using the pins
  • add a new pinctrl node which muxes the pin GPIO
  • add that new node to an active node, e.g. to the iomuxc node

Max

Hello Max,

I will probably use the parallel camera interface pins for that. I’ll find the pins that I want and check its usage, disable them and create a new pinctrl node with them and use them in the driver i need.

i.e.remove from

imx6qdl-apalis-imx6.dtsi

		pinctrl_ipu1_csi0: ipu1csi0grp { /* parallel camera */
			fsl,pins = <
				MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12    0xb0b1
				MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13    0xb0b1
				MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14    0xb0b1
				MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15    0xb0b1
				MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16    0xb0b1
				MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17    0xb0b1
				MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18    0xb0b1
				MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19    0xb0b1
				MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK   0xb0b1
				MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC      0xb0b1
				MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC     0xb0b1
			>;
		};

the data pins and add them in my custom pinctrl

Thank you once again for that clarification.

Best Regards,
Joao