# HG changeset patch # User William Roberts # Date 1279812580 -3600 # Node ID e5bc2850013cfbc07f16dad599f175f7df1b9fb9 # Parent d4c81235847e6de0eb899873d0d124a6f7f705d2# Parent 4508ea692a4d0be75618d9ead72575c387ddaeab Catchup to latest Symbian^4 diff -r d4c81235847e -r e5bc2850013c omap3530/beagle_drivers/lcd/bld.inf --- a/omap3530/beagle_drivers/lcd/bld.inf Thu Jul 08 11:51:55 2010 +0100 +++ b/omap3530/beagle_drivers/lcd/bld.inf Thu Jul 22 16:29:40 2010 +0100 @@ -18,3 +18,4 @@ PRJ_MMPFILES lcd +lcd_gce diff -r d4c81235847e -r e5bc2850013c omap3530/beagle_drivers/lcd/lcd_gce.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omap3530/beagle_drivers/lcd/lcd_gce.mmp Thu Jul 22 16:29:40 2010 +0100 @@ -0,0 +1,58 @@ +// 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: +// beagle/beagle_drivers/lcd.mmp +// lcd.dll Beagle LCD driver +// + + + +/** + @file +*/ +#define __USING_ASSP_REGISTER_API__ +#define __USING_ASSP_INTERRUPT_API__ + +#include "beagle/variant.mmh" +#include "kernel/kern_ext.mmh" + +//Need to define NGA_BUILD for a NGA compliant Display PDD +#define NGA_BUILD +#ifdef NGA_BUILD +MACRO ENABLE_GCE_MODE +target VariantTarget(lcd_gce,dll) +#else +target VariantTarget(lcd,dll) +#endif + +targettype kext +romtarget lcd.dll + +sourcepath . +source lcd.cpp + +SYMBIAN_BASE_SYSTEMINCLUDE(drivers) +userinclude . + +library VariantTarget(ecust,lib) +LIBRARY AsspTarget(prcm,lib) + +noexportlibrary + +epocallowdlldata + +uid 0x1000008d 0x100039e8 + +VENDORID 0x70000001 + +capability all diff -r d4c81235847e -r e5bc2850013c omap3530/beagleboard/rom/base_beagle.iby --- a/omap3530/beagleboard/rom/base_beagle.iby Thu Jul 08 11:51:55 2010 +0100 +++ b/omap3530/beagleboard/rom/base_beagle.iby Thu Jul 22 16:29:40 2010 +0100 @@ -86,7 +86,10 @@ primary[VARID] =\epoc32\release\ARMV5\BUILD_DIR\_omap3530_ekern.exe \sys\bin\ekern.exe extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_omap3530_kaomap3530.dll \sys\bin\kaomap3530.dll + #include <..\omapshared\mstick.iby> + +// Removing BTRACEX //extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_beagle_BTRACEX.LDD \sys\bin\btracex.ldd extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_omap3530_prcm.dll \sys\bin\prcm.dll @@ -105,19 +108,27 @@ extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_omap3530_i2c.dll \sys\bin\i2c.dll #include <../omapshared/tps65950.iby> -#ifdef TSHELL_SERIAL - //Use VT100 Over Serial -# define EDISP_DRV \EDISP_VT100.DLL - device[VARID]=KERNEL_DIR\BUILD_DIR\_omap3530_EUART.PDD \sys\bin\euart.pdd - device[VARID]=KERNEL_DIR\BUILD_DIR\ECOMM.LDD \sys\bin\ecomm.ldd +#ifdef SYMBIAN_BASE_USE_GCE + // Use the new GCE compliant display driver + extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_beagle_lcd_gce.dll \sys\bin\lcd.dll + device[VARID]=KERNEL_DIR\DEBUG_DIR\display.ldd \sys\bin\display0.ldd + #file=ABI_DIR\DEBUG_DIR\_beagle_ekdata.dll \sys\bin\ekdata.dll + extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_omap3530_serialkeyboard_uisoftkeys.dll \sys\bin\ekeyb.dll #else - extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_beagle_lcd.dll \sys\bin\lcd.dll -# ifdef TSHELL_SERIALMOUSE - extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_beagle_serialmouse.DLL \sys\bin\eserialmouse.dll -# else -// extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_omap3530_serialkeyboard.DLL \sys\bin\ekeyb.dll -# endif -#endif + #ifdef TSHELL_SERIAL + //Use VT100 Over Serial + #define EDISP_DRV \EDISP_VT100.DLL + device[VARID]=KERNEL_DIR\BUILD_DIR\_omap3530_EUART.PDD \sys\bin\euart.pdd + device[VARID]=KERNEL_DIR\BUILD_DIR\ECOMM.LDD \sys\bin\ecomm.ldd + #else + extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_beagle_lcd.dll \sys\bin\lcd.dll + #ifdef TSHELL_SERIALMOUSE + extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_beagle_serialmouse.DLL \sys\bin\eserialmouse.dll + #else + extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_omap3530_serialkeyboard.DLL \sys\bin\ekeyb.dll + #endif + #endif + extension[VARID]=KERNEL_DIR\BUILD_DIR\elocd.ldd \sys\bin\elocd.ldd extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_beagle_medint.pdd \sys\bin\medint.pdd device[VARID] =KERNEL_DIR\BUILD_DIR\pipelib.ldd \sys\bin\pipelib.ldd @@ -129,6 +140,7 @@ device[VARID]= KERNEL_DIR\BUILD_DIR\usbc.ldd \sys\bin\eusbc.ldd extension[VARID]= \epoc32\release\ARMV5\BUILD_DIR\_beagle_usbv.dll \sys\bin\usbv.DLL #endif +#endif //SYMBIAN_BASE_USE_GCE //extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_beagle_ekeyb.dll \sys\bin\ekeyb.dll -extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_omap3530_serialkeyboard.DLL \sys\bin\ekeyb.dll \ No newline at end of file +//extension[VARID]=\epoc32\release\ARMV5\BUILD_DIR\_omap3530_serialkeyboard.DLL \sys\bin\ekeyb.dll \ No newline at end of file diff -r d4c81235847e -r e5bc2850013c omap3530/bld.inf --- a/omap3530/bld.inf Thu Jul 08 11:51:55 2010 +0100 +++ b/omap3530/bld.inf Thu Jul 22 16:29:40 2010 +0100 @@ -32,6 +32,7 @@ // #include "omap3530_drivers/prm/bld.inf" #include "omap3530_drivers/uart/bld.inf" #include "omap3530_drivers/usbcc/bld.inf" +#include "omap3530_drivers/euart/bld.inf" #include "shared/monitor/bld.inf" #include "shared/mstick/bld.inf" #include "shared/serialkeyb/bld.inf" diff -r d4c81235847e -r e5bc2850013c omap3530/omap3530_drivers/euart/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omap3530/omap3530_drivers/euart/bld.inf Thu Jul 22 16:29:40 2010 +0100 @@ -0,0 +1,7 @@ +// omap3530/omap3530_drivers/euart/bld.inf + +PRJ_PLATFORMS +ARMV5 + +PRJ_MMPFILES +euart diff -r d4c81235847e -r e5bc2850013c omap3530/omap3530_drivers/euart/euart.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omap3530/omap3530_drivers/euart/euart.cpp Thu Jul 22 16:29:40 2010 +0100 @@ -0,0 +1,557 @@ +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Accenture +// +// Contributors: +// +// Description: +// \sf\adaptation\beagleboard\omap3530\omap3530_drivers\euart\euart.cpp +// pdd for serial ports +// assume Modem Control Signals change cause an interrupt +// +// + +#include +#include +#include "euart.h" + +#define TX_POLLING_HACK + +_LIT(KPddName,"Comm.Beagle"); +using namespace Omap3530Uart; + +DDriverComm::DDriverComm() +// +// Constructor +// + { + iUnitsMask=0x7; + iVersion=TVersion(KCommsMajorVersionNumber,KCommsMinorVersionNumber,KCommsBuildVersionNumber); + } + +TInt DDriverComm::Install() +// +// Install the driver +// + { + return SetName(&KPddName); + } + +void GetTemplateCommsCaps(TDes8 &aCaps, TInt aUnit) + { + TCommCaps2 capsBuf; + + // Fill in the Caps structure with the relevant information for this Unit, e.g + TCommCapsV02 &c=capsBuf(); + c.iRate=KCapsBps1200|KCapsBps2400|KCapsBps4800|KCapsBps9600|KCapsBps19200|KCapsBps38400| + KCapsBps57600|KCapsBps115200|KCapsBps230400|KCapsBps460800|KCapsBps4000000; + + c.iDataBits=KCapsData5|KCapsData6|KCapsData7|KCapsData8; + c.iStopBits=KCapsStop1|KCapsStop2; + c.iParity=KCapsParityNone|KCapsParityEven|KCapsParityOdd|KCapsParityMark|KCapsParitySpace; + c.iHandshake=0; //(OR in all KCapsObeyXXXSupported, KCapsSendXXXSupported, KCapsFailXXXSupported, KCapsFreeXXXSupported + // as required for this Unit's configuration);. + c.iSignals=0; //(OR in as many KCapsSignalXXXSupported as Modem control signals controllable by this Unit); + c.iSIR=0; //(0 or OR in as many KCapsSIRXXX as IR bit rates supported); + c.iNotificationCaps=0; //(OR in as many KNotifyXXXSupported as notifications supported by this Unit); + c.iFifo=0; //(0 or KCapsHasFifo); + c.iRoleCaps=0; //(0 or KCapsRoleSwitchSupported); + c.iFlowControlCaps=0; //(0 or KCapsFlowControlStatusSupported); + /** @see TCommCapsV02 */ + + aCaps=capsBuf.Left(Min(capsBuf.Length(),aCaps.MaxLength())); + } + +void DDriverComm::GetCaps(TDes8 &aDes) const +// +// Return the drivers capabilities +// + { + GetTemplateCommsCaps(aDes, 0); + } + +TInt DDriverComm::Create(DBase*& aChannel, TInt aUnit, const TDesC8* anInfo, const TVersion& aVer) +// +// Create a driver +// + { + DCommBeagle* pD=new DCommBeagle; + aChannel=pD; + TInt r=KErrNoMemory; + if (pD) + r=pD->DoCreate(aUnit,anInfo); + return r; + } + +TInt DDriverComm::Validate(TInt aUnit, const TDesC8* /*anInfo*/, const TVersion& aVer) +// +// Validate the requested configuration (Version and Unit) +// + { + if ((!Kern::QueryVersionSupported(iVersion,aVer)) || (!Kern::QueryVersionSupported(aVer,TVersion(KMinimumLddMajorVersion,KMinimumLddMinorVersion,KMinimumLddBuild)))) + return KErrNotSupported; + + if(aUnit<0 || aUnit >2) + return KErrNotSupported; + + return KErrNone; + } + +DCommBeagle::DCommBeagle() +// +// Constructor +// + { + gData=0; + iInterruptId=-1; // -1 means not bound + } + +DCommBeagle::~DCommBeagle() +// +// Destructor +// + { + if (iInterruptId>=0) + Interrupt::Unbind(iInterruptId); + + if (iDfcQ) + { + iDfcQ->Destroy(); + } + } + +const TInt KDCommBeagleDfcThreadPriority = 24; +_LIT(KDCommBeagleDfcThread,"DCommBeagleDfcThread"); + +TInt DCommBeagle::DoCreate(TInt aUnit, const TDesC8* /*anInfo*/) +// +// Sets up the PDD +// + { + iUnit=aUnit; + + // Create own DFC queue + TInt r = Kern::DynamicDfcQCreate(iDfcQ, KDCommBeagleDfcThreadPriority, KDCommBeagleDfcThread); + + if (r != KErrNone) + return r; + + // Set iPortAddr and irq with the Linear Base address of the UART and the Interrupt ID coresponding to aUnit + iUart = new TUart((TUartNumber)aUnit); + Prcm::SetClockState(iUart->PrcmInterfaceClk(), Prcm::EClkOn); + Prcm::SetClockState(iUart->PrcmFunctionClk(), Prcm::EClkOn); + + // bind to UART interrupt + r=Interrupt::Bind(iUart->InterruptId(),Isr,this); + if (r==KErrNone) + iInterruptId=iUart->InterruptId(); + return r; + } + +TDfcQue* DCommBeagle::DfcQ(TInt aUnit) +// +// Return the DFC queue to be used for this device +// For UARTs just use the standard low priority DFC queue +// For Serial PC cards, use the PC card controller thread for the socket in question. +// + { + return aUnit==iUnit ? iDfcQ : NULL; + } + +TInt DCommBeagle::Start() +// +// Start receiving characters +// + { + if(iUnit == Kern::SuperPage().iDebugPort) + Variant::MarkDebugPortOff(); + + iTransmitting=EFalse; // if EnableTransmit() called before Start() + + if(iUart==NULL) + { + return KErrNotReady; + } + iSignals=Signals(); + iLdd->UpdateSignals(iSignals); + + Interrupt::Enable(iInterruptId); + iUart->EnableInterrupt(TUart::EIntRhr); + return KErrNone; + } + +TBool FinishedTransmitting(TAny* aPtr) + { + DCommBeagle* self = (DCommBeagle*)aPtr; + if(self->iUart==NULL) + { + return ETrue; + } + + if(!self->iUart->TxFifoEmpty()) + { + return EFalse; + } + return ETrue; + } + +void DCommBeagle::Stop(TStopMode aMode) +// +// Stop receiving characters +// + { + switch (aMode) + { + case EStopNormal: + case EStopPwrDown: + iUart->DisableInterrupt(TUart::EIntRhr); + iUart->DisableInterrupt(TUart::EIntThr); + Interrupt::Disable(iInterruptId); + + // wait for uart to stop tranmitting + Kern::PollingWait(FinishedTransmitting,this,3,100); + + iTransmitting=EFalse; + + iUart->Disable(); + Prcm::SetClockState(iUart->PrcmFunctionClk(), Prcm::EClkOff); + break; + case EStopEmergency: + iUart->DisableInterrupt(TUart::EIntRhr); + iUart->DisableInterrupt(TUart::EIntThr); + Interrupt::Disable(iInterruptId); + iTransmitting=EFalse; + break; + } + } + +void DCommBeagle::Break(TBool aState) +// +// Start or stop the uart breaking +// + { + if (aState) + { + // + // TO DO: (mandatory) + // + // Enable sending a Break (space) condition + // + } + else + { + // + // TO DO: (mandatory) + // + // Stop sending a Break (space) condition + // + } + } + +void DCommBeagle::EnableTransmit() +// +// Start sending characters. +// + { + TBool tx=(TBool)NKern::SafeSwap((TAny*)ETrue,(TAny*&)iTransmitting); + if (tx) + { + return; + } + TInt r = 0; + #ifdef TX_POLLING_HACK + while (Kern::PowerGood()) + #else + while (Kern::PowerGood() && !iUart->TxFifoFull()) + #endif + { + r=TransmitIsr(); + if(r<0) + { + //no more to send + iTransmitting=EFalse; + break; + } + #ifdef TX_POLLING_HACK + while(iUart->TxFifoFull()); + #endif + iUart->Write(r); + } + TInt irq=0; + if (!iInInterrupt) // CheckTxBuffer adds a Dfc: can only run from ISR or with NKernel locked + { + NKern::Lock(); + irq=NKern::DisableAllInterrupts(); + } + CheckTxBuffer(); + if (!iInInterrupt) + { + NKern::RestoreInterrupts(irq); + NKern::Unlock(); + } + if (r>=0) // only enable interrupt if there's more data to send + { + iUart->EnableInterrupt(TUart::EIntThr); + } + } + +TUint DCommBeagle::Signals() const +// +// Read and translate the modem lines +// + { + TUint signals=0; + // + // TO DO: (mandatory) + // + // If the UART corresponding to iUnit supports Modem Control Signals, read them and return a bitmask with one or + // more of the following OR-ed in: + // - KSignalDTR, + // - KSignalRTS, + // - KSignalDSR, + // - KSignalCTS, + // - KSignalDCD. + // + return signals; + } + +void DCommBeagle::SetSignals(TUint aSetMask, TUint aClearMask) +// +// Set signals. +// + { + // + // TO DO: (mandatory) + // + // If the UART corresponding to iUnit supports Modem Control Signals, converts the flags in aSetMask and aClearMask + // into hardware-specific bitmasks to write to the UART modem/handshake output register(s). + // aSetMask, aClearMask will have one or more of the following OR-ed in: + // - KSignalDTR, + // - KSignalRTS, + // + } + +TInt DCommBeagle::ValidateConfig(const TCommConfigV01 &aConfig) const +// +// Check a config structure. +// + { + // + // TO DO: (mandatory) + // + // Checks the the options in aConfig are supported by the UART corresponding to iUnit + // May need to check: + // - aConfig.iParity (contains one of EParityXXX) + /** @see TParity */ + // - aConfig.iRate (contains one of EBpsXXX) + /** @see TBps */ + // - aConfig.iDataBits (contains one of EDataXXX) + /** @see TDataBits */ + // - aConfig.iStopBits (contains one of EStopXXX) + /** @see TDataBits */ + // - aConfig.iHandshake (contains one of KConfigObeyXXX or KConfigSendXXX or KConfigFailXXX or KConfigFreeXXX) + // - aConfig.iParityError (contains KConfigParityErrorFail or KConfigParityErrorIgnore or KConfigParityErrorReplaceChar) + // - aConfig.iFifo (contains ether EFifoEnable or EFifoDisable) + /** @see TFifo */ + // - aConfig.iSpecialRate (may contain a rate not listed under TBps) + // - aConfig.iTerminatorCount (conatains number of special characters used as terminators) + // - aConfig.iTerminator[] (contains a list of special characters which can be used as terminators) + // - aConfig.iXonChar (contains the character used as XON - software flow control) + // - aConfig.iXoffChar (contains the character used as XOFF - software flow control) + // - aConfig.iParityErrorChar (contains the character used to replace bytes received with a parity error) + // - aConfig.iSIREnable (contains either ESIREnable or ESIRDisable) + /** @see TSir */ + // - aConfig.iSIRSettings (contains one of KConfigSIRXXX) + // and returns KErrNotSupported if the UART corresponding to iUnit does not support this configuration + // + return KErrNone; + } + +void DCommBeagle::CheckConfig(TCommConfigV01& aConfig) + { + // + // TO DO: (optional) + // + // Validates the default configuration that is defined when a channel is first opened + // + } + +TInt DCommBeagle::DisableIrqs() +// +// Disable normal interrupts +// + { + + return NKern::DisableInterrupts(1); + } + +void DCommBeagle::RestoreIrqs(TInt aLevel) +// +// Restore normal interrupts +// + { + + NKern::RestoreInterrupts(aLevel); + } + +void DCommBeagle::Configure(TCommConfigV01 &aConfig) +// +// Configure the UART from aConfig +// + { + Kern::PollingWait(FinishedTransmitting,this,3,100); // wait for uart to stop tranmitting + iUart->Disable(); + + iUart->Init(); + iUart->DefineMode(TUart::EUart); + + switch(aConfig.iRate) + { + case EBps1200: + iUart->SetBaud(TUart::E1200); + break; + case EBps2400: + iUart->SetBaud(TUart::E2400); + break; + case EBps4800: + iUart->SetBaud(TUart::E4800); + break; + case EBps9600: + iUart->SetBaud(TUart::E9600); + break; + case EBps19200: + iUart->SetBaud(TUart::E19200); + break; + case EBps38400: + iUart->SetBaud(TUart::E38400); + break; + case EBps57600: + iUart->SetBaud(TUart::E57600); + break; + case EBps460800: + iUart->SetBaud(TUart::E460800); + break; + case EBps115200: + default: + iUart->SetBaud(TUart::E115200); + } + + TUart::TDataBits databits = (TUart::TDataBits)aConfig.iDataBits; + TUart::TStopBits stopbits; + switch(aConfig.iStopBits) + { + case EStop2: + stopbits=TUart::E2Stop; + break; + case EStop1: + default: + stopbits=TUart::E1Stop; + } + + TUart::TParity parity; + switch(aConfig.iParity) + { + case EParityEven: + parity=TUart::EEven; + break; + case EParityOdd: + parity=TUart::EOdd; + break; + case EParityMark: + parity=TUart::EMark; + break; + case EParitySpace: + parity=TUart::ESpace; + break; + case EParityNone: + default: + parity=TUart::ENone; + } + + iUart->SetDataFormat(databits, stopbits, parity); + iUart->EnableFifo(TUart::EEnabled, TUart::ETrigger8, TUart::ETrigger8); + + iUart->Enable(); + } + +void DCommBeagle::Caps(TDes8 &aCaps) const +// +// return our caps +// + { + GetTemplateCommsCaps(aCaps,iUnit); + } + +void DCommBeagle::Isr(TAny* aPtr) +// +// Service the UART interrupt +// + { + DCommBeagle& d=*(DCommBeagle*)aPtr; + d.iInInterrupt=1; // going in... + TUint xon=d.iLdd->iRxXonChar; + TUint xoff=d.iLdd->iRxXoffChar; + + // Read the interrupt source register to determine if it is a Receive, Transmit or Modem Signals change interrupt. + // If required also, clear interrupts at the source. + // Then process the interrupt condition as in the following pseudo-code extract: + // + TUint interruptId = IIR::iMem.Read(*(d.iUart)); + TUint interruptEn = IER::iMem.Read(*(d.iUart)); + + if((interruptId & IIR::IT_TYPE::ETHR) && (interruptEn & IER::THR_IT::KMask) ) + { + while(Kern::PowerGood() && !d.iUart->TxFifoFull()) + { + TInt r=d.TransmitIsr(); + if(r<0) + { + // Disable the Transmit Interrupt in Hardware + d.iUart->DisableInterrupt(TUart::EIntThr); + d.iTransmitting=EFalse; + break; + } + d.iUart->Write(r); + } + d.CheckTxBuffer(); + } + + if((interruptId & IIR::IT_TYPE::ERHR) && (interruptEn & IER::RHR_IT::KMask) ) + { + TUint rx[32]; + TInt rxi=0; + TInt x=0; + + while(!d.iUart->RxFifoEmpty() && rxi<32) + { + TUint ch = d.iUart->Read(); + if (ch==xon) + x=1; + else if (ch==xoff) + x=-1; + else + rx[rxi++]=ch; + } + d.ReceiveIsr(rx,rxi,x); + } + + if((interruptId & IIR::IT_TYPE::EModem) && (interruptEn & IER::MODEM_STS_IT::KMask) ) + { + TUint signals=d.Signals()&KDTEInputSignals; + if (signals != d.iSignals) + { + d.iSignals=signals; + d.iLdd->StateIsr(signals); + } + } + d.iInInterrupt=0; // going out... + } + +DECLARE_STANDARD_PDD() + { + return new DDriverComm; + } diff -r d4c81235847e -r e5bc2850013c omap3530/omap3530_drivers/euart/euart.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omap3530/omap3530_drivers/euart/euart.h Thu Jul 22 16:29:40 2010 +0100 @@ -0,0 +1,71 @@ +/* +* 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: +* Accenture +* +* Contributors: +* +* Description: Minimalistic serial driver +* +*/ + +#ifndef _BEAGLE_SERIAL_H +#define _BEAGLE_SERIAL_H + +#include +#include +#include +#include + +const TInt KMinimumLddMajorVersion=1; +const TInt KMinimumLddMinorVersion=1; +const TInt KMinimumLddBuild=122; + +class DDriverComm : public DPhysicalDevice + { +public: + DDriverComm(); + virtual TInt Install(); + virtual void GetCaps(TDes8 &aDes) const; + virtual TInt Create(DBase*& aChannel, TInt aUnit, const TDesC8* anInfo, const TVersion &aVer); + virtual TInt Validate(TInt aUnit, const TDesC8* anInfo, const TVersion &aVer); + }; + +class DCommBeagle : public DComm + { +public: + DCommBeagle(); + ~DCommBeagle(); + TInt DoCreate(TInt aUnit, const TDesC8* anInfo); +public: + virtual TInt Start(); + virtual void Stop(TStopMode aMode); + virtual void Break(TBool aState); + virtual void EnableTransmit(); + virtual TUint Signals() const; + virtual void SetSignals(TUint aSetMask,TUint aClearMask); + virtual TInt ValidateConfig(const TCommConfigV01 &aConfig) const; + virtual void Configure(TCommConfigV01 &aConfig); + virtual void Caps(TDes8 &aCaps) const; + virtual TInt DisableIrqs(); + virtual void RestoreIrqs(TInt aIrq); + virtual TDfcQue* DfcQ(TInt aUnit); + virtual void CheckConfig(TCommConfigV01& aConfig); +public: + static void Isr(TAny* aPtr); +public: + TInt iInterruptId; + TInt iUnit; + TLinAddr iPortAddr; + TInt iInInterrupt; + TUint iSignals; + TDynamicDfcQue* iDfcQ; + Omap3530Uart::TUart* iUart; + TInt gData; + }; + +#endif diff -r d4c81235847e -r e5bc2850013c omap3530/omap3530_drivers/euart/euart.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omap3530/omap3530_drivers/euart/euart.mmp Thu Jul 22 16:29:40 2010 +0100 @@ -0,0 +1,37 @@ +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Accenture +// +// Contributors: +// +// Description: +// omap3530\omap3530_drivers\euart\euart.mmp +// +// + +#include "beagle/variant.mmh" +#include +#include "kernel/kern_ext.mmh" + +target AsspTarget(euart,pdd) +targettype pdd +romtarget euart.pdd + +systeminclude . +systeminclude +/include/assp/omap3530_assp +systeminclude +/include/platform/drivers + +sourcepath . +source euart.cpp + +library AsspTarget(kaomap3530,lib) AsspTarget(uart,lib) VariantTarget(ecust,lib) AsspTarget(prcm,lib) + +uid 0 0x1000015b + +VENDORID 0x70000001 + +capability all diff -r d4c81235847e -r e5bc2850013c omap3530/shared/serialkeyb/bld.inf --- a/omap3530/shared/serialkeyb/bld.inf Thu Jul 08 11:51:55 2010 +0100 +++ b/omap3530/shared/serialkeyb/bld.inf Thu Jul 22 16:29:40 2010 +0100 @@ -19,3 +19,4 @@ PRJ_MMPFILES serialkeyboard +serialkeyboard_UI_Softkeys diff -r d4c81235847e -r e5bc2850013c omap3530/shared/serialkeyb/serialkeyboard.cpp --- a/omap3530/shared/serialkeyb/serialkeyboard.cpp Thu Jul 08 11:51:55 2010 +0100 +++ b/omap3530/shared/serialkeyb/serialkeyboard.cpp Thu Jul 22 16:29:40 2010 +0100 @@ -32,6 +32,7 @@ #define ISFUNC(x) (0x4000&(x)) #define STDKEY(x) (0x1FFF&(x)) +#if _UI_SOFTKEYS_ENABLED_ static const TUint16 KScanCode[] = { /*00*/ EStdKeyNull, @@ -164,6 +165,141 @@ /*7f*/ EKeyDelete }; +#else +static const TUint16 KScanCode[] = + { + /*00*/ EStdKeyNull, + /*01*/ EStdKeyHome, // ^A + /*02*/ EStdKeyLeftArrow, // ^B + /*03*/ EStdKeyEscape, // ^C + /*04*/ SHIFTED(EStdKeyDownArrow), // ^D - move window down + /*05*/ EStdKeyEnd, // ^E + /*06*/ EStdKeyRightArrow, // ^F + /*07*/ EStdKeyNull, + /*08*/ EStdKeyBackspace, // ^H - Reserved! + /*09*/ EStdKeyTab, // ^I - Reserved! + /*0a*/ EStdKeyNull, + /*0b*/ EStdKeyIncContrast, // ^K + /*0c*/ EStdKeyDecContrast, // ^L + /*0d*/ EStdKeyEnter, // ^M - Reserved! + /*0e*/ EStdKeyDownArrow, // ^N + /*0f*/ EStdKeyNull, // ^O = instant death + /*10*/ EStdKeyUpArrow, // ^P + /*11*/ CTRLED(EStdKeyLeftArrow), // ^Q - make window narrower + /*12*/ CTRLED(FUNCED('5')), // ^R - rotate windows in text window server + /*13*/ EStdKeyNull, + /*14*/ CTRLED(EStdKeyDownArrow), // ^T - make window taller + /*15*/ SHIFTED(EStdKeyUpArrow), // ^U - move window up + /*16*/ EStdKeyNull, + /*17*/ CTRLED(EStdKeyRightArrow), // ^W - make window wider + /*18*/ SHIFTED(EStdKeyRightArrow), // ^X - move window right + /*19*/ CTRLED(EStdKeyUpArrow), // ^Y - make window shorter + /*1a*/ SHIFTED(EStdKeyLeftArrow), // ^Z - move window left + /*1b*/ EStdKeyEscape, // ^[ - Reserved! + /*1c*/ EStdKeyNull, + /*1d*/ EStdKeyNull, + /*1e*/ EStdKeyNull, + /*1f*/ EStdKeyNull, + /*20*/ EStdKeySpace, + /*21*/ SHIFTED('1'), // ! + /*22*/ SHIFTED('2'), // " + /*23*/ EStdKeyHash, // # + /*24*/ SHIFTED('4'), // $ + /*25*/ SHIFTED('5'), // % + /*26*/ SHIFTED('7'), // & + /*27*/ EStdKeySingleQuote, + /*28*/ SHIFTED('9'), // ( + /*29*/ SHIFTED('0'), // ) + /*2a*/ SHIFTED('8'), // * + /*2b*/ SHIFTED(EStdKeyEquals), // + + /*2c*/ EStdKeyComma, + /*2d*/ EStdKeyMinus, + /*2e*/ EStdKeyFullStop, + /*2f*/ EStdKeyForwardSlash, + /*30*/ '0', + /*31*/ '1', + /*32*/ '2', + /*33*/ '3', + /*34*/ '4', + /*35*/ '5', + /*36*/ '6', + /*37*/ '7', + /*38*/ '8', + /*39*/ '9', + /*3a*/ SHIFTED(EStdKeySemiColon), // : + /*3b*/ EStdKeySemiColon, + /*3c*/ SHIFTED(EStdKeyComma), // < + /*3d*/ EStdKeyEquals, + /*3e*/ SHIFTED(EStdKeyFullStop), // > + /*3f*/ SHIFTED(EStdKeyForwardSlash), // ? + /*40*/ SHIFTED(EStdKeySingleQuote), // @ + /*41*/ SHIFTED('A'), + /*42*/ SHIFTED('B'), + /*43*/ SHIFTED('C'), + /*44*/ SHIFTED('D'), + /*45*/ SHIFTED('E'), + /*46*/ SHIFTED('F'), + /*47*/ SHIFTED('G'), + /*48*/ SHIFTED('H'), + /*49*/ SHIFTED('I'), + /*4a*/ SHIFTED('J'), + /*4b*/ SHIFTED('K'), + /*4c*/ SHIFTED('L'), + /*4d*/ SHIFTED('M'), + /*4e*/ SHIFTED('N'), + /*4f*/ SHIFTED('O'), + /*50*/ SHIFTED('P'), + /*51*/ SHIFTED('Q'), + /*52*/ SHIFTED('R'), + /*53*/ SHIFTED('S'), + /*54*/ SHIFTED('T'), + /*55*/ SHIFTED('U'), + /*56*/ SHIFTED('V'), + /*57*/ SHIFTED('W'), + /*58*/ SHIFTED('X'), + /*59*/ SHIFTED('Y'), + /*5a*/ SHIFTED('Z'), + /*5b*/ EStdKeySquareBracketLeft, + /*5c*/ EStdKeyBackSlash, + /*5d*/ EStdKeySquareBracketRight, + /*5e*/ SHIFTED('6'), // ^ + /*5f*/ SHIFTED(EStdKeyMinus), // _ + /*60*/ EStdKeyBacklightToggle, // Actually ` + /*61*/ 'A', + /*62*/ 'B', + /*63*/ 'C', + /*64*/ 'D', + /*65*/ 'E', + /*66*/ 'F', + /*67*/ 'G', + /*68*/ 'H', + /*69*/ 'I', + /*6a*/ 'J', + /*6b*/ 'K', + /*6c*/ 'L', + /*6d*/ 'M', + /*6e*/ 'N', + /*6f*/ 'O', + /*70*/ 'P', + /*71*/ 'Q', + /*72*/ 'R', + /*73*/ 'S', + /*74*/ 'T', + /*75*/ 'U', + /*76*/ 'V', + /*77*/ 'W', + /*78*/ 'X', + /*79*/ 'Y', + /*7a*/ 'Z', + /*7b*/ SHIFTED(EStdKeySquareBracketLeft), + /*7c*/ SHIFTED(EStdKeyBackSlash), + /*7d*/ SHIFTED(EStdKeySquareBracketRight), + /*7e*/ SHIFTED(EStdKeyHash), + /*7f*/ EKeyDelete + }; + +#endif + static const TUint16 KEscapedScanCode[] = { EStdKeyUpArrow, @@ -310,7 +446,6 @@ } else { - Kern::Printf("Key received: %d %d", self->iKey, KScanCode[self->iKey]); self->AddKey( KScanCode[ self->iKey ] ); } break; @@ -362,7 +497,6 @@ TRawEvent e; - Kern::Printf("AddKey %d %d %d %d", shifted, ctrl, func, stdKey); if ( func ) { diff -r d4c81235847e -r e5bc2850013c omap3530/shared/serialkeyb/serialkeyboard_UI_Softkeys.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omap3530/shared/serialkeyb/serialkeyboard_UI_Softkeys.mmp Thu Jul 22 16:29:40 2010 +0100 @@ -0,0 +1,52 @@ +// 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/shared/serialkeyb/serialkeyboard.mmp +// omap3530/shared/serialkeyb.serialkeyboard.mmp +// Simple serial keyboard implementation for Beagle baseport +// + + + +/** + @file +*/ +macro _UI_SOFTKEYS_ENABLED_ + +#define __USING_ASSP_REGISTER_API__ +#define __USING_ASSP_INTERRUPT_API__ + +#include "beagle/variant.mmh" +#include "kernel/kern_ext.mmh" + +target AsspTarget(serialkeyboard_uisoftkeys,dll) +targettype kext +romtarget ekeyb.dll + +systeminclude +/include/drivers + +SYMBIAN_BASE_SYSTEMINCLUDE(drivers) +sourcepath . +source serialkeyboard.cpp + +library AsspTarget(uart,lib) +library AsspTarget(prcm,lib) +//library resman.lib + +noexportlibrary + +uid 0x100039cf 0x100000db + +VENDORID 0x70000001 + +capability all