1 /*
2 * Copyright (c) 2014 - 2019, The Linux Foundation. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *     * Redistributions of source code must retain the above copyright
8 *       notice, this list of conditions and the following disclaimer.
9 *     * Redistributions in binary form must reproduce the above
10 *       copyright notice, this list of conditions and the following
11 *       disclaimer in the documentation and/or other materials provided
12 *       with the distribution.
13 *     * Neither the name of The Linux Foundation nor the names of its
14 *       contributors may be used to endorse or promote products derived
15 *       from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29 
30 /*! @file sdm_types.h
31   @brief This file contains miscellaneous data types used across display interfaces.
32 */
33 #ifndef __SDM_TYPES_H__
34 #define __SDM_TYPES_H__
35 
36 namespace sdm {
37 
38 /*! @brief This enum represents different error codes that display interfaces may return.
39 */
40 enum DisplayError {
41   kErrorNone,             //!< Call executed successfully.
42   kErrorUndefined,        //!< An unspecified error has occured.
43   kErrorNotSupported,     //!< Requested operation is not supported.
44   kErrorPermission,       //!< Operation is not permitted in current state.
45   kErrorVersion,          //!< Client is using advanced version of interfaces and calling into an
46                           //!< older version of display library.
47   kErrorDataAlignment,    //!< Client data structures are not aligned on naturual boundaries.
48   kErrorInstructionSet,   //!< 32-bit client is calling into 64-bit library or vice versa.
49   kErrorParameters,       //!< Invalid parameters passed to a method.
50   kErrorFileDescriptor,   //!< Invalid file descriptor.
51   kErrorMemory,           //!< System is running low on memory.
52   kErrorResources,        //!< Not enough hardware resources available to execute call.
53   kErrorHardware,         //!< A hardware error has occured.
54   kErrorTimeOut,          //!< The operation has timed out to prevent client from waiting forever.
55   kErrorShutDown,         //!< Driver is processing shutdown sequence
56   kErrorPerfValidation,   //!< Bandwidth or Clock requirement validation failure.
57   kErrorNoAppLayers,      //!< No App layer(s) in the draw cycle.
58   kErrorRotatorValidation,  //!< Rotator configuration validation failure.
59   kErrorNotValidated,     //!< Draw cycle has not been validated.
60   kErrorCriticalResource,   //!< Critical resource allocation has failed.
61   kErrorDeviceRemoved,    //!< A device was removed unexpectedly.
62   kErrorDriverData,       //!< Expected information from the driver is missing
63   kErrorDeferred,         //!< Call's intended action is being deferred to a later time
64 };
65 
66 /*! @brief This structure is defined for client and library compatibility check purpose only. This
67   structure is used in SDM_VERSION_TAG definition only. Client should not refer it directly for
68   any purpose.
69 */
70 struct SDMCompatibility {
71   char c1;
72   int i1;
73   char c2;
74   int i2;
75 };
76 
77 /*! @brief This enum represents different modules/logical unit tags that a log message may
78   be associated with. Client may use this to filter messages for dynamic logging.
79 
80 */
81 enum DebugTag {
82   kTagNone,             //!< Debug log is not tagged. This type of logs should always be printed.
83   kTagResources,        //!< Debug log is tagged for resource management.
84   kTagStrategy,         //!< Debug log is tagged for strategy decisions.
85   kTagCompManager,      //!< Debug log is tagged for composition manager.
86   kTagDriverConfig,     //!< Debug log is tagged for driver config.
87   kTagRotator,          //!< Debug log is tagged for rotator.
88   kTagScalar,           //!< Debug log is tagged for Scalar Helper.
89   kTagQDCM,             //!< Debug log is tagged for display QDCM color managing.
90   kTagQOSClient,        //!< Debug log is tagged for Qos client.
91   kTagDisplay,          //!< Debug log is tagged for display core logs.
92   kTagClient,           //!< Debug log is tagged for SDM client.
93   kTagQOSImpl,          //!< Debug log is tagged for Qos library Implementation.
94   kTagStitchBuffer,     //!< Debug log is tagged for Stitch Buffer Implementation.
95 };
96 
97 }  // namespace sdm
98 
99 #endif  // __SDM_TYPES_H__
100 
101