# analogdevicesinc/linux architecture

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

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

## Overview

This is an ADI development branch of the Linux kernel, with support for ADI/Xilinx FPGA-integrated devices and Raspberry Pi boards. The tree spans architecture-specific kernel code and device drivers; the clearest product workflows represented here are configuring and streaming through the Xilinx ISP, exposing AI Engine resources to userspace, and moving device data through DMA-backed buffers. Generic kernel services and drivers provide supporting interfaces. The README identifies the supported platform scope, while sampled source excerpts support only some wiring; uncertain subsystem connections are omitted.

Main entry points: [`arch/arm/kernel/setup.c`](https://github.com/analogdevicesinc/linux/blob/main/arch/arm/kernel/setup.c) (Linux kernel), [`drivers/uio/uio_xilinx_ai_engine.c`](https://github.com/analogdevicesinc/linux/blob/main/drivers/uio/uio_xilinx_ai_engine.c) (AI Engine UIO), [`drivers/media/platform/xilinx/xilinx-isppipeline.c`](https://github.com/analogdevicesinc/linux/blob/main/drivers/media/platform/xilinx/xilinx-isppipeline.c) (Xilinx ISP), [`drivers/crypto/ccp/ccp-dmaengine.c`](https://github.com/analogdevicesinc/linux/blob/main/drivers/crypto/ccp/ccp-dmaengine.c) (CCP DMA provider)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["Kernel platforms"]
  node_kernel["Linux kernel<br/>[setup.c]"]
  node_arm["ARM support"]
  node_arc["ARC support"]
  node_alpha["Alpha support"]
end

subgraph group_fpga["FPGA devices"]
  node_isp["Xilinx ISP"]
  node_aie["AI Engine driver<br/>[ai-engine-aie2ps.c]"]
end

subgraph group_data["Data movement"]
  node_dma["DMAengine core<br/>[dmaengine.c]"]
  node_iio_buffer["IIO DMA buffer"]
  node_ccp["CCP DMA provider<br/>[ccp-dmaengine.c]"]
  node_crypto_engine["Crypto engine<br/>[crypto_engine.c]"]
end

subgraph group_interfaces["Kernel interfaces"]
  node_aie_uio["AI Engine UIO"]
  node_spi["SPI Engine"]
  node_mass_storage["USB mass storage<br/>[f_mass_storage.c]"]
end

node_board(("Board hardware"))
node_user(("Userspace"))
node_isp_controls(("ISP controls"))
node_media_sensor(("Media pipeline"))
node_iio_device(("IIO device"))
node_crypto_client(("Crypto client"))

node_board -->|"boots on"| node_kernel
node_kernel -->|"uses architecture"| node_arm
node_kernel -->|"uses architecture"| node_arc
node_kernel -->|"uses architecture"| node_alpha
node_isp_controls -->|"sets controls"| node_isp
node_media_sensor -->|"streams video"| node_isp
node_isp -->|"programs registers"| node_board
node_aie_uio -->|"exposes mappings"| node_user
node_aie_uio -->|"maps device memory"| node_board
node_user -.->|"requests simulated IRQ"| node_aie_uio
node_iio_device -->|"attaches buffer"| node_iio_buffer
node_iio_buffer -->|"requests transfers"| node_dma
node_ccp -->|"registers channels"| node_dma
node_ccp -->|"issues DMA commands"| node_board
node_crypto_client -->|"queues requests"| node_crypto_engine
node_spi -->|"controls SPI hardware"| node_board
node_mass_storage -->|"exports storage"| node_user

click node_kernel "https://github.com/analogdevicesinc/linux/blob/main/arch/arm/kernel/setup.c"
click node_arm "https://github.com/analogdevicesinc/linux/tree/main/arch/arm/kernel"
click node_arc "https://github.com/analogdevicesinc/linux/tree/main/arch/arc/kernel"
click node_alpha "https://github.com/analogdevicesinc/linux/tree/main/arch/alpha/kernel"
click node_isp "https://github.com/analogdevicesinc/linux/blob/main/drivers/media/platform/xilinx/xilinx-isppipeline.c"
click node_aie "https://github.com/analogdevicesinc/linux/blob/main/drivers/misc/xilinx-ai-engine/ai-engine-aie2ps.c"
click node_aie_uio "https://github.com/analogdevicesinc/linux/blob/main/drivers/uio/uio_xilinx_ai_engine.c"
click node_dma "https://github.com/analogdevicesinc/linux/blob/main/drivers/dma/dmaengine.c"
click node_iio_buffer "https://github.com/analogdevicesinc/linux/blob/main/drivers/iio/buffer/industrialio-buffer-dmaengine.c"
click node_ccp "https://github.com/analogdevicesinc/linux/blob/main/drivers/crypto/ccp/ccp-dmaengine.c"
click node_spi "https://github.com/analogdevicesinc/linux/blob/main/drivers/spi/spi-axi-spi-engine.c"
click node_mass_storage "https://github.com/analogdevicesinc/linux/blob/main/drivers/usb/gadget/function/f_mass_storage.c"
click node_crypto_engine "https://github.com/analogdevicesinc/linux/blob/main/crypto/crypto_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_kernel,node_arm,node_arc,node_alpha,node_user,node_crypto_client toneBlue
class node_isp,node_aie toneAmber
class node_dma,node_iio_buffer,node_ccp,node_crypto_engine toneMint
class node_aie_uio,node_spi,node_mass_storage toneRose
class node_board,node_isp_controls,node_media_sensor,node_iio_device toneIndigo
```

## Components

### Kernel platforms

- [Linux kernel](https://github.com/analogdevicesinc/linux/blob/main/arch/arm/kernel/setup.c): `arch/arm/kernel/setup.c`
- [ARM support](https://github.com/analogdevicesinc/linux/tree/main/arch/arm/kernel): `arch/arm/kernel`
- [ARC support](https://github.com/analogdevicesinc/linux/tree/main/arch/arc/kernel): `arch/arc/kernel`
- [Alpha support](https://github.com/analogdevicesinc/linux/tree/main/arch/alpha/kernel): `arch/alpha/kernel`

### FPGA devices

- [Xilinx ISP](https://github.com/analogdevicesinc/linux/blob/main/drivers/media/platform/xilinx/xilinx-isppipeline.c): `drivers/media/platform/xilinx/xilinx-isppipeline.c`
- [AI Engine driver](https://github.com/analogdevicesinc/linux/blob/main/drivers/misc/xilinx-ai-engine/ai-engine-aie2ps.c): `drivers/misc/xilinx-ai-engine/ai-engine-aie2ps.c`

### Data movement

- [DMAengine core](https://github.com/analogdevicesinc/linux/blob/main/drivers/dma/dmaengine.c): `drivers/dma/dmaengine.c`
- [IIO DMA buffer](https://github.com/analogdevicesinc/linux/blob/main/drivers/iio/buffer/industrialio-buffer-dmaengine.c): `drivers/iio/buffer/industrialio-buffer-dmaengine.c`
- [CCP DMA provider](https://github.com/analogdevicesinc/linux/blob/main/drivers/crypto/ccp/ccp-dmaengine.c): `drivers/crypto/ccp/ccp-dmaengine.c`
- [Crypto engine](https://github.com/analogdevicesinc/linux/blob/main/crypto/crypto_engine.c): `crypto/crypto_engine.c`

### Kernel interfaces

- [AI Engine UIO](https://github.com/analogdevicesinc/linux/blob/main/drivers/uio/uio_xilinx_ai_engine.c): `drivers/uio/uio_xilinx_ai_engine.c`
- [SPI Engine](https://github.com/analogdevicesinc/linux/blob/main/drivers/spi/spi-axi-spi-engine.c): `drivers/spi/spi-axi-spi-engine.c`
- [USB mass storage](https://github.com/analogdevicesinc/linux/blob/main/drivers/usb/gadget/function/f_mass_storage.c): `drivers/usb/gadget/function/f_mass_storage.c`

### Other components

- **Board hardware**
- **Userspace**
- **ISP controls**
- **Media pipeline**
- **IIO device**
- **Crypto client**

## Connections

- Board hardware → Linux kernel: boots on
- Linux kernel → ARM support: uses architecture
- Linux kernel → ARC support: uses architecture
- Linux kernel → Alpha support: uses architecture
- ISP controls → Xilinx ISP: sets controls
- Media pipeline → Xilinx ISP: streams video
- Xilinx ISP → Board hardware: programs registers
- AI Engine UIO → Userspace: exposes mappings
- AI Engine UIO → Board hardware: maps device memory
- Userspace → AI Engine UIO: requests simulated IRQ
- IIO device → IIO DMA buffer: attaches buffer
- IIO DMA buffer → DMAengine core: requests transfers
- CCP DMA provider → DMAengine core: registers channels
- CCP DMA provider → Board hardware: issues DMA commands
- Crypto client → Crypto engine: queues requests
- SPI Engine → Board hardware: controls SPI hardware
- USB mass storage → Userspace: exports storage
