openocd/src/jtag/drivers/OpenULINK/src/main.c
Spencer Oliver de0130a0aa build: cleanup src/jtag/drivers directory
Change-Id: I99c08ec0132d5a15250050e718310f1ddd9fe546
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/425
Tested-by: jenkins
2012-02-06 10:59:07 +00:00

92 lines
3.5 KiB
C

/***************************************************************************
* Copyright (C) 2011 by Martin Schmoelzer *
* <martin.schmoelzer@student.tuwien.ac.at> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "main.h"
#include "io.h"
#include "usb.h"
#include "protocol.h"
extern void sudav_isr(void) __interrupt SUDAV_ISR;
extern void sof_isr(void) __interrupt;
extern void sutok_isr(void) __interrupt;
extern void suspend_isr(void) __interrupt;
extern void usbreset_isr(void) __interrupt;
extern void ibn_isr(void) __interrupt;
extern void ep0in_isr(void) __interrupt;
extern void ep0out_isr(void) __interrupt;
extern void ep1in_isr(void) __interrupt;
extern void ep1out_isr(void) __interrupt;
extern void ep2in_isr(void) __interrupt;
extern void ep2out_isr(void) __interrupt;
extern void ep3in_isr(void) __interrupt;
extern void ep3out_isr(void) __interrupt;
extern void ep4in_isr(void) __interrupt;
extern void ep4out_isr(void) __interrupt;
extern void ep5in_isr(void) __interrupt;
extern void ep5out_isr(void) __interrupt;
extern void ep6in_isr(void) __interrupt;
extern void ep6out_isr(void) __interrupt;
extern void ep7in_isr(void) __interrupt;
extern void ep7out_isr(void) __interrupt;
void io_init(void)
{
/* PORTxCFG register bits select alternate functions (1 == alternate function,
* 0 == standard I/O)
* OEx register bits turn on/off output buffer (1 == output, 0 == input)
* OUTx register bits determine pin state of output
* PINx register bits reflect pin state (high == 1, low == 0) */
/* PORT A */
PORTACFG = PIN_OE;
OEA = PIN_U_OE | PIN_OE | PIN_RUN_LED | PIN_COM_LED;
OUTA = PIN_RUN_LED | PIN_COM_LED;
/* PORT B */
PORTBCFG = 0x00;
OEB = PIN_TDI | PIN_TMS | PIN_TCK | PIN_TRST | PIN_BRKIN | PIN_RESET
| PIN_OCDSE;
/* TRST and RESET signals are low-active but inverted by hardware, so we clear
* these signals here! */
OUTB = 0x00;
/* PORT C */
PORTCCFG = PIN_WR;
OEC = PIN_TXD0 | PIN_WR;
OUTC = 0x00;
}
int main(void)
{
io_init();
usb_init();
/* Enable Interrupts */
EA = 1;
/* Begin executing command(s). This function never returns. */
command_loop();
/* Never reached, but SDCC complains about missing return statement */
return 0;
}