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 };
64 
65 /*! @brief This structure is defined for client and library compatibility check purpose only. This
66   structure is used in SDM_VERSION_TAG definition only. Client should not refer it directly for
67   any purpose.
68 */
69 struct SDMCompatibility {
70   char c1;
71   int i1;
72   char c2;
73   int i2;
74 };
75 
76 /*! @brief This enum represents different modules/logical unit tags that a log message may
77   be associated with. Client may use this to filter messages for dynamic logging.
78 
79 */
80 enum DebugTag {
81   kTagNone,             //!< Debug log is not tagged. This type of logs should always be printed.
82   kTagResources,        //!< Debug log is tagged for resource management.
83   kTagStrategy,         //!< Debug log is tagged for strategy decisions.
84   kTagCompManager,      //!< Debug log is tagged for composition manager.
85   kTagDriverConfig,     //!< Debug log is tagged for driver config.
86   kTagRotator,          //!< Debug log is tagged for rotator.
87   kTagScalar,           //!< Debug log is tagged for Scalar Helper.
88   kTagQDCM,             //!< Debug log is tagged for display QDCM color managing.
89   kTagQOSClient,        //!< Debug log is tagged for Qos client.
90   kTagDisplay,          //!< Debug log is tagged for display core logs.
91   kTagClient,           //!< Debug log is tagged for SDM client.
92 };
93 
94 }  // namespace sdm
95 
96 #endif  // __SDM_TYPES_H__
97 
98