omap3530/shared/tps65950/tps65950.h
changeset 0 6663340f3fc9
--- /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 <e32cmn.h>
+#include <nklib.h>
+#include <assp/omap3530_assp/omap3530_irqmap.h>
+#include <assp/omap3530_shared/tps65950_registers.h>
+
+// 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