Annotation of embedtools/src/pceng_run.c, revision 1.1.2.3
1.1.2.1 misho 1: /*************************************************************************
2: * (C) 2011 AITNET - Sofia/Bulgaria - <office@aitbg.com>
3: * by Michael Pounov <misho@aitbg.com>
4: *
5: * $Author: misho $
1.1.2.3 ! misho 6: * $Id: pceng_run.c,v 1.1.2.2 2011/07/22 15:03:30 misho Exp $
1.1.2.1 misho 7: *
8: *************************************************************************
9: The ELWIX and AITNET software is distributed under the following
10: terms:
11:
12: All of the documentation and software included in the ELWIX and AITNET
13: Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
14:
15: Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
16: by Michael Pounov <misho@elwix.org>. All rights reserved.
17:
18: Redistribution and use in source and binary forms, with or without
19: modification, are permitted provided that the following conditions
20: are met:
21: 1. Redistributions of source code must retain the above copyright
22: notice, this list of conditions and the following disclaimer.
23: 2. Redistributions in binary form must reproduce the above copyright
24: notice, this list of conditions and the following disclaimer in the
25: documentation and/or other materials provided with the distribution.
26: 3. All advertising materials mentioning features or use of this software
27: must display the following acknowledgement:
28: This product includes software developed by Michael Pounov <misho@elwix.org>
29: ELWIX - Embedded LightWeight unIX and its contributors.
30: 4. Neither the name of AITNET nor the names of its contributors
31: may be used to endorse or promote products derived from this software
32: without specific prior written permission.
33:
34: THIS SOFTWARE IS PROVIDED BY AITNET AND CONTRIBUTORS ``AS IS'' AND
35: ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
36: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
37: ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
38: FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
39: DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
40: OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
41: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
42: LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
43: OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
44: SUCH DAMAGE.
45: */
46: #include "global.h"
47: #include "pceng.h"
48:
49:
1.1.2.3 ! misho 50: const u_int led_base[2][4] = {{0xf410, 0xf400, 0xf400, 0xf400},
! 51: {0x61b0, 0x6100, 0x6180, 0x6180}};
! 52: const int led_bit[2][4] = {{8, 2, 3, 18}, {8, 6, 9, 11}};
! 53: const int gpio_off[2] = { 0x4, 0x10 };
! 54:
! 55:
! 56: static inline board_t
! 57: getBoard()
! 58: {
! 59: board_t type;
! 60: char szStr[STRSIZ];
! 61:
! 62: FTRACE(3);
! 63:
! 64: cfg_LoadAttribute(&cfg, CFG("pceng"), CFG("board"), CFG(szStr), sizeof szStr, DEFAULT_BOARD);
! 65: if (!strcasecmp(szStr, "alix"))
! 66: type = alix;
! 67: else if (!strcasecmp(szStr, "wrap"))
! 68: type = wrap;
! 69: else {
! 70: type = unknown;
! 71: syslog(LOG_ERR, "Error:: unknown board type %s", szStr);
! 72: }
! 73:
! 74: return type;
! 75: }
! 76:
! 77: static u_int
! 78: gpioRead(u_char ledno, u_char state)
! 79: {
! 80: u_int n;
! 81: board_t type = getBoard();
! 82:
! 83: FTRACE(3);
! 84:
! 85: switch (type) {
! 86: case wrap:
! 87: n = inl(led_base[type - 1][ledno] + gpio_off[type - 1]);
! 88: if (n & (1 << led_bit[type - 1][ledno]))
! 89: n = 1;
! 90: else
! 91: n = 0;
! 92: break;
! 93: case alix:
! 94: n = inl(led_base[type - 1][ledno]);
! 95: if (n & (1 << led_bit[type - 1][ledno]))
! 96: n = 0;
! 97: else
! 98: n = 1;
! 99: break;
! 100: default:
! 101: return -1;
! 102: }
! 103:
! 104: return n;
! 105: }
! 106:
! 107:
1.1.2.1 misho 108: int
1.1.2.3 ! misho 109: LED(u_char ledno, u_char state)
1.1.2.2 misho 110: {
1.1.2.3 ! misho 111: u_int n;
! 112: board_t type = getBoard();
! 113:
1.1.2.2 misho 114: FTRACE(3);
115:
1.1.2.3 ! misho 116: switch (type) {
! 117: case wrap:
! 118: n = inl(led_base[type - 1][ledno]);
! 119: if (state)
! 120: n |= (1 << led_bit[type - 1][ledno]);
! 121: else
! 122: n &= ~(1 << led_bit[type - 1][ledno]);
! 123: break;
! 124: case alix:
! 125: if (state)
! 126: n = (1 << (led_bit[type - 1][ledno] + gpio_off[type - 1]));
! 127: else
! 128: n = (1 << led_bit[type - 1][ledno]);
! 129: break;
! 130: default:
! 131: return -1;
! 132: }
! 133:
! 134: outl(led_base[type - 1][ledno], n);
1.1.2.2 misho 135: return 0;
136: }
137:
138: int
1.1.2.3 ! misho 139: Run()
1.1.2.1 misho 140: {
141: FTRACE(3);
142:
143: return 0;
144: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>