epoc32/include/assp/omap3530_assp/omap3530_gpio.h
branchSymbian3
changeset 4 837f303aceeb
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/epoc32/include/assp/omap3530_assp/omap3530_gpio.h	Wed Mar 31 12:33:34 2010 +0100
     1.3 @@ -0,0 +1,295 @@
     1.4 +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5 +// All rights reserved.
     1.6 +// This component and the accompanying materials are made available
     1.7 +// under the terms of the License "Eclipse Public License v1.0"
     1.8 +// which accompanies this distribution, and is available
     1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.10 +//
    1.11 +// Initial Contributors:
    1.12 +// Nokia Corporation - initial contribution.
    1.13 +//
    1.14 +// Contributors:
    1.15 +//
    1.16 +// Description:
    1.17 +// omap3530/omap3530_drivers/gpio/omap3530_gpio.h
    1.18 +// This file is part of the Beagle Base port
    1.19 +//
    1.20 +
    1.21 +#ifndef __OMAP3530_GPIO_H__
    1.22 +#define __OMAP3530_GPIO_H__
    1.23 +
    1.24 +#include <assp/omap3530_assp/omap3530_hardware_base.h>
    1.25 +#include <assp/omap3530_assp/omap3530_irqmap.h>
    1.26 +//#include <drivers/gpio.h>
    1.27 +
    1.28 +#include <assp/omap3530_assp/gpio.h>
    1.29 +#include <assp.h>
    1.30 +
    1.31 +const TUint KGPIO1 = Omap3530HwBase::TVirtual<0x48310000>::Value;
    1.32 +const TUint KGPIO2 = Omap3530HwBase::TVirtual<0x49050000>::Value;
    1.33 +const TUint KGPIO3 = Omap3530HwBase::TVirtual<0x49052000>::Value;
    1.34 +const TUint KGPIO4 = Omap3530HwBase::TVirtual<0x49054000>::Value;
    1.35 +const TUint KGPIO5 = Omap3530HwBase::TVirtual<0x49056000>::Value;
    1.36 +const TUint KGPIO6 = Omap3530HwBase::TVirtual<0x49058000>::Value;
    1.37 +
    1.38 +	
    1.39 +const TUint KGPIO_REVISION = 0x000;
    1.40 +const TUint KGPIO_SYSCONFIG = 0x010;
    1.41 +const TUint KGPIO_SYSSTATUS = 0x014;
    1.42 +const TUint KGPIO_IRQSTATUS1 = 0x018;
    1.43 +const TUint KGPIO_IRQENABLE1 = 0x01C;
    1.44 +const TUint KGPIO_WAKEUPENABLE = 0x020;
    1.45 +const TUint KGPIO_IRQSTATUS2 = 0x028;
    1.46 +const TUint KGPIO_IRQENABLE2 = 0x02C;
    1.47 +const TUint KGPIO_CTRL = 0x030;
    1.48 +const TUint KGPIO_OE = 0x034;
    1.49 +const TUint KGPIO_DATAIN = 0x038;
    1.50 +const TUint KGPIO_DATAOUT = 0x03C;
    1.51 +const TUint KGPIO_LEVELDETECT0 = 0x040;
    1.52 +const TUint KGPIO_LEVELDETECT1 = 0x044;
    1.53 +const TUint KGPIO_RISINGDETECT = 0x048;
    1.54 +const TUint KGPIO_FALLINGDETECT = 0x04C;
    1.55 +const TUint KGPIO_DEBOUNCENABLE = 0x050;
    1.56 +const TUint KGPIO_DEBOUNCINGTIME = 0x054;
    1.57 +const TUint KGPIO_CLEARIRQENABLE1 = 0x060;
    1.58 +const TUint KGPIO_SETIRQENABLE1 = 0x064;
    1.59 +const TUint KGPIO_CLEARIRQENABLE2 = 0x070;
    1.60 +const TUint KGPIO_SETIRQENABLE2 = 0x074;
    1.61 +const TUint KGPIO_CLEARWKUENA = 0x080;
    1.62 +const TUint KGPIO_SETWKUENA = 0x084;
    1.63 +const TUint KGPIO_CLEARDATAOUT = 0x090;
    1.64 +const TUint KGPIO_SETDATAOUT = 0x094;
    1.65 +
    1.66 +const TUint KGPIO_DEBOUNCE_TIME_MASK = 0xF;
    1.67 +
    1.68 +
    1.69 +enum TGPIO_InterruptId 
    1.70 +	{
    1.71 +	EGPIOIRQ_FIRST = (EIrqRangeBaseGpio << KIrqRangeIndexShift),
    1.72 +	EGPIOIRQ_PIN_0 = EGPIOIRQ_FIRST,
    1.73 +	EGPIOIRQ_PIN_1,
    1.74 +	EGPIOIRQ_PIN_2,
    1.75 +	EGPIOIRQ_PIN_3,
    1.76 +	EGPIOIRQ_PIN_4,
    1.77 +	EGPIOIRQ_PIN_5,	
    1.78 +	EGPIOIRQ_PIN_6,	
    1.79 +	EGPIOIRQ_PIN_7,	
    1.80 +	EGPIOIRQ_PIN_8,	
    1.81 +	EGPIOIRQ_PIN_9,	
    1.82 +	EGPIOIRQ_PIN_10,
    1.83 +	EGPIOIRQ_PIN_11,
    1.84 +	EGPIOIRQ_PIN_12,
    1.85 +	EGPIOIRQ_PIN_13,
    1.86 +	EGPIOIRQ_PIN_14,
    1.87 +	EGPIOIRQ_PIN_15,	
    1.88 +	EGPIOIRQ_PIN_16,	
    1.89 +	EGPIOIRQ_PIN_17,	
    1.90 +	EGPIOIRQ_PIN_18,	
    1.91 +	EGPIOIRQ_PIN_19,	
    1.92 +	EGPIOIRQ_PIN_20,
    1.93 +	EGPIOIRQ_PIN_21,
    1.94 +	EGPIOIRQ_PIN_22,
    1.95 +	EGPIOIRQ_PIN_23,
    1.96 +	EGPIOIRQ_PIN_24,
    1.97 +	EGPIOIRQ_PIN_25,	
    1.98 +	EGPIOIRQ_PIN_26,	
    1.99 +	EGPIOIRQ_PIN_27,	
   1.100 +	EGPIOIRQ_PIN_28,	
   1.101 +	EGPIOIRQ_PIN_29,	
   1.102 +	EGPIOIRQ_PIN_30,
   1.103 +	EGPIOIRQ_PIN_31,
   1.104 +	EGPIOIRQ_PIN_32,
   1.105 +	EGPIOIRQ_PIN_33,
   1.106 +	EGPIOIRQ_PIN_34,
   1.107 +	EGPIOIRQ_PIN_35,	
   1.108 +	EGPIOIRQ_PIN_36,	
   1.109 +	EGPIOIRQ_PIN_37,	
   1.110 +	EGPIOIRQ_PIN_38,	
   1.111 +	EGPIOIRQ_PIN_39,	
   1.112 +	EGPIOIRQ_PIN_40,
   1.113 +	EGPIOIRQ_PIN_41,
   1.114 +	EGPIOIRQ_PIN_42,
   1.115 +	EGPIOIRQ_PIN_43,
   1.116 +	EGPIOIRQ_PIN_44,
   1.117 +	EGPIOIRQ_PIN_45,	
   1.118 +	EGPIOIRQ_PIN_46,	
   1.119 +	EGPIOIRQ_PIN_47,	
   1.120 +	EGPIOIRQ_PIN_48,	
   1.121 +	EGPIOIRQ_PIN_49,	
   1.122 +	EGPIOIRQ_PIN_50,
   1.123 +	EGPIOIRQ_PIN_51,
   1.124 +	EGPIOIRQ_PIN_52,
   1.125 +	EGPIOIRQ_PIN_53,
   1.126 +	EGPIOIRQ_PIN_54,
   1.127 +	EGPIOIRQ_PIN_55,	
   1.128 +	EGPIOIRQ_PIN_56,	
   1.129 +	EGPIOIRQ_PIN_57,	
   1.130 +	EGPIOIRQ_PIN_58,	
   1.131 +	EGPIOIRQ_PIN_59,	
   1.132 +	EGPIOIRQ_PIN_60,
   1.133 +	EGPIOIRQ_PIN_61,
   1.134 +	EGPIOIRQ_PIN_62,
   1.135 +	EGPIOIRQ_PIN_63,
   1.136 +	EGPIOIRQ_PIN_64,
   1.137 +	EGPIOIRQ_PIN_65,	
   1.138 +	EGPIOIRQ_PIN_66,	
   1.139 +	EGPIOIRQ_PIN_67,	
   1.140 +	EGPIOIRQ_PIN_68,	
   1.141 +	EGPIOIRQ_PIN_69,	
   1.142 +	EGPIOIRQ_PIN_70,
   1.143 +	EGPIOIRQ_PIN_71,
   1.144 +	EGPIOIRQ_PIN_72,
   1.145 +	EGPIOIRQ_PIN_73,
   1.146 +	EGPIOIRQ_PIN_74,
   1.147 +	EGPIOIRQ_PIN_75,	
   1.148 +	EGPIOIRQ_PIN_76,	
   1.149 +	EGPIOIRQ_PIN_77,	
   1.150 +	EGPIOIRQ_PIN_78,	
   1.151 +	EGPIOIRQ_PIN_79,	
   1.152 +	EGPIOIRQ_PIN_80,
   1.153 +	EGPIOIRQ_PIN_81,
   1.154 +	EGPIOIRQ_PIN_82,
   1.155 +	EGPIOIRQ_PIN_83,
   1.156 +	EGPIOIRQ_PIN_84,
   1.157 +	EGPIOIRQ_PIN_85,	
   1.158 +	EGPIOIRQ_PIN_86,	
   1.159 +	EGPIOIRQ_PIN_87,	
   1.160 +	EGPIOIRQ_PIN_88,	
   1.161 +	EGPIOIRQ_PIN_89,	
   1.162 +	EGPIOIRQ_PIN_90,
   1.163 +	EGPIOIRQ_PIN_91,
   1.164 +	EGPIOIRQ_PIN_92,
   1.165 +	EGPIOIRQ_PIN_93,
   1.166 +	EGPIOIRQ_PIN_94,
   1.167 +	EGPIOIRQ_PIN_95,	
   1.168 +	EGPIOIRQ_PIN_96,	
   1.169 +	EGPIOIRQ_PIN_97,	
   1.170 +	EGPIOIRQ_PIN_98,	
   1.171 +	EGPIOIRQ_PIN_99,	
   1.172 +	EGPIOIRQ_PIN_100,
   1.173 +	EGPIOIRQ_PIN_101,
   1.174 +	EGPIOIRQ_PIN_102,
   1.175 +	EGPIOIRQ_PIN_103,
   1.176 +	EGPIOIRQ_PIN_104,
   1.177 +	EGPIOIRQ_PIN_105,	
   1.178 +	EGPIOIRQ_PIN_106,	
   1.179 +	EGPIOIRQ_PIN_107,	
   1.180 +	EGPIOIRQ_PIN_108,	
   1.181 +	EGPIOIRQ_PIN_109,	
   1.182 +	EGPIOIRQ_PIN_110,
   1.183 +	EGPIOIRQ_PIN_111,
   1.184 +	EGPIOIRQ_PIN_112,
   1.185 +	EGPIOIRQ_PIN_113,
   1.186 +	EGPIOIRQ_PIN_114,
   1.187 +	EGPIOIRQ_PIN_115,	
   1.188 +	EGPIOIRQ_PIN_116,	
   1.189 +	EGPIOIRQ_PIN_117,	
   1.190 +	EGPIOIRQ_PIN_118,	
   1.191 +	EGPIOIRQ_PIN_119,	
   1.192 +	EGPIOIRQ_PIN_120,
   1.193 +	EGPIOIRQ_PIN_121,
   1.194 +	EGPIOIRQ_PIN_122,
   1.195 +	EGPIOIRQ_PIN_123,
   1.196 +	EGPIOIRQ_PIN_124,
   1.197 +	EGPIOIRQ_PIN_125,	
   1.198 +	EGPIOIRQ_PIN_126,	
   1.199 +	EGPIOIRQ_PIN_127,	
   1.200 +	EGPIOIRQ_PIN_128,	
   1.201 +	EGPIOIRQ_PIN_129,	
   1.202 +	EGPIOIRQ_PIN_130,
   1.203 +	EGPIOIRQ_PIN_131,
   1.204 +	EGPIOIRQ_PIN_132,
   1.205 +	EGPIOIRQ_PIN_133,
   1.206 +	EGPIOIRQ_PIN_134,
   1.207 +	EGPIOIRQ_PIN_135,	
   1.208 +	EGPIOIRQ_PIN_136,	
   1.209 +	EGPIOIRQ_PIN_137,	
   1.210 +	EGPIOIRQ_PIN_138,	
   1.211 +	EGPIOIRQ_PIN_139,	
   1.212 +	EGPIOIRQ_PIN_140,
   1.213 +	EGPIOIRQ_PIN_141,
   1.214 +	EGPIOIRQ_PIN_142,
   1.215 +	EGPIOIRQ_PIN_143,
   1.216 +	EGPIOIRQ_PIN_144,
   1.217 +	EGPIOIRQ_PIN_145,	
   1.218 +	EGPIOIRQ_PIN_146,	
   1.219 +	EGPIOIRQ_PIN_147,	
   1.220 +	EGPIOIRQ_PIN_148,	
   1.221 +	EGPIOIRQ_PIN_149,	
   1.222 +	EGPIOIRQ_PIN_150,
   1.223 +	EGPIOIRQ_PIN_151,
   1.224 +	EGPIOIRQ_PIN_152,
   1.225 +	EGPIOIRQ_PIN_153,
   1.226 +	EGPIOIRQ_PIN_154,
   1.227 +	EGPIOIRQ_PIN_155,	
   1.228 +	EGPIOIRQ_PIN_156,	
   1.229 +	EGPIOIRQ_PIN_157,	
   1.230 +	EGPIOIRQ_PIN_158,	
   1.231 +	EGPIOIRQ_PIN_159,	
   1.232 +	EGPIOIRQ_PIN_160,
   1.233 +	EGPIOIRQ_PIN_161,
   1.234 +	EGPIOIRQ_PIN_162,
   1.235 +	EGPIOIRQ_PIN_163,
   1.236 +	EGPIOIRQ_PIN_164,
   1.237 +	EGPIOIRQ_PIN_165,	
   1.238 +	EGPIOIRQ_PIN_166,	
   1.239 +	EGPIOIRQ_PIN_167,	
   1.240 +	EGPIOIRQ_PIN_168,	
   1.241 +	EGPIOIRQ_PIN_169,	
   1.242 +	EGPIOIRQ_PIN_170,
   1.243 +	EGPIOIRQ_PIN_171,
   1.244 +	EGPIOIRQ_PIN_172,
   1.245 +	EGPIOIRQ_PIN_173,
   1.246 +	EGPIOIRQ_PIN_174,
   1.247 +	EGPIOIRQ_PIN_175,	
   1.248 +	EGPIOIRQ_PIN_176,	
   1.249 +	EGPIOIRQ_PIN_177,	
   1.250 +	EGPIOIRQ_PIN_178,	
   1.251 +	EGPIOIRQ_PIN_179,	
   1.252 +	EGPIOIRQ_PIN_180,
   1.253 +	EGPIOIRQ_PIN_181,
   1.254 +	EGPIOIRQ_PIN_182,
   1.255 +	EGPIOIRQ_PIN_183,
   1.256 +	EGPIOIRQ_PIN_184,
   1.257 +	EGPIOIRQ_PIN_185,	
   1.258 +	EGPIOIRQ_PIN_186,	
   1.259 +	EGPIOIRQ_PIN_187,	
   1.260 +	EGPIOIRQ_PIN_188,	
   1.261 +	EGPIOIRQ_PIN_189,	
   1.262 +	EGPIOIRQ_PIN_190,
   1.263 +	EGPIOIRQ_PIN_191,
   1.264 +
   1.265 +	EGPIOIRQ_END
   1.266 +	};
   1.267 +
   1.268 +
   1.269 +
   1.270 +const TInt32 KHwGpioPinMax		= 192;	// 32*6 pins
   1.271 +const TInt32 KHwGpioPinsPerBank	= 32;
   1.272 +const TInt32 KHwGpioBanks		= KHwGpioPinMax / KHwGpioPinsPerBank ;
   1.273 +
   1.274 +// Utility code to convert a pin number to a GPIO bank
   1.275 +const TUint KGPIO_BASE_ADDRESSES[] = { KGPIO1, KGPIO2, KGPIO3, KGPIO4, KGPIO5, KGPIO6 };
   1.276 +
   1.277 +
   1.278 +
   1.279 +
   1.280 +
   1.281 +inline TUint GPIO_BASE_ADDRESS(TInt aPin) {return KGPIO_BASE_ADDRESSES[(TInt)(aPin/KHwGpioPinsPerBank)];};
   1.282 +#define GPIO_PIN_BANK(aId) ((aId)/KHwGpioPinsPerBank)
   1.283 +#define GPIO_PIN_OFFSET(aId) (1 <<  (aId%KHwGpioPinsPerBank))
   1.284 +#define GPIO_PIN_BOUNDS(aId)((aId > 0) && (aId <KHwGpioPinMax))
   1.285 +
   1.286 +class GpioPin
   1.287 +	{
   1.288 +	public:
   1.289 +		GPIO::TGpioMode	iMode;
   1.290 +		TUint iBankAddr;
   1.291 +		TUint iBank;
   1.292 +		SInterruptHandler irq;		
   1.293 +		TUint iIrqVector;
   1.294 +	};
   1.295 +
   1.296 +#endif	// __OMAP3530_GPIO_H__
   1.297 +
   1.298 +