epoc32/include/assp/omap3530_shared/tps65950.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@4
     2
// All rights reserved.
williamr@4
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of the License "Eclipse Public License v1.0"
williamr@4
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@4
     7
//
williamr@4
     8
// Initial Contributors:
williamr@4
     9
// Nokia Corporation - initial contribution.
williamr@4
    10
//
williamr@4
    11
// Contributors:
williamr@4
    12
//
williamr@4
    13
// Description:
williamr@4
    14
//
williamr@4
    15
williamr@4
    16
#ifndef TPS65950_H
williamr@4
    17
#define TPS65950_H
williamr@4
    18
williamr@4
    19
#include <e32cmn.h>
williamr@4
    20
#include <nklib.h>
williamr@4
    21
#include <assp/omap3530_assp/omap3530_irqmap.h>
williamr@4
    22
#include <assp/omap3530_shared/tps65950_registers.h>
williamr@4
    23
williamr@4
    24
// Trace - 191 = 0x00000000 0x00000000 0x00000000 0x00000000 0x0000000 0x0000000 0x80000000 0x00000000 0x00000000
williamr@4
    25
#define KTPS65950		191
williamr@4
    26
williamr@4
    27
williamr@4
    28
williamr@4
    29
namespace TPS65950
williamr@4
    30
{
williamr@4
    31
williamr@4
    32
/** Structure used for issuing an asynchronous request
williamr@4
    33
 * You must set iDfc to point to a TDfc object which will
williamr@4
    34
 * be queued on completion
williamr@4
    35
 */
williamr@4
    36
struct TReq
williamr@4
    37
	{
williamr@4
    38
	enum TAction
williamr@4
    39
		{
williamr@4
    40
		ERead,
williamr@4
    41
		EWrite,
williamr@4
    42
		EClearSet,
williamr@4
    43
		EDisableProtect,
williamr@4
    44
		ERestoreProtect
williamr@4
    45
		};
williamr@4
    46
williamr@4
    47
williamr@4
    48
	TUint16	iRegister;		///< Register to be accessed
williamr@4
    49
	TAction	iAction : 8;	///< type of request, read, write or clearset
williamr@4
    50
	TUint8	iReadValue;		///< Returned value from a read, original value for a ClearSet, unused for write
williamr@4
    51
	union
williamr@4
    52
		{
williamr@4
    53
		TUint8	iWriteValue;	///< Value to write into register for a write
williamr@4
    54
		TUint8	iSetMask;		///< Bits to set in a ClearSet
williamr@4
    55
		};
williamr@4
    56
	TUint8	iClearMask;		///< Bits to clear in a ClearSet
williamr@4
    57
	TDfc*	iCompletionDfc;	///< Pointer to DFC to be called on completion (for multi-phase only the last TReq causes a completion)
williamr@4
    58
	TInt	iResult;		///< KErrNone on success, else error code
williamr@4
    59
	TReq*	iNextPhase;		///< set to NULL if this is a single request, for a multi-phase request set this to point to next TReq
williamr@4
    60
	SDblQueLink	iLink;		///< Used internally to maintain linked list of requests
williamr@4
    61
	};
williamr@4
    62
williamr@4
    63
struct TRtcTime
williamr@4
    64
	{
williamr@4
    65
	TUint8	iSecond;
williamr@4
    66
	TUint8	iMinute;
williamr@4
    67
	TUint8	iHour;
williamr@4
    68
	TUint8	iDay;
williamr@4
    69
	TUint8	iMonth;
williamr@4
    70
	TUint8	iYear;
williamr@4
    71
	};
williamr@4
    72
williamr@4
    73
/** Test whether this driver has been initialized
williamr@4
    74
 * Use this in code which is expected to run early during boot
williamr@4
    75
 * to prevent it trying to access this driver before it is ready
williamr@4
    76
 *
williamr@4
    77
 * @return	ETrue if initialized, EFalse if not
williamr@4
    78
 */
williamr@4
    79
IMPORT_C TBool Initialized();
williamr@4
    80
williamr@4
    81
/** Execute a request asynchronously
williamr@4
    82
 *
williamr@4
    83
 * @param	aRequest	Request object to executed, must stay valid until request completes
williamr@4
    84
 */
williamr@4
    85
IMPORT_C void ExecAsync( TReq& aRequest );
williamr@4
    86
williamr@4
    87
/** Execute a write synchronously
williamr@4
    88
 * @param	aRegister	Register to write to - this must be one of the 
williamr@4
    89
 *					register enumerations from tps65950_register.h
williamr@4
    90
 *					or the value of a register Addr property
williamr@4
    91
 *
williamr@4
    92
 * @param	aValue	Value to write to register
williamr@4
    93
 * @return	KErrNone on success, else standard error code
williamr@4
    94
 */
williamr@4
    95
IMPORT_C TInt WriteSync( TUint16 aRegister, TUint8 aValue );
williamr@4
    96
williamr@4
    97
/** Execute a read synchronously
williamr@4
    98
 * @param	aRegister	Register to write to - this must be one of the 
williamr@4
    99
 *					register enumerations from tps65950_register.h
williamr@4
   100
 *					or the value of a register Addr property
williamr@4
   101
 *
williamr@4
   102
 * @param	aValue	Value read will be written to here
williamr@4
   103
 * @return	KErrNone on success, else standard error code
williamr@4
   104
 */
williamr@4
   105
IMPORT_C TInt ReadSync( TUint16 aRegister, TUint8& aValue );
williamr@4
   106
williamr@4
   107
/** Execute a bit clear/set synchronously
williamr@4
   108
 * @param	aRegister	Register to write to - this must be one of the 
williamr@4
   109
 *					register enumerations from tps65950_register.h
williamr@4
   110
 *					or the value of a register Addr property
williamr@4
   111
 *
williamr@4
   112
 * @param	aClearMask	Each '1' clear the corresponding bit in the register
williamr@4
   113
 * @param	aSetMask	Each '1' sets the corresponding bit in the register
williamr@4
   114
 * @return	KErrNone on success, else standard error code
williamr@4
   115
 */
williamr@4
   116
IMPORT_C TInt ClearSetSync( TUint16 aRegister, TUint8 aClearMask, TUint8 aSetMask );
williamr@4
   117
williamr@4
   118
/** Disable protection of voltage control registers
williamr@4
   119
 * Call RestoreProtect() to re-enable protection
williamr@4
   120
 *
williamr@4
   121
 * Note - calls to DisableProtect and RestoreProtect() are
williamr@4
   122
 * reference-counted, so you must call RestoreProtect() the same
williamr@4
   123
 * number of times you called DisableProtect(). This is to allow
williamr@4
   124
 * multiple clients to disable and restore protection so that
williamr@4
   125
 * protection will only be re-enabled when the last client has
williamr@4
   126
 * restored it.
williamr@4
   127
 */
williamr@4
   128
IMPORT_C TInt DisableProtect();
williamr@4
   129
williamr@4
   130
/** Restore protection after a DisableProtect().
williamr@4
   131
 * If other clients have called DisableProtect(), or this client
williamr@4
   132
 * has other DisableProtect() calls still not balanced by a 
williamr@4
   133
 * RestoreProtect() then the protection will remain disabled
williamr@4
   134
 */
williamr@4
   135
IMPORT_C TInt RestoreProtect();
williamr@4
   136
williamr@4
   137
/** Read the current RTC time */
williamr@4
   138
IMPORT_C TInt GetRtcData( TRtcTime& aTime );
williamr@4
   139
williamr@4
   140
/** Set the RTC time */
williamr@4
   141
IMPORT_C TInt SetRtcData( const TRtcTime& aTime );
williamr@4
   142
williamr@4
   143
enum TPanic
williamr@4
   144
	{
williamr@4
   145
	EBadAction,			///< illegal value in TReq::iAction
williamr@4
   146
	ENoDfc,				///< iCompletionDFC is NULL
williamr@4
   147
	EBadGroup			///< Group component of iRegister is invalid
williamr@4
   148
	};
williamr@4
   149
williamr@4
   150
williamr@4
   151
enum TInterruptId 
williamr@4
   152
	{
williamr@4
   153
	KTPS65950IrqFirst= (EIrqRangeBasePsu << KIrqRangeIndexShift),
williamr@4
   154
	
williamr@4
   155
	ETPS65950_IRQ_PWR_SC_DETECT = KTPS65950IrqFirst,
williamr@4
   156
	ETPS65950_IRQ_PWR_MBCHG,
williamr@4
   157
	ETPS65950_IRQ_PWR_PWROK_TIMEOUT,
williamr@4
   158
	ETPS65950_IRQ_PWR_HOT_DIE,	
williamr@4
   159
	ETPS65950_IRQ_PWR_RTC_IT,
williamr@4
   160
	ETPS65950_IRQ_PWR_USB_PRES,
williamr@4
   161
	ETPS65950_IRQ_PWR_CHG_PRES,
williamr@4
   162
	ETPS65950_IRQ_PWR_CHG_PWRONS,
williamr@4
   163
	
williamr@4
   164
	ETPS65950_IRQ_MADC_USB_ISR1,
williamr@4
   165
	ETPS65950_IRQ_MADC_SW2_ISR1,
williamr@4
   166
	ETPS65950_IRQ_MADC_SW1_ISR1,
williamr@4
   167
	ETPS65950_IRQ_MADC_RT_ISR1,
williamr@4
   168
	
williamr@4
   169
	ETPS65950_IRQ_GPIO_0ISR1,
williamr@4
   170
	ETPS65950_IRQ_GPIO_1ISR1,	
williamr@4
   171
	ETPS65950_IRQ_GPIO_2ISR1,
williamr@4
   172
	ETPS65950_IRQ_GPIO_3ISR1,
williamr@4
   173
	ETPS65950_IRQ_GPIO_4ISR1,
williamr@4
   174
	ETPS65950_IRQ_GPIO_5ISR1,
williamr@4
   175
	ETPS65950_IRQ_GPIO_6ISR1,
williamr@4
   176
	ETPS65950_IRQ_GPIO_7ISR2,
williamr@4
   177
	
williamr@4
   178
	ETPS65950_IRQ_GPIO_8ISR2,
williamr@4
   179
	ETPS65950_IRQ_GPIO_9ISR2,
williamr@4
   180
	ETPS65950_IRQ_GPIO_10ISR2,
williamr@4
   181
	ETPS65950_IRQ_GPIO_11ISR2,
williamr@4
   182
	ETPS65950_IRQ_GPIO_12ISR2,
williamr@4
   183
	ETPS65950_IRQ_GPIO_13ISR2,
williamr@4
   184
	ETPS65950_IRQ_GPIO_14ISR2,
williamr@4
   185
	ETPS65950_IRQ_GPIO_15ISR2,
williamr@4
   186
	
williamr@4
   187
	ETPS65950_IRQ_GPIO16ISR3,
williamr@4
   188
	ETPS65950_IRQ_GPIO17ISR3,
williamr@4
   189
	
williamr@4
   190
	ETPS65950_IRQ_BCI_BATSTS_ISR1,
williamr@4
   191
	ETPS65950_IRQ_BCI_TBATOR1_ISR1,
williamr@4
   192
	ETPS65950_IRQ_BCI_TBATOR2_ISR1,
williamr@4
   193
	ETPS65950_IRQ_BCI_ICHGEOC_ISR1,
williamr@4
   194
	ETPS65950_IRQ_BCI_ICHGLOW_ISR1ASTO,
williamr@4
   195
	ETPS65950_IRQ_BCI_IICHGHIGH_ISR1,
williamr@4
   196
	ETPS65950_IRQ_BCI_TMOVF_ISR1,
williamr@4
   197
	ETPS65950_IRQ_BCI_WOVF_ISR1,
williamr@4
   198
	
williamr@4
   199
	ETPS65950_IRQ_BCI_ACCHGOV_ISR1,
williamr@4
   200
	ETPS65950_IRQ_BCI_VBUSOV_ISR1,
williamr@4
   201
	ETPS65950_IRQ_BCI_VBATOV_ISR1,
williamr@4
   202
	ETPS65950_IRQ_BCI_VBATLVL_ISR1,
williamr@4
   203
	
williamr@4
   204
	ETPS65950_IRQ_KEYP_ITMISR1,
williamr@4
   205
	ETPS65950_IRQ_KEYP_ITTOISR1,
williamr@4
   206
	ETPS65950_IRQ_KEYP_ITLKISR1,
williamr@4
   207
	ETPS65950_IRQ_KEYP_ITKPISR1,
williamr@4
   208
	
williamr@4
   209
	ETPS65950_IRQ_USB_INTSTS_IDGND, 
williamr@4
   210
	ETPS65950_IRQ_USB_INTSTS_SESSEND,
williamr@4
   211
	ETPS65950_IRQ_USB_INTSTS_SESSVALID,
williamr@4
   212
	ETPS65950_IRQ_USB_INTSTS_VBUSVALID,	
williamr@4
   213
	ETPS65950_IRQ_USB_INTSTS_HOSTDISCONNECT,
williamr@4
   214
	ETPS65950_IRQ_USB_CARKIT_CARDP,
williamr@4
   215
	ETPS65950_IRQ_USB_CARKIT_CARINTDET,
williamr@4
   216
	ETPS65950_IRQ_USB_CARKIT_IDFLOAT,
williamr@4
   217
	ETPS65950_IRQ_USB_OTHER_INT_VB_SESS_VLD,
williamr@4
   218
	ETPS65950_IRQ_USB_OTHER_INT_DM_HI,
williamr@4
   219
	ETPS65950_IRQ_USB_OTHER_INT_DP_HI,
williamr@4
   220
	ETPS65950_IRQ_USB_OTHER_INT_MANU,
williamr@4
   221
	ETPS65950_IRQ_USB_OTHER_INT_ABNORMAL_STRESS,
williamr@4
   222
	ETPS65950_IRQ_USB_ID_INT_ID_RES_FLOAT,
williamr@4
   223
	ETPS65950_IRQ_USB_ID_INT_ID_RES_440K,
williamr@4
   224
	ETPS65950_IRQ_USB_ID_INT_ID_RES_200K,
williamr@4
   225
	ETPS65950_IRQ_USB_ID_INT_ID_RES_102K,
williamr@4
   226
	ETPS65950_IRQ_USB_CARKIT_SM_1_PSM_ERROR,	
williamr@4
   227
	ETPS65950_IRQ_USB_CARKIT_SM_1_PH_ACC,
williamr@4
   228
	ETPS65950_IRQ_USB_CARKIT_SM_1_CHARGER,
williamr@4
   229
	ETPS65950_IRQ_USB_CARKIT_SM_1_USB_HOST,
williamr@4
   230
	ETPS65950_IRQ_USB_CARKIT_SM_1_USB_OTG_B,
williamr@4
   231
	ETPS65950_IRQ_USB_CARKIT_SM_1_CARKIT,
williamr@4
   232
	ETPS65950_IRQ_USB_CARKIT_SM_1_DISCONNECTED,
williamr@4
   233
	ETPS65950_IRQ_USB_CARKIT_SM_2_STOP_PLS_MISS,
williamr@4
   234
	ETPS65950_IRQ_USB_CARKIT_SM_2_STEREO_TO_MONO,
williamr@4
   235
	ETPS65950_IRQ_USB_CARKIT_SM_2_PHONE_UART,
williamr@4
   236
	ETPS65950_IRQ_USB_CARKIT_SM_2_PH_NO_ACK,
williamr@4
   237
	
williamr@4
   238
	KTPS65950IrqLast,
williamr@4
   239
	};
williamr@4
   240
williamr@4
   241
const TInt KNumTPSInts = (KTPS65950IrqLast - KTPS65950IrqFirst);
williamr@4
   242
williamr@4
   243
} // namespace TPS65950
williamr@4
   244
williamr@4
   245
williamr@4
   246
#endif //tps65950