A Yocto Project hardware layer for the LinHT Handheld Transceiver, providing machine configuration and hardware support for the CompuLab MCM-iMX93 based platform.
This layer provides hardware abstraction and device support for the LinHT project, developed by SP5WWP, OE3ANC and OK5VAS as part of the M17 project ecosystem. The layer targets the CompuLab MCM-iMX93 System-on-Module with custom hardware peripherals for radio frequency applications.
- SoM: CompuLab MCM-iMX93
- SoC: NXP i.MX93 (Cortex-A55 dual-core + Cortex-M33)
- Architecture: ARMv8.2-A (Cortex-A55)
- Codec: Wolfson WM8960 (I2C address 0x1a)
- Connected via SAI3 (I2S1)
- RF I/Q Interface: SX1255 transceiver
- Connected via SAI1 (I2S0)
- Bidirectional I/Q data streaming
- SPI control interface via LPSPI3
- LCD Controller: Sitronix ST7735R
- 128x160 pixel TFT display
- SPI interface via LPSPI6
- 270° rotation configured
- PWM backlight control via TPM3_CH3
- Keyboard: 9-key matrix (D1-D9)
- Buttons: PTT (internal/external), side button
- LEDs: 2x status LEDs
- PWM: Keyboard backlight via TPM3_CH2
- I2C: LPI2C3 for audio codec communication
- SPI:
- LPSPI3: SX1255 RF transceiver control
- LPSPI6: ST7735R display interface
- GPIO: Extensive GPIO mapping for user controls and RF management
meta-linht-hardware/
├── conf/
│ ├── layer.conf # Layer configuration
│ └── machine/
│ └── mcm-imx93.conf # Machine definition
├── recipes-kernel/
│ └── linux/
│ ├── linux-compulab_6.%.bbappend # Kernel recipe append
│ └── files/
│ ├── custom_defconfig.cfg # Kernel configuration
│ ├── sbc-mcm-imx93.dts # Device tree source
│ └── sbc-mcm-imx93.dtsi # Device tree include
├── COPYING.GPL-v3 # License file
└── README.md # This file
The mcm-imx93.conf machine configuration provides:
- Bootloader: U-Boot CompuLab variant
- Kernel: Linux 6.x with CompuLab patches
- Device Tree: Custom
sbc-mcm-imx93.dtb
- Serial Console: 115200 baud on ttyLP0
The layer appends custom configuration to the CompuLab kernel via linux-compulab_6.%.bbappend:
- DRM core infrastructure with KMS helpers
- TinyDRM framework for simple displays
- ST7735R panel driver support
- MIPI DBI interface support
- i.MX SPI controller (CONFIG_SPI_IMX)
- i.MX TPM PWM driver (CONFIG_PWM_IMX_TPM)
- USB Ethernet gadget support
- Mailbox framework
- Backlight class device support
The custom device tree (sbc-mcm-imx93.dtsi) configures:
- SAI1: I2S interface for SX1255 (TX_BCLK, TX_SYNC, TX_DATA, RX_DATA)
- SAI3: I2S interface for WM8960 with MCLK output
- LPSPI3: SPI for SX1255 control
- LPSPI6: SPI for ST7735R display
- LPI2C3: I2C for WM8960 codec
- TPM3: PWM channels for backlight control
- GPIO: User interface elements (keyboard, buttons, LEDs)
sound0: SX1255 I/Q interface (simple-audio-card)
sound1: WM8960 audio codec (fsl,imx-audio-wm8960)
- Add layer to
bblayers.conf
:
BBLAYERS += "/path/to/meta-linht-hardware"
- Set machine in
local.conf
:
MACHINE = "mcm-imx93"
This layer is distributed under the GNU General Public License v3.0. See COPYING.GPL-v3 for details.