--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/omap3530/assp/inc/omap3530_assp_priv.h Thu Oct 15 12:59:54 2009 +0100
@@ -0,0 +1,203 @@
+// Copyright (c) 2004-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:
+// omap3530/assp/inc/omap3530_assp_priv.h
+//
+
+#ifndef __OMAP3530_PRIV_H__
+#define __OMAP3530_PRIV_H__
+
+#include <e32const.h>
+#include <arm.h>
+#include <assp.h>
+#include <assp/omap3530_assp/omap3530_irqmap.h>
+#include <assp/omap3530_assp/omap3530_timer.h>
+#include <assp/omap3530_assp/omap3530_uart.h>
+
+/**
+* IRQ/FIQ dispatchers
+*/
+static void IrqDispatch();
+static void FiqDispatch();
+
+class TArmCpuId {
+public:
+ TInt Implementor; // Indicates the implementor, ARM:
+ TInt Variant; //Indicates the variant number, or major revision, of the processor:
+ TInt Architecture; //Indicates that the architecture is given in the feature registers:
+ TInt Primary; //part number Indicates the part number, Cortex-A8:
+ TInt Revision;
+};
+
+class Omap3530Interrupt : public Interrupt
+ {
+public:
+ /**
+ * These functions are required to initialise the Interrupt controller,or perform housekeeping
+ * functions, or dispatch the incoming IRQ or FIQ interrupts.
+ */
+
+ /**
+ * initialisation
+ */
+ static void Init1();
+ static void Init3();
+
+ /**
+ * Housekeeping (disable and clear all hardware interrupt sources)
+ */
+ static void DisableAndClearAll();
+ IMPORT_C static TInt IsInterruptEnabled(TInt anId);
+ static void dumpINTCState();
+ static void dumpIVTState();
+ static TInt GetRegisterAndBitOffset(TInt anId,TInt &aReg,TInt &aOffset);
+ static void Spurious(TAny* anId);
+
+ static SInterruptHandler Handlers[KNumOmap3530Ints];
+
+ TSpinLock Omap3530INTCLock;
+ TSpinLock Omap3530IVTLock;
+private:
+
+
+ };
+
+
+
+class Omap3530Assp : public Asic
+ {
+public:
+ IMPORT_C Omap3530Assp();
+
+public:
+ IMPORT_C virtual TInt MsTickPeriod();
+ /**
+ * Obtain System Time from the RTC
+ * @return System Time in seconds from 00:00 hours of 1/1/2000
+ */
+ virtual TInt SystemTimeInSecondsFrom2000(TInt& aTime)=0;
+ /**
+ * Obtain Adjust the RTC with new System Time (from 00:00 hours of 1/1/2000)
+ * @return System wide error code
+ */
+ virtual TInt SetSystemTimeInSecondsFrom2000(TInt aTime)=0;
+ /**
+ * Obtain the time it takes to execute two processor instructions
+ * @return Time in nanoseconds it takes two execute 2 instructions at the processor clock speed
+ */
+ IMPORT_C virtual TUint32 NanoWaitCalibration();
+
+ /**
+ * initialisation
+ */
+ IMPORT_C virtual void Init1();
+ IMPORT_C virtual void Init3();
+ /**
+ * Active waiting loop (not to be used after System Tick timer has been set up - Init3()
+ * @param aDuration A wait time in milliseconds
+ */
+ IMPORT_C static void BootWaitMilliSeconds(TInt aDuration);
+ /**
+ * Read and return the Startup reason of the Hardware
+ * @return A TMachineStartupType enumerated value
+ */
+ IMPORT_C virtual TMachineStartupType StartupReason();
+ /**
+ * Read and return the the CPU ID
+ * @return An integer containing the CPU ID string read off the hardware
+ */
+ IMPORT_C static void ArmCpuVersionId(TArmCpuId &id);
+ /**
+ * Get debug port number enumeration
+ * @return An integer containing the Omap3530Uart::TUartNumber value, with value ENone if debug port isn't a UART
+ */
+ IMPORT_C static Omap3530Uart::TUartNumber DebugPortNumber();
+ /**
+ * Read CPU clock period in picoseconds
+ * @return An integer containing the CPU clock period in picoseconds
+ */
+ IMPORT_C static TUint ProcessorPeriodInPs();
+ /**
+ * Read the current time of the RTC
+ * @return A value that is the real time as given by a RTC
+ */
+ //IMPORT_C static TUint RtcData();
+ /**
+ * Set the RTC time
+ * @param aValue The real time to set the RTC
+ */
+ //IMPORT_C static void SetRtcData(TUint aValue);
+ /**
+ * Obtain the physical start address of Video Buffer
+ * @return the physical start address of Video Buffer
+ */
+
+ IMPORT_C static TUint64 GetXtalFrequency();
+
+private:
+ /**
+ * Assp-specific implementation for Kern::NanoWait function
+ */
+ static void NanoWait(TUint32 aInterval);
+ TInt StartMsTick();
+ static void MsTickIsr(TAny* aPtr);
+
+
+public:
+ /**
+ * for derivation by Variant
+ */
+
+ /**
+ * external interrupt handling
+ * used by second-level interrupt controllers at Variant level
+ */
+ virtual TInt InterruptBind(TInt anId, TIsr anIsr, TAny* aPtr)=0;
+ virtual TInt InterruptUnbind(TInt anId)=0;
+ virtual TInt InterruptEnable(TInt anId)=0;
+ virtual TInt InterruptDisable(TInt anId)=0;
+ virtual TInt InterruptClear(TInt anId)=0;
+ virtual TInt IsExternalInterrupt(TInt anId)=0;
+
+ /**
+ * USB client controller - Some example functions for the case that USB cable detection and
+ * UDC connect/disconnect functionality are part of the Variant.
+ * Pure virtual functions called by the USB PSL, to be implemented by the Variant (derived class).
+ * If this functionality is part of the ASSP then these functions can be removed and calls to them
+ * in the PSL (./pa_usbc.cpp) replaced by the appropriate internal operations.
+ */
+ virtual TBool UsbClientConnectorDetectable()=0;
+ virtual TBool UsbClientConnectorInserted()=0;
+ virtual TInt RegisterUsbClientConnectorCallback(TInt (*aCallback)(TAny*), TAny* aPtr)=0;
+ virtual void UnregisterUsbClientConnectorCallback()=0;
+ virtual TBool UsbSoftwareConnectable()=0;
+ virtual TInt UsbConnect()=0;
+ virtual TInt UsbDisconnect()=0;
+
+ /** Return the frequency in Hz of the SYSCLK source clock */
+ virtual TUint SysClkFrequency() const = 0;
+
+ /** Return the frequency in Hz of the SYSCLK32K source clock */
+ virtual TUint SysClk32kFrequency() const = 0;
+
+ /** Return the frequency in Hz of the ALTCLK source clock */
+ virtual TUint AltClkFrequency() const = 0;
+
+public:
+ static Omap3530Assp * Variant;
+ TBool iDebugInitialised;
+
+private:
+ };
+
+#endif