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 +