---
title: Panel Driver Topology (after connection)
config:
 layout: elk
 elk:
   mergeEdges: true
   nodePlacementStrategy: LINEAR_SEGMENTS
---
flowchart TD

subgraph Coordinator["Display Coordinator"]
  CoordinatorDisplayRegApi["Display registration API"]
  CoordinatorDisplayManagementApi["Display management API"]
  CoordinatorDisplayManagement["Display management logic"]
end

subgraph EngineDriver["Display engine driver"]
  DisplayRegistration["Display registration logic"]
  DisplayMode["Modesetting logic"]
  DisplayCommandsApi["DDIC commands API"]
  DisplayManagementApi["Display management API"]
  DisplayManagement["Display management logic"]
end

subgraph PanelDriver["Panel driver"]
  PanelCapabilitiesApi["Capabilities API"]
  PanelBrightnessApi["Brightness API"]
  PanelBrightness["Brightness logic"]

  PanelModeApi["Modesetting API"]
  PanelMode["Modesetting logic"]

  PanelPowerApi["Power API"]
  PanelPower["Power + reset logic"]
end

subgraph BacklightDriver["Backlight IC driver"]
  BacklightApi["IC API"]
  Backlight["Management logic"]
end

subgraph GpioDriver["GPIO driver"]
  GpioApi["GPIO pin API"]
end

subgraph TouchDriver["Touch driver"]
  TouchPowerApi["Touch power state API"]
  TouchPower["Power + reset logic"]
end

subgraph I2CDriver["I2C host driver"]
  I2CApi["Read / write API"]
end

CoordinatorDisplayRegApi === CoordinatorDisplayManagement
CoordinatorDisplayManagementApi === CoordinatorDisplayManagement
CoordinatorDisplayManagement --> DisplayManagementApi

DisplayManagementApi === DisplayManagement

DisplayManagement --> PanelPowerApi
DisplayManagement --> PanelBrightnessApi

DisplayMode -- Display mode --> PanelModeApi

PanelBrightnessApi === PanelBrightness
PanelPowerApi === PanelPower
PanelModeApi === PanelMode
PanelPowerApi === PanelMode

PanelPower -- DSI commands --> DisplayCommandsApi
PanelMode -- DSI commands --> DisplayCommandsApi
PanelPower -- Power state --> TouchPowerApi
PanelPower -- RESET pin --> GpioApi
PanelBrightness -- Voltage --> BacklightApi

Backlight -- I2C commands --> I2CApi
TouchPower -- I2C commands --> I2CApi

CoordinatorDisplayRegApi@{ shape: stadium }
CoordinatorDisplayManagementApi@{ shape: stadium }
DisplayManagementApi@{ shape: stadium }
DisplayCommandsApi@{ shape: stadium }
PanelPowerApi@{ shape: stadium }
PanelCapabilitiesApi@{ shape: stadium }
PanelBrightnessApi@{ shape: stadium }
PanelModeApi@{ shape: stadium }
BacklightApi@{ shape: stadium }
GpioApi@{ shape: stadium }
TouchPowerApi@{ shape: stadium }
I2CApi@{ shape: stadium }

DisplayRegistration@{ shape: rect }

PanelPower@{ shape: rect }
PanelBrightness@{ shape: rect }