diff -r 000000000000 -r 6663340f3fc9 omap3530/shared/tps65950/tps65950.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omap3530/shared/tps65950/tps65950.h Thu Oct 15 12:59:54 2009 +0100 @@ -0,0 +1,246 @@ +// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef TPS65950_H +#define TPS65950_H + +#include +#include +#include +#include + +// Trace - 191 = 0x00000000 0x00000000 0x00000000 0x00000000 0x0000000 0x0000000 0x80000000 0x00000000 0x00000000 +#define KTPS65950 191 + + + +namespace TPS65950 +{ + +/** Structure used for issuing an asynchronous request + * You must set iDfc to point to a TDfc object which will + * be queued on completion + */ +struct TReq + { + enum TAction + { + ERead, + EWrite, + EClearSet, + EDisableProtect, + ERestoreProtect + }; + + + TUint16 iRegister; ///< Register to be accessed + TAction iAction : 8; ///< type of request, read, write or clearset + TUint8 iReadValue; ///< Returned value from a read, original value for a ClearSet, unused for write + union + { + TUint8 iWriteValue; ///< Value to write into register for a write + TUint8 iSetMask; ///< Bits to set in a ClearSet + }; + TUint8 iClearMask; ///< Bits to clear in a ClearSet + TDfc* iCompletionDfc; ///< Pointer to DFC to be called on completion (for multi-phase only the last TReq causes a completion) + TInt iResult; ///< KErrNone on success, else error code + TReq* iNextPhase; ///< set to NULL if this is a single request, for a multi-phase request set this to point to next TReq + SDblQueLink iLink; ///< Used internally to maintain linked list of requests + }; + +struct TRtcTime + { + TUint8 iSecond; + TUint8 iMinute; + TUint8 iHour; + TUint8 iDay; + TUint8 iMonth; + TUint8 iYear; + }; + +/** Test whether this driver has been initialized + * Use this in code which is expected to run early during boot + * to prevent it trying to access this driver before it is ready + * + * @return ETrue if initialized, EFalse if not + */ +IMPORT_C TBool Initialized(); + +/** Execute a request asynchronously + * + * @param aRequest Request object to executed, must stay valid until request completes + */ +IMPORT_C void ExecAsync( TReq& aRequest ); + +/** Execute a write synchronously + * @param aRegister Register to write to - this must be one of the + * register enumerations from tps65950_register.h + * or the value of a register Addr property + * + * @param aValue Value to write to register + * @return KErrNone on success, else standard error code + */ +IMPORT_C TInt WriteSync( TUint16 aRegister, TUint8 aValue ); + +/** Execute a read synchronously + * @param aRegister Register to write to - this must be one of the + * register enumerations from tps65950_register.h + * or the value of a register Addr property + * + * @param aValue Value read will be written to here + * @return KErrNone on success, else standard error code + */ +IMPORT_C TInt ReadSync( TUint16 aRegister, TUint8& aValue ); + +/** Execute a bit clear/set synchronously + * @param aRegister Register to write to - this must be one of the + * register enumerations from tps65950_register.h + * or the value of a register Addr property + * + * @param aClearMask Each '1' clear the corresponding bit in the register + * @param aSetMask Each '1' sets the corresponding bit in the register + * @return KErrNone on success, else standard error code + */ +IMPORT_C TInt ClearSetSync( TUint16 aRegister, TUint8 aClearMask, TUint8 aSetMask ); + +/** Disable protection of voltage control registers + * Call RestoreProtect() to re-enable protection + * + * Note - calls to DisableProtect and RestoreProtect() are + * reference-counted, so you must call RestoreProtect() the same + * number of times you called DisableProtect(). This is to allow + * multiple clients to disable and restore protection so that + * protection will only be re-enabled when the last client has + * restored it. + */ +IMPORT_C TInt DisableProtect(); + +/** Restore protection after a DisableProtect(). + * If other clients have called DisableProtect(), or this client + * has other DisableProtect() calls still not balanced by a + * RestoreProtect() then the protection will remain disabled + */ +IMPORT_C TInt RestoreProtect(); + +/** Read the current RTC time */ +IMPORT_C TInt GetRtcData( TRtcTime& aTime ); + +/** Set the RTC time */ +IMPORT_C TInt SetRtcData( const TRtcTime& aTime ); + +enum TPanic + { + EBadAction, ///< illegal value in TReq::iAction + ENoDfc, ///< iCompletionDFC is NULL + EBadGroup ///< Group component of iRegister is invalid + }; + + +enum TInterruptId + { + KTPS65950IrqFirst= (EIrqRangeBasePsu << KIrqRangeIndexShift), + + ETPS65950_IRQ_PWR_SC_DETECT = KTPS65950IrqFirst, + ETPS65950_IRQ_PWR_MBCHG, + ETPS65950_IRQ_PWR_PWROK_TIMEOUT, + ETPS65950_IRQ_PWR_HOT_DIE, + ETPS65950_IRQ_PWR_RTC_IT, + ETPS65950_IRQ_PWR_USB_PRES, + ETPS65950_IRQ_PWR_CHG_PRES, + ETPS65950_IRQ_PWR_CHG_PWRONS, + + ETPS65950_IRQ_MADC_USB_ISR1, + ETPS65950_IRQ_MADC_SW2_ISR1, + ETPS65950_IRQ_MADC_SW1_ISR1, + ETPS65950_IRQ_MADC_RT_ISR1, + + ETPS65950_IRQ_GPIO_0ISR1, + ETPS65950_IRQ_GPIO_1ISR1, + ETPS65950_IRQ_GPIO_2ISR1, + ETPS65950_IRQ_GPIO_3ISR1, + ETPS65950_IRQ_GPIO_4ISR1, + ETPS65950_IRQ_GPIO_5ISR1, + ETPS65950_IRQ_GPIO_6ISR1, + ETPS65950_IRQ_GPIO_7ISR2, + + ETPS65950_IRQ_GPIO_8ISR2, + ETPS65950_IRQ_GPIO_9ISR2, + ETPS65950_IRQ_GPIO_10ISR2, + ETPS65950_IRQ_GPIO_11ISR2, + ETPS65950_IRQ_GPIO_12ISR2, + ETPS65950_IRQ_GPIO_13ISR2, + ETPS65950_IRQ_GPIO_14ISR2, + ETPS65950_IRQ_GPIO_15ISR2, + + ETPS65950_IRQ_GPIO16ISR3, + ETPS65950_IRQ_GPIO17ISR3, + + ETPS65950_IRQ_BCI_BATSTS_ISR1, + ETPS65950_IRQ_BCI_TBATOR1_ISR1, + ETPS65950_IRQ_BCI_TBATOR2_ISR1, + ETPS65950_IRQ_BCI_ICHGEOC_ISR1, + ETPS65950_IRQ_BCI_ICHGLOW_ISR1ASTO, + ETPS65950_IRQ_BCI_IICHGHIGH_ISR1, + ETPS65950_IRQ_BCI_TMOVF_ISR1, + ETPS65950_IRQ_BCI_WOVF_ISR1, + + ETPS65950_IRQ_BCI_ACCHGOV_ISR1, + ETPS65950_IRQ_BCI_VBUSOV_ISR1, + ETPS65950_IRQ_BCI_VBATOV_ISR1, + ETPS65950_IRQ_BCI_VBATLVL_ISR1, + + ETPS65950_IRQ_KEYP_ITMISR1, + ETPS65950_IRQ_KEYP_ITTOISR1, + ETPS65950_IRQ_KEYP_ITLKISR1, + ETPS65950_IRQ_KEYP_ITKPISR1, + + ETPS65950_IRQ_USB_INTSTS_IDGND, + ETPS65950_IRQ_USB_INTSTS_SESSEND, + ETPS65950_IRQ_USB_INTSTS_SESSVALID, + ETPS65950_IRQ_USB_INTSTS_VBUSVALID, + ETPS65950_IRQ_USB_INTSTS_HOSTDISCONNECT, + ETPS65950_IRQ_USB_CARKIT_CARDP, + ETPS65950_IRQ_USB_CARKIT_CARINTDET, + ETPS65950_IRQ_USB_CARKIT_IDFLOAT, + ETPS65950_IRQ_USB_OTHER_INT_VB_SESS_VLD, + ETPS65950_IRQ_USB_OTHER_INT_DM_HI, + ETPS65950_IRQ_USB_OTHER_INT_DP_HI, + ETPS65950_IRQ_USB_OTHER_INT_MANU, + ETPS65950_IRQ_USB_OTHER_INT_ABNORMAL_STRESS, + ETPS65950_IRQ_USB_ID_INT_ID_RES_FLOAT, + ETPS65950_IRQ_USB_ID_INT_ID_RES_440K, + ETPS65950_IRQ_USB_ID_INT_ID_RES_200K, + ETPS65950_IRQ_USB_ID_INT_ID_RES_102K, + ETPS65950_IRQ_USB_CARKIT_SM_1_PSM_ERROR, + ETPS65950_IRQ_USB_CARKIT_SM_1_PH_ACC, + ETPS65950_IRQ_USB_CARKIT_SM_1_CHARGER, + ETPS65950_IRQ_USB_CARKIT_SM_1_USB_HOST, + ETPS65950_IRQ_USB_CARKIT_SM_1_USB_OTG_B, + ETPS65950_IRQ_USB_CARKIT_SM_1_CARKIT, + ETPS65950_IRQ_USB_CARKIT_SM_1_DISCONNECTED, + ETPS65950_IRQ_USB_CARKIT_SM_2_STOP_PLS_MISS, + ETPS65950_IRQ_USB_CARKIT_SM_2_STEREO_TO_MONO, + ETPS65950_IRQ_USB_CARKIT_SM_2_PHONE_UART, + ETPS65950_IRQ_USB_CARKIT_SM_2_PH_NO_ACK, + + KTPS65950IrqLast, + }; + +const TInt KNumTPSInts = (KTPS65950IrqLast - KTPS65950IrqFirst); + +} // namespace TPS65950 + + +#endif //tps65950