source: svn/newcon3bcm2_21bu/dta/src/settop_api/NXP_TDA182I4/inc/tmCompId.h

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 17.9 KB
Line 
1/*==========================================================================*/
2/*     (Copyright (C) 2003 Koninklijke Philips Electronics N.V.             */
3/*     All rights reserved.                                                 */
4/*     This source code and any compilation or derivative thereof is the    */
5/*     proprietary information of Koninklijke Philips Electronics N.V.      */
6/*     and is confidential in nature.                                       */
7/*     Under no circumstances is this software to be exposed to or placed   */
8/*     under an Open Source License of any type without the expressed       */
9/*     written permission of Koninklijke Philips Electronics N.V.           */
10/*==========================================================================*/
11/*-----------------------------------------------------------------------------
12// MoReUse - 2001-11-12  Continuus Version 16
13//
14// Added
15//   CID_COMP_TRICK
16//   CID_COMP_TODISK
17//   CID_COMP_FROMDISK
18//
19// Removed
20// CID_COMP_RTC  Twice the same request - duplicate removed         
21//
22// (C) Copyright 2000-2001 Koninklijke Philips Electronics N.V.,
23//     All rights reserved
24//
25// This source code and any compilation or derivative thereof is the sole
26// property of Philips Corporation and is provided pursuant to a Software
27// License Agreement.  This code is the proprietary information of Philips
28// Corporation and is confidential in nature.  Its use and dissemination by
29// any party other than Philips Corporation is strictly limited by the
30// confidential information provisions of the Agreement referenced above.
31*/
32/*-----------------------------------------------------------------------------
33// FILE NAME:    tmCompId.h
34//
35// DESCRIPTION:  This header file identifies the standard component identifiers
36//               for DVP platforms.  The objective of DVP component IDs is to
37//               enable unique identification of software components at all
38//               classes, types, and layers.  In addition, standard status
39//               values are also defined to make determination of typical error
40//               cases much easier.  The component identifier bitfields are
41//               four bit aligned to ease in reading the hexadecimal value.
42//
43//               The process to create a new component ID follows the sequence
44//               of steps:
45//
46//               1) Select a component class:  The class is the most general
47//                  component classification.  If none of the classifications
48//                  match and the component can still be uniquely identified
49//                  by its type/tag/layer combination, use CID_CLASS_NONE.
50//                  For customers, the CID_CLASS_CUSTOMER value is defined.
51//                  If that value is used in the CID_CLASS_BITMASK field,
52//                  all other bits in the component ID are user defined.
53//
54//               2) Select a component type:   The component type is used to
55//                  classify how a component processes data.  Components may
56//                  have only output pins (source), only input pins (sink),
57//                  input and output pins with or without data modifications
58//                  (filter), control of data flow without input/output pins
59//                  (control), data storage/access/retrieval (database),
60//                  or component group (subsystem).  If the component does
61//                  not fit into any type classification, use CID_TYPE_NONE.
62//
63//               3) Create a component ID:     The component ID is used to
64//                  classify the specific type and/or attributes of a software
65//                  component API interface.  The currently defined list should
66//                  be scanned for a component match.  If no component match
67//                  can be found, define a new component tag that descibes the
68//                  component clearly.  Component name abbreviations/acronyms
69//                  are generally used; build a name starting from left to
70//                  right with the most general ('A' or 'AUD' for audio, 'V' or
71//                  'VID' for video, etc.) to the most specific ('AC3' or 'MP3'
72//                  as specific audio filter types) terms for the component.
73//
74//               NOTE: Component layer (CID_LAYER_XXX) and status (CID_ERR_XXX)
75//                     values are defined within the software component APIs
76//                     header files, not in this file.
77//
78// DOCUMENT REF: DVP Software Coding Guidelines specification
79//               DVP/MoReUse Naming Conventions specification
80//
81// NOTES:        The 32 bit component identifier bitfields are defined in the
82//               diagram below:
83//
84//           +-----------------------------------------  4 bit Component Class
85//          /      +-----------------------------------  4 bit Component Type
86//         /      /         +--------------------------  8 bit Component Tag
87//        /      /         /         +-----------------  4 bit Component Layer
88//       /      /         /         /            +----- 12 bit Component Status
89//      /      /         /         /            /
90//  |31  28|27  24|23        16|15  12|11               0| bit
91//  +------+------+------------+------+------------------+
92//  |Class | Type |ComponentTag|Layer |  Error/Progress  |
93//  +------+------+------------+------+------------------+
94//
95//-----------------------------------------------------------------------------
96*/
97#ifndef TM_COMP_ID_H
98#define TM_COMP_ID_H
99
100#ifdef __cplusplus
101extern "C"
102{
103#endif
104
105/*-----------------------------------------------------------------------------
106// Types and defines:
107//-----------------------------------------------------------------------------
108*/
109
110/*-----------------------------------------------------------------------------
111// TM_OK is the 32 bit global status value used by all DVP software components
112//  to indicate successful function/operation status.  If a non-zero value is
113//  returned as status, it should use the component ID formats defined.
114*/
115#define TM_OK               0         /* Global success return status */
116
117/*
118// NOTE: Component ID types are defined as unsigned 32 bit integers (UInt32).
119//
120//-----------------------------------------------------------------------------
121// Component Class definitions (bits 31:28, 4 bits)
122// NOTE: A class of 0x0 must not be defined to ensure that the overall 32 bit
123//       component ID/status combination is always non-0 (no TM_OK conflict).
124*/
125#define CID_CLASS_BITSHIFT  28                          /* Component class bit shift */
126#define CID_CLASS_BITMASK   (0xF << CID_CLASS_BITSHIFT) /* Class AND bitmsk */
127#define CID_GET_CLASS(compId)   ((compId & CID_CLASS_BITMASK) >> CID_CLASS_BITSHIFT)
128#define CID_CLASS_NONE      (0x1 << CID_CLASS_BITSHIFT) /* No class information */
129
130/*-----------------------------------------------------------------------------
131// Component Type definitions (bits 27:24, 4 bits)
132*/
133#define CID_TYPE_BITSHIFT   24                          /* Component type bit shift */
134#define CID_TYPE_BITMASK    (0xF << CID_TYPE_BITSHIFT)  /* Type AND bitmask */
135#define CID_GET_TYPE(compId)    ((compId & CID_TYPE_BITMASK) >> CID_TYPE_BITSHIFT)
136#define CID_TYPE_NONE       (0x0 << CID_TYPE_BITSHIFT)  /* No data connections */
137
138/*-----------------------------------------------------------------------------
139// Component Tag definitions (bits 23:16, 8 bits)
140// NOTE: Component tags are defined in groups, dependent on the class and type.
141*/
142#define CID_TAG_BITSHIFT    16                          /* Component tag bit shift */
143#define CID_TAG_BITMASK     (0xFF << CID_TAG_BITSHIFT)  /* Comp tag AND bitmask */
144#define TAG(number)         ((number) << CID_TAG_BITSHIFT) /* Create tag from num */
145
146/*-----------------------------------------------------------------------------
147// Component Layer definitions (bits 15:12, 4 bits)
148*/
149#define CID_LAYER_BITSHIFT  12                           /* Component layer bit shift */
150#define CID_LAYER_BITMASK   (0xF << CID_LAYER_BITSHIFT)  /* Layer AND bitmask */
151#define CID_GET_LAYER(compId)   ((compId & CID_LAYER_BITMASK) >> CID_LAYER_BITSHIFT)
152
153#define CID_LAYER_NONE      (0x0 << CID_LAYER_BITSHIFT)  /* No layer info */
154#define CID_LAYER_BTM       (0x1 << CID_LAYER_BITSHIFT)  /* Boot manager layer */
155#define CID_LAYER_HWAPI     (0x2 << CID_LAYER_BITSHIFT)  /* Hardware API layer */
156#define CID_LAYER_BSL       (0x3 << CID_LAYER_BITSHIFT)  /* Board Supp. Lib lyr */
157#define CID_LAYER_DEVLIB    (0x4 << CID_LAYER_BITSHIFT)  /* Device Library lyr */
158#define CID_LAYER_TMAL      (0x5 << CID_LAYER_BITSHIFT)  /* Application layer */
159#define CID_LAYER_TMOL      (0x6 << CID_LAYER_BITSHIFT)  /* OSDependent layer */
160#define CID_LAYER_CUSTOMER  (0xF << CID_LAYER_BITSHIFT)  /* Customer Defined Layer */
161                            /* Up to 0xF = Philips reserved layer IDs */
162
163/*-----------------------------------------------------------------------------
164// Component Identifier definitions (bits 31:12, 20 bits)
165// NOTE: These DVP platform component identifiers are designed to be unique
166//       within the system.  The component identifier encompasses the class
167//       (CID_CLASS_XXX), type (CID_TYPE_XXX), tag, and layer (CID_LAYER_XXX)
168//       fields to form the unique component identifier.  This allows any
169//       error/progress status value to be identified as to its original
170//       source, whether or not the source component's header file is present.
171//       The standard error/progress status definitions should be used
172//       whenever possible to ease status interpretation.  No layer
173//       information is defined at this point; it should be OR'd into the API
174//       status values defined in the API's header file.
175*/
176#if     (CID_LAYER_NONE != 0)
177#error  ERROR: DVP component identifiers require the layer type 'NONE' = 0 !
178#endif
179
180/*
181// Classless Types/Components (don't fit into other class categories)
182*/
183#define CTYP_NOCLASS_NOTYPE     (CID_CLASS_NONE | CID_TYPE_NONE)
184
185#define CID_COMP_TIMER          (TAG(0x0A) | CTYP_NOCLASS_NOTYPE)
186#define CID_COMP_PARPORT        (TAG(0x0E) | CTYP_NOCLASS_NOTYPE)
187#define CID_COMP_TUNER          (TAG(0x1E) | CTYP_NOCLASS_NOTYPE)
188#define CID_COMP_DEMOD          (TAG(0x1F) | CTYP_NOCLASS_NOTYPE)
189
190
191/*-----------------------------------------------------------------------------
192// Component Standard Error/Progress Status definitions (bits 11:0, 12 bits)
193// NOTE: These status codes are OR'd with the component identifier to create
194//       component unique 32 bit status values.  The component status values
195//       should be defined in the header files where the APIs are defined.
196*/
197#define CID_ERR_BITMASK                 0xFFF /* Component error AND bitmask */
198#define CID_ERR_BITSHIFT                0     /* Component error bit shift */
199#define CID_GET_ERROR(compId)   ((compId & CID_ERR_BITMASK) >> CID_ERR_BITSHIFT)
200
201#define TM_ERR_COMPATIBILITY            0x001 /* SW Interface compatibility */
202#define TM_ERR_MAJOR_VERSION            0x002 /* SW Major Version error */
203#define TM_ERR_COMP_VERSION             0x003 /* SW component version error */
204#define TM_ERR_BAD_MODULE_ID            0x004 /* SW - HW module ID error */
205#define TM_ERR_BAD_UNIT_NUMBER          0x005 /* Invalid device unit number */
206#define TM_ERR_BAD_INSTANCE             0x006 /* Bad input instance value */
207#define TM_ERR_BAD_HANDLE               0x007 /* Bad input handle */
208#define TM_ERR_BAD_INDEX                0x008 /* Bad input index */
209#define TM_ERR_BAD_PARAMETER            0x009 /* Invalid input parameter */
210#define TM_ERR_NO_INSTANCES             0x00A /* No instances available */
211#define TM_ERR_NO_COMPONENT             0x00B /* Component is not present */
212#define TM_ERR_NO_RESOURCES             0x00C /* Resource is not available */
213#define TM_ERR_INSTANCE_IN_USE          0x00D /* Instance is already in use */
214#define TM_ERR_RESOURCE_OWNED           0x00E /* Resource is already in use */
215#define TM_ERR_RESOURCE_NOT_OWNED       0x00F /* Caller does not own resource */
216#define TM_ERR_INCONSISTENT_PARAMS      0x010 /* Inconsistent input params */
217#define TM_ERR_NOT_INITIALIZED          0x011 /* Component is not initialized */
218#define TM_ERR_NOT_ENABLED              0x012 /* Component is not enabled */
219#define TM_ERR_NOT_SUPPORTED            0x013 /* Function is not supported */
220#define TM_ERR_INIT_FAILED              0x014 /* Initialization failed */
221#define TM_ERR_BUSY                     0x015 /* Component is busy */
222#define TM_ERR_NOT_BUSY                 0x016 /* Component is not busy */
223#define TM_ERR_READ                     0x017 /* Read error */
224#define TM_ERR_WRITE                    0x018 /* Write error */
225#define TM_ERR_ERASE                    0x019 /* Erase error */
226#define TM_ERR_LOCK                     0x01A /* Lock error */
227#define TM_ERR_UNLOCK                   0x01B /* Unlock error */
228#define TM_ERR_OUT_OF_MEMORY            0x01C /* Memory allocation failed */
229#define TM_ERR_BAD_VIRT_ADDRESS         0x01D /* Bad virtual address */
230#define TM_ERR_BAD_PHYS_ADDRESS         0x01E /* Bad physical address */
231#define TM_ERR_TIMEOUT                  0x01F /* Timeout error */
232#define TM_ERR_OVERFLOW                 0x020 /* Data overflow/overrun error */
233#define TM_ERR_FULL                     0x021 /* Queue (etc.) is full */
234#define TM_ERR_EMPTY                    0x022 /* Queue (etc.) is empty */
235#define TM_ERR_NOT_STARTED              0x023 /* Component stream not started */
236#define TM_ERR_ALREADY_STARTED          0x024 /* Comp. stream already started */
237#define TM_ERR_NOT_STOPPED              0x025 /* Component stream not stopped */
238#define TM_ERR_ALREADY_STOPPED          0x026 /* Comp. stream already stopped */
239#define TM_ERR_ALREADY_SETUP            0x027 /* Component already setup */
240#define TM_ERR_NULL_PARAMETER           0x028 /* Null input parameter */
241#define TM_ERR_NULL_DATAINFUNC          0x029 /* Null data input function */
242#define TM_ERR_NULL_DATAOUTFUNC         0x02A /* Null data output function */
243#define TM_ERR_NULL_CONTROLFUNC         0x02B /* Null control function */
244#define TM_ERR_NULL_COMPLETIONFUNC      0x02C /* Null completion function */
245#define TM_ERR_NULL_PROGRESSFUNC        0x02D /* Null progress function */
246#define TM_ERR_NULL_ERRORFUNC           0x02E /* Null error handler function */
247#define TM_ERR_NULL_MEMALLOCFUNC        0x02F /* Null memory alloc function */
248#define TM_ERR_NULL_MEMFREEFUNC         0x030 /* Null memory free  function */
249#define TM_ERR_NULL_CONFIGFUNC          0x031 /* Null configuration function */
250#define TM_ERR_NULL_PARENT              0x032 /* Null parent data */
251#define TM_ERR_NULL_IODESC              0x033 /* Null in/out descriptor */
252#define TM_ERR_NULL_CTRLDESC            0x034 /* Null control descriptor */
253#define TM_ERR_UNSUPPORTED_DATACLASS    0x035 /* Unsupported data class */
254#define TM_ERR_UNSUPPORTED_DATATYPE     0x036 /* Unsupported data type */
255#define TM_ERR_UNSUPPORTED_DATASUBTYPE  0x037 /* Unsupported data subtype */
256#define TM_ERR_FORMAT                   0x038 /* Invalid/unsupported format */
257#define TM_ERR_INPUT_DESC_FLAGS         0x039 /* Bad input  descriptor flags */
258#define TM_ERR_OUTPUT_DESC_FLAGS        0x03A /* Bad output descriptor flags */
259#define TM_ERR_CAP_REQUIRED             0x03B /* Capabilities required ??? */
260#define TM_ERR_BAD_TMALFUNC_TABLE       0x03C /* Bad TMAL function table */
261#define TM_ERR_INVALID_CHANNEL_ID       0x03D /* Invalid channel identifier */
262#define TM_ERR_INVALID_COMMAND          0x03E /* Invalid command/request */
263#define TM_ERR_STREAM_MODE_CONFUSION    0x03F /* Stream mode config conflict */
264#define TM_ERR_UNDERRUN                 0x040 /* Data underflow/underrun */
265#define TM_ERR_EMPTY_PACKET_RECVD       0x041 /* Empty data packet received */
266#define TM_ERR_OTHER_DATAINOUT_ERR      0x042 /* Other data input/output err */
267#define TM_ERR_STOP_REQUESTED           0x043 /* Stop in progress */
268#define TM_ERR_PIN_NOT_STARTED          0x044 /* Pin not started */
269#define TM_ERR_PIN_ALREADY_STARTED      0x045 /* Pin already started */
270#define TM_ERR_PIN_NOT_STOPPED          0x046 /* Pin not stopped */
271#define TM_ERR_PIN_ALREADY_STOPPED      0x047 /* Pin already stopped */
272#define TM_ERR_STOP_PIN_REQUESTED       0x048 /* Stop of a single pin is in progress (obsolescent) */
273#define TM_ERR_PAUSE_PIN_REQUESTED      0x048 /* Stop of a single pin is in progress */
274#define TM_ERR_ASSERTION                0x049 /* Assertion failure */
275#define TM_ERR_HIGHWAY_BANDWIDTH        0x04A /* Highway bandwidth bus error */
276#define TM_ERR_HW_RESET_FAILED          0x04B /* Hardware reset failed */
277#define TM_ERR_PIN_PAUSED               0x04C /* Pin Paused */
278
279/* Add new standard error/progress status codes here */
280
281#define TM_ERR_COMP_UNIQUE_START        0x800 /* 0x800-0xDFF: Component unique */
282
283#define TM_ERR_CUSTOMER_START           0xC00 
284
285/* DVP Standard assert error code start offset
286// NOTE: This define should be added to the component's base error value and
287//       standard error code(s) to define assert error codes.  For example:
288// #define TMBSL_ERR_MGR_ASSERT_BAD_PARAM
289//          (TMBSL_ERR_MGR_BASE + TM_ERR_ASSERT_START + TM_ERR_BAD_PARAMETER)
290*/
291#define TM_ERR_ASSERT_START             0xE00 /* 0xE00-0xEFF: Assert failures */
292#define TM_ERR_ASSERT_LAST              0xEFF /* Last assert error range value */
293#define CID_IS_ASSERT_ERROR(compId)     \
294    ((CID_GET_ERROR(compId) >= TM_ERR_ASSERT_START) && \
295     (CID_GET_ERROR(compId) <= TM_ERR_ASSERT_LAST))
296
297/* DVP Standard fatal error code start offset
298// NOTE: This define should be added to the component's base error value and
299//       standard error code(s) to define fatal error codes.  For example:
300// #define TMML_ERR_FATAL_OUT_OF_MEMORY 
301//          (TMML_ERR_BASE + TM_ERR_FATAL_START + TM_ERR_OUT_OF_MEMORY)
302*/
303#define TM_ERR_FATAL_START              0xF00 /* 0xF00-0xFFF: Fatal failures */
304#define TM_ERR_FATAL_LAST               0xFFF /* Last fatal error range value */
305#define CID_IS_FATAL_ERROR(compId)      \
306    ((CID_GET_ERROR(compId) >= TM_ERR_FATAL_START) && \
307     (CID_GET_ERROR(compId) <= TM_ERR_FATAL_LAST))
308
309
310#ifdef __cplusplus
311}
312#endif
313
314#endif /* TM_COMP_ID_H */
315
Note: See TracBrowser for help on using the repository browser.