# lineageos/android_kernel_xiaomi_sm6150 architecture

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

- Interactive diagram: https://gitdiagram.com/lineageos/android_kernel_xiaomi_sm6150
- Repository: https://github.com/lineageos/android_kernel_xiaomi_sm6150

## Overview

This is the Linux kernel: a hardware-facing runtime that boots on supported platforms and provides device, storage, and kernel services. The sampled files expose several distinct paths—USB power negotiation and mass storage, SPI and audio DMA, crypto acceleration, socket-local BPF storage, ROMFS reads, and GPU engine support—rather than one end-to-end application flow. Edges are limited to relationships evidenced by the excerpts; broader boot and subsystem wiring is not inferred from the file tree alone.

Main entry points: [`drivers/usb/pd/policy_engine.c`](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/usb/pd/policy_engine.c) (USB PD policy), [`sound/core/pcm_dmaengine.c`](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/sound/core/pcm_dmaengine.c) (PCM DMA adapter), [`include/linux/dmaengine.h`](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/include/linux/dmaengine.h) (DMA engine API), [`drivers/dma/dmaengine.c`](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/dma/dmaengine.c) (DMA channel core)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["Platform startup"]
  node_alpha_boot["Alpha boot<br/>[main.c]"]
  node_arm_decompress["ARM decompressor<br/>[decompress.c]"]
  node_alpha_setup["Alpha setup<br/>[setup.c]"]
  node_arm_setup["ARM setup<br/>[setup.c]"]
end

subgraph group_device["Device services"]
  node_pd_engine["USB PD policy<br/>[policy_engine.c]"]
  node_mass_storage["USB mass storage<br/>[f_mass_storage.c]"]
  node_spi_engine["SPI controller"]
  node_i915_engine["i915 engine support<br/>[intel_engine_cs.c]"]
end

subgraph group_async["Async engines"]
  node_pcm_dma["PCM DMA adapter<br/>[pcm_dmaengine.c]"]
  node_dma_api["DMA engine API<br/>[dmaengine.h]"]
  node_dma_core["DMA channel core<br/>[dmaengine.c]"]
  node_ccp["CCP DMA provider<br/>[ccp-dmaengine.c]"]
  node_crypto_engine["Crypto engine<br/>[crypto_engine.c]"]
end

subgraph group_kernel["Kernel services"]
  node_sk_storage["Socket BPF storage<br/>[bpf_sk_storage.c]"]
  node_local_storage[("BPF local storage")]
end

subgraph group_storage["Storage and observability"]
  node_romfs["ROMFS reader<br/>[storage.c]"]
end

node_firmware(("Platform firmware"))
node_pd_peer(("USB-C partner"))
node_usb_host(("USB host"))
node_spi_client(("SPI client"))
node_pcm_client(("PCM client"))
node_crypto_client(("Crypto request"))
node_socket_user(("Socket user"))
node_vfs(("VFS"))
node_block_mtd[("Block or MTD image")]
node_gpu_workload(("GPU workload"))

node_firmware -->|"starts boot"| node_alpha_boot
node_firmware -->|"starts boot"| node_arm_decompress
node_pd_peer -->|"exchanges PD messages"| node_pd_engine
node_pd_engine -->|"negotiates power"| node_pd_peer
node_usb_host -->|"sends USB requests"| node_mass_storage
node_spi_client -->|"submits messages"| node_spi_engine
node_pcm_client -->|"requests PCM DMA"| node_pcm_dma
node_pcm_dma -->|"requests channels"| node_dma_api
node_dma_api -->|"uses channel services"| node_dma_core
node_dma_core -->|"dispatches transfers"| node_ccp
node_crypto_client -->|"queues requests"| node_crypto_engine
node_socket_user -->|"accesses map by fd"| node_sk_storage
node_sk_storage -->|"looks up and updates"| node_local_storage
node_vfs -->|"reads image data"| node_romfs
node_romfs -->|"reads image"| node_block_mtd
node_gpu_workload -->|"uses engine support"| node_i915_engine

click node_alpha_boot "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/arch/alpha/boot/main.c"
click node_arm_decompress "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/arch/arm/boot/compressed/decompress.c"
click node_alpha_setup "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/arch/alpha/kernel/setup.c"
click node_arm_setup "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/arch/arm/kernel/setup.c"
click node_pd_engine "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/usb/pd/policy_engine.c"
click node_mass_storage "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/usb/gadget/function/f_mass_storage.c"
click node_spi_engine "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/spi/spi-axi-spi-engine.c"
click node_pcm_dma "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/sound/core/pcm_dmaengine.c"
click node_dma_api "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/include/linux/dmaengine.h"
click node_dma_core "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/dma/dmaengine.c"
click node_ccp "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/crypto/ccp/ccp-dmaengine.c"
click node_crypto_engine "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/crypto/crypto_engine.c"
click node_sk_storage "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/net/core/bpf_sk_storage.c"
click node_local_storage "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/kernel/bpf/bpf_local_storage.c"
click node_romfs "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/fs/romfs/storage.c"
click node_i915_engine "https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/gpu/drm/i915/intel_engine_cs.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_alpha_boot,node_arm_decompress,node_alpha_setup,node_arm_setup,node_spi_client,node_pcm_client,node_socket_user toneBlue
class node_pd_engine,node_mass_storage,node_spi_engine,node_i915_engine,node_block_mtd toneAmber
class node_pcm_dma,node_dma_api,node_dma_core,node_ccp,node_crypto_engine,node_crypto_client toneMint
class node_sk_storage,node_local_storage toneRose
class node_romfs,node_firmware,node_pd_peer,node_usb_host,node_vfs,node_gpu_workload toneIndigo
```

## Components

### Platform startup

- [Alpha boot](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/arch/alpha/boot/main.c): `arch/alpha/boot/main.c`
- [ARM decompressor](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/arch/arm/boot/compressed/decompress.c): `arch/arm/boot/compressed/decompress.c`
- [Alpha setup](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/arch/alpha/kernel/setup.c): `arch/alpha/kernel/setup.c`
- [ARM setup](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/arch/arm/kernel/setup.c): `arch/arm/kernel/setup.c`

### Device services

- [USB PD policy](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/usb/pd/policy_engine.c): `drivers/usb/pd/policy_engine.c`
- [USB mass storage](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/usb/gadget/function/f_mass_storage.c): `drivers/usb/gadget/function/f_mass_storage.c`
- [SPI controller](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/spi/spi-axi-spi-engine.c): `drivers/spi/spi-axi-spi-engine.c`
- [i915 engine support](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/gpu/drm/i915/intel_engine_cs.c): `drivers/gpu/drm/i915/intel_engine_cs.c`

### Async engines

- [PCM DMA adapter](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/sound/core/pcm_dmaengine.c): `sound/core/pcm_dmaengine.c`
- [DMA engine API](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/include/linux/dmaengine.h): `include/linux/dmaengine.h`
- [DMA channel core](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/dma/dmaengine.c): `drivers/dma/dmaengine.c`
- [CCP DMA provider](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/drivers/crypto/ccp/ccp-dmaengine.c): `drivers/crypto/ccp/ccp-dmaengine.c`
- [Crypto engine](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/crypto/crypto_engine.c): `crypto/crypto_engine.c`

### Kernel services

- [Socket BPF storage](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/net/core/bpf_sk_storage.c): `net/core/bpf_sk_storage.c`
- [BPF local storage](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/kernel/bpf/bpf_local_storage.c): `kernel/bpf/bpf_local_storage.c`

### Storage and observability

- [ROMFS reader](https://github.com/lineageos/android_kernel_xiaomi_sm6150/blob/lineage-23.2/fs/romfs/storage.c): `fs/romfs/storage.c`

### Other components

- **Platform firmware**
- **USB-C partner**
- **USB host**
- **SPI client**
- **PCM client**
- **Crypto request**
- **Socket user**
- **VFS**
- **Block or MTD image**
- **GPU workload**

## Connections

- Platform firmware → Alpha boot: starts boot
- Platform firmware → ARM decompressor: starts boot
- USB-C partner → USB PD policy: exchanges PD messages
- USB PD policy → USB-C partner: negotiates power
- USB host → USB mass storage: sends USB requests
- SPI client → SPI controller: submits messages
- PCM client → PCM DMA adapter: requests PCM DMA
- PCM DMA adapter → DMA engine API: requests channels
- DMA engine API → DMA channel core: uses channel services
- DMA channel core → CCP DMA provider: dispatches transfers
- Crypto request → Crypto engine: queues requests
- Socket user → Socket BPF storage: accesses map by fd
- Socket BPF storage → BPF local storage: looks up and updates
- VFS → ROMFS reader: reads image data
- ROMFS reader → Block or MTD image: reads image
- GPU workload → i915 engine support: uses engine support
