]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/platforms/intelmote2/hardware.h
Merge devel code into the trunk.
[tinyos-2.x.git] / tos / platforms / intelmote2 / hardware.h
diff --git a/tos/platforms/intelmote2/hardware.h b/tos/platforms/intelmote2/hardware.h
new file mode 100644 (file)
index 0000000..87f9ba5
--- /dev/null
@@ -0,0 +1,261 @@
+/*
+ * Copyright (c) 2005 Arched Rock Corporation 
+ * All rights reserved. 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *  
+ *   Neither the name of the Arched Rock Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ARCHED
+ * ROCK OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ */
+/*                                                                     tab:4
+ *
+ *
+ * "Copyright (c) 2000-2002 The Regents of the University  of California.  
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without written agreement is
+ * hereby granted, provided that the above copyright notice, the following
+ * two paragraphs and the author appear in all copies of this software.
+ * 
+ * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
+ * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 
+ * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
+ *
+ */
+/*                                                                     tab:4
+ *  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.  By
+ *  downloading, copying, installing or using the software you agree to
+ *  this license.  If you do not agree to this license, do not download,
+ *  install, copy or use the software.
+ *
+ *  Intel Open Source License 
+ *
+ *  Copyright (c) 2002 Intel Corporation 
+ *  All rights reserved. 
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ * 
+ *     Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *     Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *      Neither the name of the Intel Corporation nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *  PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE INTEL OR ITS
+ *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 
+ * 
+ */
+/*
+ *
+ * @Author Philip Buonadonna
+ * @Author Robbie Adler
+ *
+ */
+
+#ifndef __TOSH_HARDWARE_H__
+#define __TOSH_HARDWARE_H__
+
+#include "pxa27xhardware.h"
+//#include "AM.h"
+
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+
+/* Watchdog Prescaler
+ */
+enum {
+  TOSH_period16 = 0x00, // 47ms
+  TOSH_period32 = 0x01, // 94ms
+  TOSH_period64 = 0x02, // 0.19s
+  TOSH_period128 = 0x03, // 0.38s
+  TOSH_period256 = 0x04, // 0.75s
+  TOSH_period512 = 0x05, // 1.5s
+  TOSH_period1024 = 0x06, // 3.0s
+  TOSH_period2048 = 0x07 // 6.0s
+};
+
+/* Global interrupt priority table. 
+ *    Table is indexed by the Peripheral ID (PPID). Priorities are 0 - 39
+ *    where 0 is the highest.  Priorities MUST be unique. 0XFF = invalid/unassigned
+ */
+const uint8_t TOSH_IRP_TABLE[] = { 0xFF, // PPID  0 SSP_3 Service Req
+                                  0xFF, // PPID  1 MSL
+                                  0xFF, // PPID  2 USBH2
+                                  0xFF, // PPID  3 USBH1
+                                  0xFF, // PPID  4 Keypad
+                                  0xFF, // PPID  5 Memory Stick
+                                  0xFF, // PPID  6 Power I2C
+                                  0x04, // PPID  7 OST match Register 4-11
+                                  0x01, // PPID  8 GPIO_0
+                                  0x03, // PPID  9 GPIO_1
+                                  0x02, // PPID 10 GPIO_x
+                                  0x08, // PPID 11 USBC
+                                  0xFF, // PPID 12 PMU
+                                  0xFF, // PPID 13 I2S
+                                  0xFF, // PPID 14 AC '97
+                                  0xFF, // PPID 15 SIM status/error
+                                  0xFF, // PPID 16 SSP_2 Service Req
+                                  0xFF, // PPID 17 LCD Controller Service Req
+                                  0xFF, // PPID 18 I2C Service Req
+                                  0xFF, // PPID 19 TX/RX ERROR IRDA
+                                  0x07, // PPID 20 TX/RX ERROR STUART
+                                  0xFF, // PPID 21 TX/RX ERROR BTUART
+                                  0x06, // PPID 22 TX/RX ERROR FFUART
+                                  0xFF, // PPID 23 Flash Card status/Error Detect
+                                  0x05, // PPID 24 SSP_1 Service Req
+                                  0x00, // PPID 25 DMA Channel Service Req
+                                  0xFF, // PPID 26 OST equals Match Register 0
+                                  0xFF, // PPID 27 OST equals Match Register 1
+                                  0xFF, // PPID 28 OST equals Match Register 2
+                                  0xFF, // PPID 29 OST equals Match Register 3
+                                  0xFF, // PPID 30 RTC One HZ TIC
+                                  0xFF, // PPID 31 RTC equals Alarm
+                                  0xFF, // PPID 32
+                                  0x09, // PPID 33 Quick Capture Interface
+                                  0xFF, // PPID 34
+                                  0xFF, // PPID 35
+                                  0xFF, // PPID 36
+                                  0xFF, // PPID 37
+                                  0xFF, // PPID 38
+                                  0xFF  // PPID 39
+};
+
+#ifdef IMOTE2_DEVBOARD 
+
+// LED assignments
+#define RED_LED_PIN (95)
+#define GREEN_LED_PIN (102)
+#define BLUE_LED_PIN (27)
+
+// CC2420 RADIO #defines
+#define CC2420_VREN_PIN (40)
+#define CC2420_RSTN_PIN (22)
+#define CC2420_FIFO_PIN (114)
+#define CC2420_CCA_PIN (116)
+#define CC2420_FIFOP_PIN (115)
+#define CC2420_SFD_PIN (16)
+#define CC2420_CSN_PIN (39)
+
+#else
+
+// LED assignments
+#define RED_LED_PIN (103)
+#define GREEN_LED_PIN (104)
+#define BLUE_LED_PIN (105)
+
+// CC2420 RADIO #defines
+#define CC2420_VREN_PIN (115)
+#define CC2420_RSTN_PIN (22)
+#define CC2420_FIFO_PIN (114)
+#define CC2420_CCA_PIN (116)
+#define CC2420_FIFOP_PIN (0)
+#define CC2420_SFD_PIN (16)
+#define CC2420_CSN_PIN (39)
+
+#endif /* IMOTE2_DEVBOARD */
+
+#define SSP3_RXD (41)
+#define SSP3_RXD_ALTFN (3)
+#define SSP3_TXD (35)
+#define SSP3_TXD_ALTFN (3)
+#define SSP3_SFRM (39)
+#define SSP3_SFRM_ALTFN (3)
+#define SSP3_SCLK (34)
+#define SSP3_SCLK_ALTFN (3)
+
+#define SSP1_RXD (26)
+#define SSP1_RXD_ALTFN (1 )
+#define SSP1_TXD (25)
+#define SSP1_TXD_ALTFN (2 )
+#define SSP1_SCLK (23)
+#define SSP1_SCLK_ALTFN (2 )
+#define SSP1_SFRM (24)
+#define SSP1_SFRM_ALTFN (2 )
+
+#define FFUART_RXD (96)
+#define FFUART_RXD_ALTFN (3)
+#define FFUART_TXD (99) 
+#define FFUART_TXD_ALTFN (3)
+
+#define STUART_RXD (46)
+#define STUART_RXD_ALTFN (2)
+#define STUART_TXD (47) 
+#define STUART_TXD_ALTFN (1)
+
+#define I2C_SCL (117)
+#define I2C_SCL_ALTFN (1)
+#define I2C_SDA (118)
+#define I2C_SDA_ALTFN (1)
+
+
+#if 0
+TOSH_ASSIGN_PIN(CC_VREN,A,CC_VREN_PIN); 
+TOSH_ASSIGN_PIN(CC_RSTN,A,CC_RSTN_PIN);
+TOSH_ASSIGN_PIN(CC_FIFO,A,CC_FIFO_PIN);
+TOSH_ASSIGN_PIN(RADIO_CCA,A,RADIO_CCA_PIN);
+TOSH_ASSIGN_PIN(CC_FIFOP,A,CC_FIFOP_PIN);
+TOSH_ASSIGN_PIN(CC_SFD,A,CC_SFD_PIN);
+TOSH_ASSIGN_PIN(CC_CSN,A,CC_CSN_PIN);
+#endif
+
+void TOSH_SET_PIN_DIRECTIONS(void)
+{
+
+  PSSR = (PSSR_RDH | PSSR_PH);   // Reenable the GPIO buffers (needed out of reset)
+#if 0
+  TOSH_CLR_CC_RSTN_PIN();
+  TOSH_MAKE_CC_RSTN_OUTPUT();
+  TOSH_CLR_CC_VREN_PIN();
+  TOSH_MAKE_CC_VREN_OUTPUT();
+  TOSH_SET_CC_CSN_PIN();
+  TOSH_MAKE_CC_CSN_OUTPUT();
+  TOSH_MAKE_CC_FIFOP_INPUT();
+  TOSH_MAKE_CC_FIFO_INPUT();
+  TOSH_MAKE_CC_SFD_INPUT();
+  TOSH_MAKE_RADIO_CCA_INPUT();
+#endif
+}
+
+
+#endif //TOSH_HARDWARE_H