blob: af71c8b761b9c1ae52197a2ff1ed47c93915977b [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_GRAPHICS_DISPLAY_DRIVERS_INTEL_I915_DDI_PHYSICAL_LAYER_INTERNAL_H_
#define SRC_GRAPHICS_DISPLAY_DRIVERS_INTEL_I915_DDI_PHYSICAL_LAYER_INTERNAL_H_
#include "src/graphics/display/drivers/intel-i915/ddi-physical-layer.h"
namespace i915 {
// This describes the state machine to Enable / Disable the DDI PHY.
//
// Uninitialized
// | ^
// v |
// Type C Cold Blocked
// | ^
// v |
// Safe Mode Set
// | ^
// v |
// AUX Powered On
// | ^
// v |
// Initialized
//
// The Top-to-bottom direction represents initialization procedure and bottom-
// to-top direction represents deinitialization.
enum class TypeCDdiTigerLake::InitializationPhase {
// Initialization hasn't started yet.
// This is the only valid starting state to enable a DDI PHY.
kUninitialized = 0,
// The following states are steps of Type-C DDI PHY initialization process.
// Each state below means that the driver has *attempted* to take this step
// but cannot guarantee whether this step is successful. The driver can only
// take a new step when all previous steps have succeeded.
// Step 1. Block Type-C Cold State.
kTypeCColdBlocked = 1,
// Step 2. Disable Type-C safe mode.
kSafeModeSet = 2,
// Step 3. Setup DDI AUX channel.
kAuxPoweredOn = 3,
// All the steps above have succeeded and the initialization process finishes.
// In order to initialize a display device, the DDI PHY must be in this state.
kInitialized = 4,
};
} // namespace i915
#endif // SRC_GRAPHICS_DISPLAY_DRIVERS_INTEL_I915_DDI_PHYSICAL_LAYER_INTERNAL_H_