---
config:
  layout: elk
  elk:
    mergeEdges: true
    nodePlacementStrategy: LINEAR_SEGMENTS
---
flowchart LR
 subgraph Coordinator["Display Coordinator"]
        CoordinatorDisplayManagementApi(["Display management API"])
        CoordinatorDisplayManagement["Display management logic"]
  end
 subgraph EngineDriver["Display engine driver"]
        DisplayMode["Modesetting logic"]
        DisplayManagementApi(["Display management API"])
        DisplayCommandsApi(["DDIC commands API"])
  end
 subgraph PanelDriver["Panel driver"]
        PanelModeApi(["Modesetting API"])
        PanelMode["Modesetting logic"]
  end
    CoordinatorDisplayManagementApi === CoordinatorDisplayManagement
    CoordinatorDisplayManagement --> DisplayManagementApi
    DisplayMode -- Display mode --> PanelModeApi
    PanelModeApi === PanelMode
    PanelMode --> DisplayCommandsApi
    DisplayManagementApi --> DisplayMode

    CoordinatorDisplayManagementApi@{ shape: stadium }
    DisplayManagementApi@{ shape: stadium }
    DisplayCommandsApi@{ shape: stadium }
    PanelModeApi@{ shape: stadium }