annotate packages/hal/powerpc/fads/current/src/quicc_smc2.c @ 3292:7f8e529b4d82 default tip

Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
author vae
date Wed, 29 Apr 2015 23:31:48 +0000
parents ca7141aff7c0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
1 //=============================================================================
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
2 //####UNSUPPORTEDBEGIN####
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
3 //
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
4 // -------------------------------------------
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
5 // This source file has been contributed to eCos/Red Hat. It may have been
14
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
6 // changed slightly to provide an interface consistent with those of other
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
7 // files.
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
8 //
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
9 // The functionality and contents of this file is supplied "AS IS"
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
10 // without any form of support and will not necessarily be kept up
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
11 // to date by Red Hat.
14
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
12 //
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
13 // The style of programming used in this file may not comply with the
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
14 // eCos programming guidelines. Please do not use as a base for other
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
15 // files.
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
16 //
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
17 // All inquiries about this file, or the functionality provided by it,
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
18 // should be directed to the 'ecos-discuss' mailing list (see
1982
ca7141aff7c0 * Changed all sourceware.cygnus.com URLs to
asl
parents: 64
diff changeset
19 // http://ecos.sourceware.org/ecos/intouch.html for details).
14
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
20 //
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
21 // Contributed by: Kevin Hester <khester@opticworks.com>
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
22 // Maintained by: <Unmaintained>
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
23 // See also:
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
24 // Motorola's "Example Software Initializing the SMC as a UART" package
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
25 // (smc2.zip) at:
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
26 // http://www.mot.com/SPS/RISC/netcomm/tools/index.html#MPC860_table
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
27 // -------------------------------------------
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
28 //
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
29 //####UNSUPPORTEDEND####
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
30 //=============================================================================
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
31 /*-------------------------------------------------------------------------
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
32 * FILENAME: smc2.c
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
33 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
34 * DESCRIPTION:
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
35 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
36 * The code in this module provides echo capability on SMC2. It's
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
37 * intent is to provide the beginnings of a debug port that is
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
38 * mostly compiler independent. If an ASCII terminal is connected
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
39 * at 9600,N,8,1 on Port 2 (PB3) on the ADS board with no hardware
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
40 * control, characters typed on the keyboard will be received by
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
41 * SMC2 and echoed back out the RS232 port to the ASCII terminal.
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
42 * This function was designed and tested on an ADS860
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
43 * development board. Note that if a different baud rate is
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
44 * required, there is a header file on the netcomm website under
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
45 * the General Software category that is labelled "Asynchronous
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
46 * Baud Rate Tables".
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
47 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
48 * REFERENCES:
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
49 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
50 * 1) MPC860 Users Manual
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
51 * 2) PowerPC Microprocessor Family: The Programming Environments for
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
52 * 32-Bit Microprocessors
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
53 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
54 * HISTORY:
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
55 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
56 * 27 APR 98 jay initial release
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
57 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
58 *-------------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
59
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
60 #include <cyg/hal/quicc_smc2.h>
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
61 #include "ppc_860.h"
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
62
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
63 /***********************/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
64 /* Global Declarations */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
65 /***********************/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
66
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
67 static EPPC *IMMR; /* IMMR base pointer */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
68 static BDRINGS *RxTxBD; /* buffer descriptors base pointer */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
69 static LB *SMC2Buffers; /* SMC2 base pointers */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
70
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
71 /*---------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
72 /* Function Prototypes */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
73 /*---------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
74
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
75 //static char SMC2Poll(void);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
76 static void InitBDs(void);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
77 //static void EchoChar(void);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
78 static unsigned long GetIMMR(void);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
79
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
80
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
81 /*-----------------------------------------------------------------------------
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
82 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
83 * FUNCTION NAME: cyg_smc2_init
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
84 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
85 * DESCRIPTION:
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
86 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
87 * EXTERNAL EFFECT:
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
88 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
89 * PARAMETERS: None
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
90 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
91 * RETURNS: None
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
92 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
93 *---------------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
94
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
95 void cyg_smc2_init(unsigned long baudRate)
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
96
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
97 {
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
98 unsigned long *bcsr1;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
99 unsigned long clockRate = 20 * 1000 * 1000; // 20Mhz
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
100 unsigned long divider = clockRate / (baudRate * 16) - 1;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
101
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
102 /*------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
103 /* Establish IMMR pointer */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
104 /*------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
105
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
106 IMMR = (EPPC *)(GetIMMR() & 0xFFFF0000); /* MPC8xx internal register
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
107 map */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
108
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
109 /*-----------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
110 /* Enable RS232 interface on ADS board via BCSR1 */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
111 /* Get the base address of BCSR */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
112 /*-----------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
113
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
114 bcsr1 = (unsigned long *) ((IMMR->memc_br1 & 0xffff0000) + 4);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
115 *bcsr1 &= ~(1 << 18); // turn on RS232 port 2
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
116
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
117
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
118 /*-----------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
119 /* Allow SMC2 TX, RX out */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
120 /*-----------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
121
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
122 IMMR->pip_pbpar |= (0x0C00);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
123 IMMR->pip_pbdir &= 0xF3FF;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
124
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
125 /*------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
126 /* Set Baud Rate to 9600 for 40MHz System Clock. */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
127 /* Enable BRG Count. */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
128 /*------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
129
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
130 IMMR->brgc2 = ((divider << 1) | 0x10000);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
131
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
132 IMMR->si_simode &= ~(0xF0000000); /* SCM2: NMSI mode */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
133 IMMR->si_simode |= 0x10000000; /* SCM2: Tx/Rx Clocks are BRG2 */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
134
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
135
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
136 /*--------------------*/
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
137 /* Initialize the BDs */
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
138 /*--------------------*/
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
139
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
140 InitBDs(); /* before setting up info depending on RxTxBD below */
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
141
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
142 IMMR->smc_regs[SMC2_REG].smc_smce = 0xFF; /* Clear any pending events */
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
143
14
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
144 /*----------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
145 /* Set RXBD table start at Dual Port +800 */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
146 /*----------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
147
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
148 IMMR->PRAM[PAGE4].pg.other.smc_dsp2.psmc2.u2.rbase = (unsigned short) (unsigned) &RxTxBD->RxBD;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
149
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
150 /*----------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
151 /* Set TXBD table start at Dual Port +808 */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
152 /*----------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
153
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
154 IMMR->PRAM[PAGE4].pg.other.smc_dsp2.psmc2.u2.tbase = (unsigned short) (unsigned) &RxTxBD->TxBD;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
155
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
156
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
157 /*--------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
158 /* Set RFCR,TFCR -- Rx,Tx Function Code */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
159 /* Normal Operation and Motorola byte */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
160 /* ordering */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
161 /*--------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
162
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
163 IMMR->PRAM[PAGE4].pg.other.smc_dsp2.psmc2.u2.rfcr = 0x18;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
164 IMMR->PRAM[PAGE4].pg.other.smc_dsp2.psmc2.u2.tfcr = 0x18;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
165
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
166 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
167 /* Protocol Specific Parameters */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
168 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
169
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
170 /*---------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
171 /* MRBLR = MAX buffer length */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
172 /*---------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
173
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
174 IMMR->PRAM[PAGE4].pg.other.smc_dsp2.psmc2.u2.mrblr = 1;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
175
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
176 /*------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
177 /* MAX_IDL = Disable MAX Idle Feature */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
178 /*------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
179
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
180 IMMR->PRAM[PAGE4].pg.other.smc_dsp2.psmc2.u2.max_idl = 0;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
181
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
182 /*-------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
183 /* BRKEC = No break condition occurred */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
184 /*-------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
185
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
186 IMMR->PRAM[PAGE4].pg.other.smc_dsp2.psmc2.u2.brkec = 0;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
187
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
188 /*---------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
189 /* BRKCR = 1 break char sent on top XMIT */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
190 /*---------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
191
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
192 IMMR->PRAM[PAGE4].pg.other.smc_dsp2.psmc2.u2.brkcr = 1;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
193
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
194
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
195 /* InitBDs() used to be here - no harm in doing this again */
14
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
196 IMMR->smc_regs[SMC2_REG].smc_smce = 0xFF; /* Clear any pending events */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
197
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
198 /*--------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
199 /* SMC_SMCM = Mask all interrupts, use polling mode */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
200 /*--------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
201
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
202 IMMR->smc_regs[SMC2_REG].smc_smcm = 0;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
203
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
204 IMMR->cpmi_cicr = 0; /* Disable all CPM interrups */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
205 IMMR->cpmi_cipr = 0xFFFFFFFF; /* Clear all pending interrupt events */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
206 IMMR->cpmi_cimr = 0; /* Mask all event interrupts */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
207
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
208 /*------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
209 /* 8-bit mode, no parity, 1 stop-bit */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
210 /* UART SMC Mode */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
211 /* Normal operation (no loopback), */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
212 /* SMC Transmitter/Receiver Enabled */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
213 /*------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
214
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
215 IMMR->smc_regs[SMC2_REG].smc_smcmr = 0x4823;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
216
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
217 /*---------------------------------------*/
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
218 /* Initialize Rx and Tx Params for SMC2: */
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
219 /* Spin until cpcr flag is cleared */
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
220 /*---------------------------------------*/
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
221
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
222 for(IMMR->cp_cr = 0x00d1; IMMR->cp_cr & 0x0001;) ;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 14
diff changeset
223
14
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
224 }
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
225
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
226
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
227
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
228 /*-----------------------------------------------------------------------------
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
229 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
230 * FUNCTION NAME: InitBDs
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
231 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
232 * DESCRIPTION: This function initializes the Tx and Rx Buffer Descriptors.
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
233 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
234 * EXTERNAL EFFECT: RxTxBD
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
235 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
236 * PARAMETERS: None
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
237 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
238 * RETURNS: None
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
239 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
240 *---------------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
241
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
242 static void InitBDs(void)
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
243
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
244 {
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
245 /*--------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
246 /* We add 64 bytes to the start of the buffer descriptors because */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
247 /* this code was also tested on the monitor version of SDS debugger. */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
248 /* The monitor program on our target uses most of the first 64 bytes */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
249 /* for buffer descriptors. If you are not using the SDS monitor with */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
250 /* Motorola's ADS development board, you can delete 64 below and */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
251 /* start at the beginning of this particular block of Dual Port RAM. */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
252 /*--------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
253
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
254 /*----------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
255 /* Get pointer to BD area on DP RAM */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
256 /*----------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
257
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
258 RxTxBD = (BDRINGS *)(IMMR->qcp_or_ud.ud.udata_bd + 64);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
259
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
260 /*-------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
261 /* Establish the buffer pool in Dual Port RAM. We do this because the*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
262 /* pool size is only 2 bytes (1 for Rx and 1 for Tx) and to avoid */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
263 /* disabling data cache for the memory region where BufferPool would */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
264 /* reside. The CPM does not recognize data in buffer pools once it */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
265 /* been cached. It's acesses are direct through DMA to external */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
266 /* memory. */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
267 /*-------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
268
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
269 SMC2Buffers = (LB *)(IMMR->qcp_or_ud.ud.udata_bd + 80);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
270
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
271 /*-----------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
272 /* Setup Receiver Buffer Descriptors */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
273 /*-----------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
274
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
275 RxTxBD->RxBD.bd_cstatus = 0xA000; /* Enable, Last BD */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
276 RxTxBD->RxBD.bd_length = 1;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
277 RxTxBD->RxBD.bd_addr = &(SMC2Buffers->RxBuffer);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
278
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
279
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
280 /*--------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
281 /* Setup Transmitter Buffer Descriptors */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
282 /*--------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
283
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
284 RxTxBD->TxBD.bd_cstatus = 0x2000; /* Buffer not yet ready; Last BD */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
285 RxTxBD->TxBD.bd_length = 1;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
286 RxTxBD->TxBD.bd_addr = &(SMC2Buffers->TxBuffer);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
287
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
288 } /* END InitBDs */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
289
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
290
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
291 #if 0 // static unused function. -jskov 19990122
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
292 /*-----------------------------------------------------------------------------
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
293 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
294 * FUNCTION NAME: EchoChar
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
295 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
296 * DESCRIPTION: This function facilitates the echoing of a received character.
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
297 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
298 * EXTERNAL EFFECT: RxTxBD
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
299 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
300 * PARAMETERS: None
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
301 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
302 * RETURNS: None
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
303 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
304 *---------------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
305
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
306 static void EchoChar(void)
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
307
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
308 {
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
309 char mych;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
310
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
311 mych = cyg_smc2_getchar();
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
312 cyg_smc2_putchar(mych);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
313
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
314 } /* end EchoChar */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
315 #endif
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
316
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
317 /*-----------------------------------------------------------------------------
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
318 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
319 * FUNCTION NAME: cyg_smc2_putchar
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
320 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
321 * DESCRIPTION: Output a character to SMC2
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
322 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
323 * EXTERNAL EFFECT: RxTxBD
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
324 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
325 * PARAMETERS: ch - input character
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
326 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
327 * RETURNS: None
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
328 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
329 *---------------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
330
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
331 void cyg_smc2_putchar(char ch)
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
332
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
333 {
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
334 /*-----------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
335 /* Loop until transmission completed */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
336 /*-----------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
337
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
338 while (RxTxBD->TxBD.bd_cstatus & 0x8000);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
339
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
340 /*------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
341 /* Store data */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
342 /*------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
343
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
344 *(RxTxBD->TxBD.bd_addr) = ch;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
345 RxTxBD->TxBD.bd_length = 1;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
346
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
347 /*---------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
348 /* Set Ready bit */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
349 /*---------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
350
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
351 RxTxBD->TxBD.bd_cstatus |= 0x8000;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
352
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
353 }
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
354
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
355
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
356
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
357 /*-----------------------------------------------------------------------------
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
358 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
359 * FUNCTION NAME: cyg_smc2_getchar
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
360 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
361 * DESCRIPTION: Get a character from SMC2
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
362 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
363 * EXTERNAL EFFECT: RxTxBD
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
364 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
365 * PARAMETERS: NONE
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
366 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
367 * RETURNS: A character from SMC2
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
368 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
369 *---------------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
370
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
371 char cyg_smc2_getchar(void)
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
372
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
373 {
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
374
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
375 char ch; /* output character from SMC2 */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
376
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
377 /*--------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
378 /* Loop if RxBD empty */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
379 /*--------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
380
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
381 while (RxTxBD->RxBD.bd_cstatus & 0x8000);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
382
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
383 /*--------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
384 /* Receive data */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
385 /*--------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
386
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
387 ch = *(RxTxBD->RxBD.bd_addr);
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
388
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
389 /*----------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
390 /* Set Buffer Empty bit */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
391 /*----------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
392
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
393 RxTxBD->RxBD.bd_cstatus |= 0x8000;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
394
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
395 return ch;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
396
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
397 }
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
398
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
399
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
400 #if 0 // static unused function. -jskov 19990122
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
401 /*-----------------------------------------------------------------------------
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
402 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
403 * FUNCTION NAME: SMC2Poll
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
404 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
405 * DESCRIPTION: Poll SMC2 RxBD and check to see if a character was received
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
406 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
407 * EXTERNAL EFFECT: NONE
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
408 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
409 * PARAMETERS: NONE
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
410 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
411 * RETURNS: A one if there is a character available in the receive buffer,
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
412 * else zero.
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
413 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
414 *---------------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
415
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
416 static char SMC2Poll(void)
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
417
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
418 {
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
419 return (RxTxBD->RxBD.bd_cstatus & 0x8000) ? 0 : 1;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
420
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
421 } /* END SMC2Poll */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
422 #endif
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
423
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
424
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
425 /*-----------------------------------------------------------------------------
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
426 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
427 * FUNCTION NAME: GetIMMR
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
428 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
429 * DESCRIPTION: Returns current value in the IMMR register.
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
430 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
431 * EXTERNAL EFFECT: NONE
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
432 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
433 * PARAMETERS: NONE
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
434 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
435 * RETURNS: The IMMR value in r3. The compiler uses r3 as the register
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
436 * containing the return value.
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
437 *
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
438 *---------------------------------------------------------------------------*/
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
439
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
440 static unsigned long GetIMMR(void)
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
441
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
442 {
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
443 unsigned long ret;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
444 asm volatile (" mfspr %0,638 " : "=r" (ret)); /* IMMR is spr #638 */
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
445
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
446 return ret;
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
447 }
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
448
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
449
01ce82f3e11a Merge from eCos master repository on 1999-06-11-17:05:41-BST
jlarmour
parents:
diff changeset
450 /* EOF hal/powerpc/fads/quicc_smc2.c */