diff -r 000000000000 -r 6663340f3fc9 omap3530/omap3530_drivers/gpio/omap3530_gpio.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omap3530/omap3530_drivers/gpio/omap3530_gpio.h Thu Oct 15 12:59:54 2009 +0100 @@ -0,0 +1,295 @@ +// Copyright (c) 2008-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/omap3530_drivers/gpio/omap3530_gpio.h +// This file is part of the Beagle Base port +// + +#ifndef __OMAP3530_GPIO_H__ +#define __OMAP3530_GPIO_H__ + +#include +#include +//#include + +#include +#include + +const TUint KGPIO1 = Omap3530HwBase::TVirtual<0x48310000>::Value; +const TUint KGPIO2 = Omap3530HwBase::TVirtual<0x49050000>::Value; +const TUint KGPIO3 = Omap3530HwBase::TVirtual<0x49052000>::Value; +const TUint KGPIO4 = Omap3530HwBase::TVirtual<0x49054000>::Value; +const TUint KGPIO5 = Omap3530HwBase::TVirtual<0x49056000>::Value; +const TUint KGPIO6 = Omap3530HwBase::TVirtual<0x49058000>::Value; + + +const TUint KGPIO_REVISION = 0x000; +const TUint KGPIO_SYSCONFIG = 0x010; +const TUint KGPIO_SYSSTATUS = 0x014; +const TUint KGPIO_IRQSTATUS1 = 0x018; +const TUint KGPIO_IRQENABLE1 = 0x01C; +const TUint KGPIO_WAKEUPENABLE = 0x020; +const TUint KGPIO_IRQSTATUS2 = 0x028; +const TUint KGPIO_IRQENABLE2 = 0x02C; +const TUint KGPIO_CTRL = 0x030; +const TUint KGPIO_OE = 0x034; +const TUint KGPIO_DATAIN = 0x038; +const TUint KGPIO_DATAOUT = 0x03C; +const TUint KGPIO_LEVELDETECT0 = 0x040; +const TUint KGPIO_LEVELDETECT1 = 0x044; +const TUint KGPIO_RISINGDETECT = 0x048; +const TUint KGPIO_FALLINGDETECT = 0x04C; +const TUint KGPIO_DEBOUNCENABLE = 0x050; +const TUint KGPIO_DEBOUNCINGTIME = 0x054; +const TUint KGPIO_CLEARIRQENABLE1 = 0x060; +const TUint KGPIO_SETIRQENABLE1 = 0x064; +const TUint KGPIO_CLEARIRQENABLE2 = 0x070; +const TUint KGPIO_SETIRQENABLE2 = 0x074; +const TUint KGPIO_CLEARWKUENA = 0x080; +const TUint KGPIO_SETWKUENA = 0x084; +const TUint KGPIO_CLEARDATAOUT = 0x090; +const TUint KGPIO_SETDATAOUT = 0x094; + +const TUint KGPIO_DEBOUNCE_TIME_MASK = 0xF; + + +enum TGPIO_InterruptId + { + EGPIOIRQ_FIRST = (EIrqRangeBaseGpio << KIrqRangeIndexShift), + EGPIOIRQ_PIN_0 = EGPIOIRQ_FIRST, + EGPIOIRQ_PIN_1, + EGPIOIRQ_PIN_2, + EGPIOIRQ_PIN_3, + EGPIOIRQ_PIN_4, + EGPIOIRQ_PIN_5, + EGPIOIRQ_PIN_6, + EGPIOIRQ_PIN_7, + EGPIOIRQ_PIN_8, + EGPIOIRQ_PIN_9, + EGPIOIRQ_PIN_10, + EGPIOIRQ_PIN_11, + EGPIOIRQ_PIN_12, + EGPIOIRQ_PIN_13, + EGPIOIRQ_PIN_14, + EGPIOIRQ_PIN_15, + EGPIOIRQ_PIN_16, + EGPIOIRQ_PIN_17, + EGPIOIRQ_PIN_18, + EGPIOIRQ_PIN_19, + EGPIOIRQ_PIN_20, + EGPIOIRQ_PIN_21, + EGPIOIRQ_PIN_22, + EGPIOIRQ_PIN_23, + EGPIOIRQ_PIN_24, + EGPIOIRQ_PIN_25, + EGPIOIRQ_PIN_26, + EGPIOIRQ_PIN_27, + EGPIOIRQ_PIN_28, + EGPIOIRQ_PIN_29, + EGPIOIRQ_PIN_30, + EGPIOIRQ_PIN_31, + EGPIOIRQ_PIN_32, + EGPIOIRQ_PIN_33, + EGPIOIRQ_PIN_34, + EGPIOIRQ_PIN_35, + EGPIOIRQ_PIN_36, + EGPIOIRQ_PIN_37, + EGPIOIRQ_PIN_38, + EGPIOIRQ_PIN_39, + EGPIOIRQ_PIN_40, + EGPIOIRQ_PIN_41, + EGPIOIRQ_PIN_42, + EGPIOIRQ_PIN_43, + EGPIOIRQ_PIN_44, + EGPIOIRQ_PIN_45, + EGPIOIRQ_PIN_46, + EGPIOIRQ_PIN_47, + EGPIOIRQ_PIN_48, + EGPIOIRQ_PIN_49, + EGPIOIRQ_PIN_50, + EGPIOIRQ_PIN_51, + EGPIOIRQ_PIN_52, + EGPIOIRQ_PIN_53, + EGPIOIRQ_PIN_54, + EGPIOIRQ_PIN_55, + EGPIOIRQ_PIN_56, + EGPIOIRQ_PIN_57, + EGPIOIRQ_PIN_58, + EGPIOIRQ_PIN_59, + EGPIOIRQ_PIN_60, + EGPIOIRQ_PIN_61, + EGPIOIRQ_PIN_62, + EGPIOIRQ_PIN_63, + EGPIOIRQ_PIN_64, + EGPIOIRQ_PIN_65, + EGPIOIRQ_PIN_66, + EGPIOIRQ_PIN_67, + EGPIOIRQ_PIN_68, + EGPIOIRQ_PIN_69, + EGPIOIRQ_PIN_70, + EGPIOIRQ_PIN_71, + EGPIOIRQ_PIN_72, + EGPIOIRQ_PIN_73, + EGPIOIRQ_PIN_74, + EGPIOIRQ_PIN_75, + EGPIOIRQ_PIN_76, + EGPIOIRQ_PIN_77, + EGPIOIRQ_PIN_78, + EGPIOIRQ_PIN_79, + EGPIOIRQ_PIN_80, + EGPIOIRQ_PIN_81, + EGPIOIRQ_PIN_82, + EGPIOIRQ_PIN_83, + EGPIOIRQ_PIN_84, + EGPIOIRQ_PIN_85, + EGPIOIRQ_PIN_86, + EGPIOIRQ_PIN_87, + EGPIOIRQ_PIN_88, + EGPIOIRQ_PIN_89, + EGPIOIRQ_PIN_90, + EGPIOIRQ_PIN_91, + EGPIOIRQ_PIN_92, + EGPIOIRQ_PIN_93, + EGPIOIRQ_PIN_94, + EGPIOIRQ_PIN_95, + EGPIOIRQ_PIN_96, + EGPIOIRQ_PIN_97, + EGPIOIRQ_PIN_98, + EGPIOIRQ_PIN_99, + EGPIOIRQ_PIN_100, + EGPIOIRQ_PIN_101, + EGPIOIRQ_PIN_102, + EGPIOIRQ_PIN_103, + EGPIOIRQ_PIN_104, + EGPIOIRQ_PIN_105, + EGPIOIRQ_PIN_106, + EGPIOIRQ_PIN_107, + EGPIOIRQ_PIN_108, + EGPIOIRQ_PIN_109, + EGPIOIRQ_PIN_110, + EGPIOIRQ_PIN_111, + EGPIOIRQ_PIN_112, + EGPIOIRQ_PIN_113, + EGPIOIRQ_PIN_114, + EGPIOIRQ_PIN_115, + EGPIOIRQ_PIN_116, + EGPIOIRQ_PIN_117, + EGPIOIRQ_PIN_118, + EGPIOIRQ_PIN_119, + EGPIOIRQ_PIN_120, + EGPIOIRQ_PIN_121, + EGPIOIRQ_PIN_122, + EGPIOIRQ_PIN_123, + EGPIOIRQ_PIN_124, + EGPIOIRQ_PIN_125, + EGPIOIRQ_PIN_126, + EGPIOIRQ_PIN_127, + EGPIOIRQ_PIN_128, + EGPIOIRQ_PIN_129, + EGPIOIRQ_PIN_130, + EGPIOIRQ_PIN_131, + EGPIOIRQ_PIN_132, + EGPIOIRQ_PIN_133, + EGPIOIRQ_PIN_134, + EGPIOIRQ_PIN_135, + EGPIOIRQ_PIN_136, + EGPIOIRQ_PIN_137, + EGPIOIRQ_PIN_138, + EGPIOIRQ_PIN_139, + EGPIOIRQ_PIN_140, + EGPIOIRQ_PIN_141, + EGPIOIRQ_PIN_142, + EGPIOIRQ_PIN_143, + EGPIOIRQ_PIN_144, + EGPIOIRQ_PIN_145, + EGPIOIRQ_PIN_146, + EGPIOIRQ_PIN_147, + EGPIOIRQ_PIN_148, + EGPIOIRQ_PIN_149, + EGPIOIRQ_PIN_150, + EGPIOIRQ_PIN_151, + EGPIOIRQ_PIN_152, + EGPIOIRQ_PIN_153, + EGPIOIRQ_PIN_154, + EGPIOIRQ_PIN_155, + EGPIOIRQ_PIN_156, + EGPIOIRQ_PIN_157, + EGPIOIRQ_PIN_158, + EGPIOIRQ_PIN_159, + EGPIOIRQ_PIN_160, + EGPIOIRQ_PIN_161, + EGPIOIRQ_PIN_162, + EGPIOIRQ_PIN_163, + EGPIOIRQ_PIN_164, + EGPIOIRQ_PIN_165, + EGPIOIRQ_PIN_166, + EGPIOIRQ_PIN_167, + EGPIOIRQ_PIN_168, + EGPIOIRQ_PIN_169, + EGPIOIRQ_PIN_170, + EGPIOIRQ_PIN_171, + EGPIOIRQ_PIN_172, + EGPIOIRQ_PIN_173, + EGPIOIRQ_PIN_174, + EGPIOIRQ_PIN_175, + EGPIOIRQ_PIN_176, + EGPIOIRQ_PIN_177, + EGPIOIRQ_PIN_178, + EGPIOIRQ_PIN_179, + EGPIOIRQ_PIN_180, + EGPIOIRQ_PIN_181, + EGPIOIRQ_PIN_182, + EGPIOIRQ_PIN_183, + EGPIOIRQ_PIN_184, + EGPIOIRQ_PIN_185, + EGPIOIRQ_PIN_186, + EGPIOIRQ_PIN_187, + EGPIOIRQ_PIN_188, + EGPIOIRQ_PIN_189, + EGPIOIRQ_PIN_190, + EGPIOIRQ_PIN_191, + + EGPIOIRQ_END + }; + + + +const TInt32 KHwGpioPinMax = 192; // 32*6 pins +const TInt32 KHwGpioPinsPerBank = 32; +const TInt32 KHwGpioBanks = KHwGpioPinMax / KHwGpioPinsPerBank ; + +// Utility code to convert a pin number to a GPIO bank +const TUint KGPIO_BASE_ADDRESSES[] = { KGPIO1, KGPIO2, KGPIO3, KGPIO4, KGPIO5, KGPIO6 }; + + + + + +inline TUint GPIO_BASE_ADDRESS(TInt aPin) {return KGPIO_BASE_ADDRESSES[(TInt)(aPin/KHwGpioPinsPerBank)];}; +#define GPIO_PIN_BANK(aId) ((aId)/KHwGpioPinsPerBank) +#define GPIO_PIN_OFFSET(aId) (1 << (aId%KHwGpioPinsPerBank)) +#define GPIO_PIN_BOUNDS(aId)((aId > 0) && (aId