
Key Parameters
- Baud rate — Communication speed (bits per second)
- Start/Stop bits — Frame delimiters
- Parity bit — Optional error checking
- Data bits — 5–9 bits per frame
- Flow control — Hardware handshaking via CTS/RTS

Transfer Modes by Subsystem
| Subsystem | Transfer Mode | Baud Rates | Notes |
|---|---|---|---|
| Linux | FIFO, CPU DMA | 300 bps – 4 Mbps | DMA ideal for Bluetooth modules |
| Boot (UEFI) | FIFO only | Up to 115200 | 5–8 bits per character |
| aDSP | FIFO only | 115200, 230400, 460800, 921600, 1M, 3M, 6M | 5–8 bits per character |
Interface Components
Device Tree Sources
| Platform | File |
|---|---|
| Dragonwing IQ-9075 | arch/arm64/boot/dts/qcom/sa8775p.dtsi |
APIs
| Subsystem | Header |
|---|---|
| Linux | include/linux/tty.h |
| Boot | QcomPkg/Include/HSUart.h |
| aDSP | adsp_proc/core/api/buses/uart.h |
Software Configuration
Linux Device Tree Example
4-wire UART (with flow control):Kernel Configuration
Editkernel_platform/kernel/arch/arm64/configs/qcom_defconfig:
Verification
Debugging
Enable Debug Logs
Monitor UART Traffic
Troubleshooting
UART Device Not Detected (/dev/ttyHS* missing)
UART Device Not Detected (/dev/ttyHS* missing)
- Verify device tree status is
"ok" - Confirm
CONFIG_SERIAL_QCOM_GENI=yin kernel config - Check GPIO pin configurations and QUPAC access control settings
Data Transmission Failures / Garbled Data
Data Transmission Failures / Garbled Data
- Verify baud rate matches on both ends
- Check flow control configuration (CTS/RTS)
- Test with loopback mode first
Permission Denied
Permission Denied
High CPU Usage / Slow Transfer
High CPU Usage / Slow Transfer
- Switch from FIFO to DMA mode for high-speed transfers
- Check interrupt statistics:
cat /proc/interrupts | grep uart - Review power management:
cat /sys/kernel/debug/pm_genpd/pm_genpd_summary
Debugging Checklist
- Kernel config includes
CONFIG_SERIAL_QCOM_GENI=y - Device tree status set to
"ok"for UART node - GPIO pins properly configured and mapped
- QUPAC access control properly configured
- Baud rate matches on both sides
- Flow control settings are consistent
- Device file permissions are correct

