--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/baseport/src/cedar/generic/base/syborg/fb/syborg_fb.h Fri Jul 31 14:43:15 2009 +0100
@@ -0,0 +1,124 @@
+/*
+* 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: Minimalistic frame buffer driver
+*
+*/
+
+#ifndef _SYBORG_FB_H
+#define _SYBORG_FB_H
+
+#include <videodriver.h>
+#include <nkern.h>
+#include <kernel.h>
+#include <kpower.h>
+#include <system.h>
+
+_LIT(KLitLcd,"SYBORG_FB");
+
+const TUint KConfigLcdWidth = 640;
+const TUint KConfigLcdHeight = 480;
+const TInt KConfigLcdWidthInTwips = 9638;
+const TInt KConfigLcdHeightInTwips = 7370;
+const TBool KConfigIsMono = 0;
+const TBool KConfigIsPalettized = 0;
+const TInt KCOnfigOffsetToFirstPixel = 0;
+const TBool KConfigPixelOrderRGB = 0;
+const TBool KConfigPixelOrderLandscape = 1;
+const TInt KConfigLcdDisplayMode = 2;
+//const TInt KConfigLcdDisplayMode = 1;
+const TInt KConfigLcdNumberOfDisplayModes = 3;
+
+
+const TInt KConfigBitsPerPixel = 24;
+const TInt KCOnfigOffsetBetweenLines = 2560;
+
+class DLcdPowerHandler : public DPowerHandler
+{
+public: // from DPowerHandler
+ void PowerDown(TPowerState);
+ void PowerUp();
+public: // to prevent a race condition with WServer trying to power up/down at the same time
+ void PowerUpDfc();
+ void PowerDownDfc();
+public:
+ DLcdPowerHandler();
+ TInt Create();
+ void DisplayOn();
+ void DisplayOff();
+ TInt HalFunction(TInt aFunction, TAny* a1, TAny* a2);
+
+ void PowerUpLcd(TBool aSecure);
+ void PowerDownLcd();
+
+ void ScreenInfo(TScreenInfoV01& aInfo);
+ void WsSwitchOnScreen();
+ void WsSwitchOffScreen();
+ void HandleMsg(TMessageBase* aMsg);
+ void SwitchDisplay(TBool aSecure);
+
+private:
+ TInt GetCurrentDisplayModeInfo(TVideoInfoV01& aInfo, TBool aSecure);
+ TInt GetSpecifiedDisplayModeInfo(TInt aMode, TVideoInfoV01& aInfo);
+ TInt SetDisplayMode(TInt aMode);
+ TInt AllocateFrameBuffer();
+
+ TBool iDisplayOn;
+ DPlatChunkHw* iChunk;
+ DPlatChunkHw* iSecureChunk;
+ TBool iWsSwitchOnScreen;
+ TBool iSecureDisplay;
+
+public:
+ TDfcQue* iDfcQ;
+ TMessageQue iMsgQ; // to prevent a race condition with Power Manager trying to power up/down at the same time
+ TDfc iPowerUpDfc;
+ TDfc iPowerDownDfc;
+
+private:
+ TVideoInfoV01 iVideoInfo;
+ TVideoInfoV01 iSecureVideoInfo;
+ NFastMutex iLock;
+ TPhysAddr ivRamPhys;
+ TPhysAddr iSecurevRamPhys;
+
+public:
+ TLinAddr iPortAddr;
+
+enum {
+ FB_ID = 0,
+ FB_BASE = 1,
+ FB_HEIGHT = 2,
+ FB_WIDTH = 3,
+ FB_ORIENTATION = 4,
+ FB_BLANK = 5,
+ FB_INT_MASK = 6,
+ /* begin new interface */
+ FB_INTERRUPT_CAUSE = 7,
+ FB_BPP = 8,
+ FB_COLOR_ORDER = 9,
+ FB_BYTE_ORDER = 10,
+ FB_PIXEL_ORDER = 11,
+ FB_ROW_PITCH = 12,
+ FB_ENABLED = 13,
+ FB_PALETTE_START = 0x400 >> 2,
+ FB_PALETTE_END = FB_PALETTE_START+256-1,
+ /* end new interface */
+};
+
+#define FB_INT_VSYNC (1U << 0)
+#define FB_INT_BASE_UPDATE_DONE (1U << 1)
+
+};
+
+#endif