# xilinx/linux-xlnx architecture

> Architecture diagram of the GitHub repository xilinx/linux-xlnx, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/xilinx/linux-xlnx
- Repository: https://github.com/xilinx/linux-xlnx

## Overview

This is a Linux kernel source subset, not a standalone application: its components provide architecture-specific support and reusable runtime services to device drivers and userspace. Typical interactions include userspace configuring a device or consuming its interface, a subsystem driver submitting work through a kernel framework, and hardware producing results or completion events. The sampled files support several independent workflows rather than one end-to-end pipeline. The tree and excerpts are partial, so links between unsampled subsystem components are omitted.

Main entry points: [`drivers/spi/spi-axi-spi-engine.c`](https://github.com/xilinx/linux-xlnx/blob/master/drivers/spi/spi-axi-spi-engine.c) (SPI Engine), [`drivers/usb/gadget/function/f_mass_storage.c`](https://github.com/xilinx/linux-xlnx/blob/master/drivers/usb/gadget/function/f_mass_storage.c) (USB mass storage), [`crypto/crypto_engine.c`](https://github.com/xilinx/linux-xlnx/blob/master/crypto/crypto_engine.c) (Crypto engine), [`drivers/dma/dmaengine.c`](https://github.com/xilinx/linux-xlnx/blob/master/drivers/dma/dmaengine.c) (DMAengine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_arch["Architecture support"]
  node_arm["ARM support<br/>[setup.c]"]
  node_arc["ARC support<br/>[setup.c]"]
  node_alpha["Alpha support<br/>[setup.c]"]
end

subgraph group_dma["DMA services"]
  node_dma_framework["DMAengine<br/>[dmaengine.c]"]
  node_iio_buffer["IIO DMA buffer"]
  node_ccp_dma["CCP DMA driver<br/>[ccp-dmaengine.c]"]
end

subgraph group_media["Media and accelerators"]
  node_isp["Xilinx ISP"]
  node_aie_driver["AI Engine driver<br/>[ai-engine-aie2ps.c]"]
  node_aie_uio["AI Engine UIO"]
  node_i915_engine["i915 engines<br/>[intel_engine_cs.c]"]
  node_xe_engine["Xe engines<br/>[xe_hw_engine.c]"]
end

subgraph group_io["Storage and interfaces"]
  node_spi_engine["SPI Engine"]
  node_mass_storage["USB mass storage<br/>[f_mass_storage.c]"]
  node_romfs["RomFS access<br/>[storage.c]"]
end

subgraph group_crypto["Crypto services"]
  node_crypto_engine["Crypto engine<br/>[crypto_engine.c]"]
end

node_users(("Userspace"))
node_spi_client(("SPI clients"))
node_usb_host(("USB host"))
node_backing_file["Backing file"]
node_crypto_clients(("Crypto clients"))
node_isp_clients(("V4L2 clients"))
node_aie_users(("AI Engine users"))

node_iio_buffer -->|"submits transfers"| node_dma_framework
node_ccp_dma -->|"registers channels"| node_dma_framework
node_spi_client -->|"submits messages"| node_spi_engine
node_spi_engine -->|"returns results"| node_users
node_usb_host -->|"sends commands"| node_mass_storage
node_mass_storage -->|"reads and writes"| node_backing_file
node_crypto_clients -->|"queues requests"| node_crypto_engine
node_crypto_engine -->|"completes requests"| node_crypto_clients
node_isp_clients -->|"sets controls"| node_isp
node_aie_users -->|"uses device interface"| node_aie_driver
node_aie_users -->|"maps and signals"| node_aie_uio

click node_arm "https://github.com/xilinx/linux-xlnx/blob/master/arch/arm/kernel/setup.c"
click node_arc "https://github.com/xilinx/linux-xlnx/blob/master/arch/arc/kernel/setup.c"
click node_alpha "https://github.com/xilinx/linux-xlnx/blob/master/arch/alpha/kernel/setup.c"
click node_dma_framework "https://github.com/xilinx/linux-xlnx/blob/master/drivers/dma/dmaengine.c"
click node_iio_buffer "https://github.com/xilinx/linux-xlnx/blob/master/drivers/iio/buffer/industrialio-buffer-dmaengine.c"
click node_ccp_dma "https://github.com/xilinx/linux-xlnx/blob/master/drivers/crypto/ccp/ccp-dmaengine.c"
click node_spi_engine "https://github.com/xilinx/linux-xlnx/blob/master/drivers/spi/spi-axi-spi-engine.c"
click node_mass_storage "https://github.com/xilinx/linux-xlnx/blob/master/drivers/usb/gadget/function/f_mass_storage.c"
click node_romfs "https://github.com/xilinx/linux-xlnx/blob/master/fs/romfs/storage.c"
click node_crypto_engine "https://github.com/xilinx/linux-xlnx/blob/master/crypto/crypto_engine.c"
click node_isp "https://github.com/xilinx/linux-xlnx/blob/master/drivers/media/platform/xilinx/xilinx-isppipeline.c"
click node_aie_driver "https://github.com/xilinx/linux-xlnx/blob/master/drivers/misc/xilinx-ai-engine/ai-engine-aie2ps.c"
click node_aie_uio "https://github.com/xilinx/linux-xlnx/blob/master/drivers/uio/uio_xilinx_ai_engine.c"
click node_i915_engine "https://github.com/xilinx/linux-xlnx/blob/master/drivers/gpu/drm/i915/gt/intel_engine_cs.c"
click node_xe_engine "https://github.com/xilinx/linux-xlnx/blob/master/drivers/gpu/drm/xe/xe_hw_engine.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_arm,node_arc,node_alpha,node_users,node_spi_client,node_crypto_clients,node_isp_clients,node_aie_users toneBlue
class node_dma_framework,node_iio_buffer,node_ccp_dma toneAmber
class node_isp,node_aie_driver,node_aie_uio,node_i915_engine,node_xe_engine toneMint
class node_spi_engine,node_mass_storage,node_romfs toneRose
class node_crypto_engine,node_usb_host,node_backing_file toneIndigo
```

## Components

### Architecture support

- [ARM support](https://github.com/xilinx/linux-xlnx/blob/master/arch/arm/kernel/setup.c): `arch/arm/kernel/setup.c`
- [ARC support](https://github.com/xilinx/linux-xlnx/blob/master/arch/arc/kernel/setup.c): `arch/arc/kernel/setup.c`
- [Alpha support](https://github.com/xilinx/linux-xlnx/blob/master/arch/alpha/kernel/setup.c): `arch/alpha/kernel/setup.c`

### DMA services

- [DMAengine](https://github.com/xilinx/linux-xlnx/blob/master/drivers/dma/dmaengine.c): `drivers/dma/dmaengine.c`
- [IIO DMA buffer](https://github.com/xilinx/linux-xlnx/blob/master/drivers/iio/buffer/industrialio-buffer-dmaengine.c): `drivers/iio/buffer/industrialio-buffer-dmaengine.c`
- [CCP DMA driver](https://github.com/xilinx/linux-xlnx/blob/master/drivers/crypto/ccp/ccp-dmaengine.c): `drivers/crypto/ccp/ccp-dmaengine.c`

### Media and accelerators

- [Xilinx ISP](https://github.com/xilinx/linux-xlnx/blob/master/drivers/media/platform/xilinx/xilinx-isppipeline.c): `drivers/media/platform/xilinx/xilinx-isppipeline.c`
- [AI Engine driver](https://github.com/xilinx/linux-xlnx/blob/master/drivers/misc/xilinx-ai-engine/ai-engine-aie2ps.c): `drivers/misc/xilinx-ai-engine/ai-engine-aie2ps.c`
- [AI Engine UIO](https://github.com/xilinx/linux-xlnx/blob/master/drivers/uio/uio_xilinx_ai_engine.c): `drivers/uio/uio_xilinx_ai_engine.c`
- [i915 engines](https://github.com/xilinx/linux-xlnx/blob/master/drivers/gpu/drm/i915/gt/intel_engine_cs.c): `drivers/gpu/drm/i915/gt/intel_engine_cs.c`
- [Xe engines](https://github.com/xilinx/linux-xlnx/blob/master/drivers/gpu/drm/xe/xe_hw_engine.c): `drivers/gpu/drm/xe/xe_hw_engine.c`

### Storage and interfaces

- [SPI Engine](https://github.com/xilinx/linux-xlnx/blob/master/drivers/spi/spi-axi-spi-engine.c): `drivers/spi/spi-axi-spi-engine.c`
- [USB mass storage](https://github.com/xilinx/linux-xlnx/blob/master/drivers/usb/gadget/function/f_mass_storage.c): `drivers/usb/gadget/function/f_mass_storage.c`
- [RomFS access](https://github.com/xilinx/linux-xlnx/blob/master/fs/romfs/storage.c): `fs/romfs/storage.c`

### Crypto services

- [Crypto engine](https://github.com/xilinx/linux-xlnx/blob/master/crypto/crypto_engine.c): `crypto/crypto_engine.c`

### Other components

- **Userspace**
- **SPI clients**
- **USB host**
- **Backing file**
- **Crypto clients**
- **V4L2 clients**
- **AI Engine users**

## Connections

- IIO DMA buffer → DMAengine: submits transfers
- CCP DMA driver → DMAengine: registers channels
- SPI clients → SPI Engine: submits messages
- SPI Engine → Userspace: returns results
- USB host → USB mass storage: sends commands
- USB mass storage → Backing file: reads and writes
- Crypto clients → Crypto engine: queues requests
- Crypto engine → Crypto clients: completes requests
- V4L2 clients → Xilinx ISP: sets controls
- AI Engine users → AI Engine driver: uses device interface
- AI Engine users → AI Engine UIO: maps and signals
