source: asp_ewarm/asp-1.7.0/pdic/upd72001/upd72001.c@ 61

Last change on this file since 61 was 61, checked in by ertl-honda, 11 years ago

ASP for EWARM のコミット.

File size: 11.2 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2006-2008 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
12 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
13 * •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
14 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
15 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
16 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
17 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
18 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
19ƒƒ“ƒgi—˜—p
20 * ŽÒƒ}ƒjƒ…
21ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
22 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
23 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
24 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
25 * ‚ƁD
26 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
27ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
28ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
29 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
30 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
31 * •ñ‚·‚邱‚ƁD
32 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
33 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
34 * ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
35 * —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
36 * –Ɛӂ·‚邱‚ƁD
37 *
38 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
39 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
40 * ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
41 * ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
42 * ‚̐ӔC‚𕉂í‚È‚¢D
43 *
44 * @(#) $Id: upd72001.c 873 2008-04-11 10:32:26Z hiro $
45 */
46
47/*
48 * ƒÊPD72001—p ŠÈˆÕSIOƒhƒ‰ƒCƒo
49 */
50
51#include <sil.h>
52#include "target_syssvc.h"
53#include "upd72001.h"
54
55/*
56 * ƒfƒoƒCƒXƒŒƒWƒXƒ^‚̃AƒNƒZƒXŠÔŠuŽžŠÔinsec’PˆÊj
57 *
58 * 200‚Æ‚¢‚¤’l‚É‚ ‚܂荪‹’‚Í‚È‚¢D
59 */
60#define UPD72001_DELAY 200U
61
62/*
63 * ƒÊPD72001‚̃ŒƒWƒXƒ^‚̔ԍ†
64 */
65#define UPD72001_CR0 0x00U /* ƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^ */
66#define UPD72001_CR1 0x01U
67#define UPD72001_CR2 0x02U
68#define UPD72001_CR3 0x03U
69#define UPD72001_CR4 0x04U
70#define UPD72001_CR5 0x05U
71#define UPD72001_CR10 0x0aU
72#define UPD72001_CR12 0x0cU
73#define UPD72001_CR14 0x0eU
74#define UPD72001_CR15 0x0fU
75
76#define UPD72001_SR0 0x00U /* ƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^ */
77
78/*
79 * ƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^‚̐ݒè’l
80 */
81#define CR_RESET 0x18U /* ƒ|[ƒgƒŠƒZƒbƒgƒRƒ}ƒ“ƒh */
82
83#define CR0_EOI 0x38U /* EOIiEnd of Interruptj*/
84
85#define CR1_DOWN 0x00U /* ‘SŠ„ž‚Ý‚ð‹ÖŽ~ */
86#define CR1_RECV 0x10U /* ŽóMŠ„ž‚Ý‹–‰Âƒrƒbƒg */
87#define CR1_SEND 0x02U /* ‘—MŠ„ž‚Ý‹–‰Âƒrƒbƒg */
88
89#define CR3_DEF 0xc1U /* ƒf[ƒ^ 8bitCŽóMƒCƒl[ƒuƒ‹ */
90#define CR4_DEF 0x44U /* ƒXƒgƒbƒvƒrƒbƒg 1bitCƒpƒŠƒeƒB‚È‚µ */
91#define CR5_DEF 0xeaU /* ƒf[ƒ^ 8bitC‘—MƒCƒl[ƒuƒ‹ */
92
93#define CR10_DEF 0x00U /* NRZ */
94#define CR14_DEF 0x07U /* ƒ{[ƒŒ[ƒgƒWƒFƒlƒŒ[ƒ^ƒCƒl[ƒuƒ‹ */
95#define CR15_DEF 0x56U /* ƒ{[ƒŒ[ƒgƒWƒFƒlƒŒ[ƒ^Žg—p */
96
97#define SR0_RECV 0x01U /* ŽóM’Ê’mƒrƒbƒg */
98#define SR0_SEND 0x04U /* ‘—M‰Â”\ƒrƒbƒg */
99
100/*
101 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‰Šú‰»ƒuƒƒbƒN‚Ì’è‹`
102 */
103typedef struct sio_port_initialization_block {
104 void *data; /* ƒf[ƒ^ƒŒƒWƒXƒ^‚̔Ԓn */
105 void *ctrl; /* ƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^‚̔Ԓn */
106
107 uint8_t cr3_def; /* CR3‚̐ݒè’liŽóMƒrƒbƒg”j*/
108 uint8_t cr4_def; /* CR4‚̐ݒè’liƒXƒgƒbƒvƒrƒbƒgCƒpƒŠƒeƒBj*/
109 uint8_t cr5_def; /* CR5‚̐ݒè’li‘—Mƒrƒbƒg”j*/
110 uint8_t brg1_def; /* ƒ{[ƒŒ[ƒgãˆÊ‚̐ݒè’l */
111 uint8_t brg2_def; /* ƒ{[ƒŒ[ƒg‰ºˆÊ‚̐ݒè’l */
112} SIOPINIB;
113
114/*
115 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒgŠÇ—ƒuƒƒbƒN‚Ì’è‹`
116 */
117struct sio_port_control_block {
118 const SIOPINIB *p_siopinib; /* ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‰Šú‰»ƒuƒƒbƒN */
119 intptr_t exinf; /* Šg’£î•ñ */
120 bool_t openflag; /* ƒI[ƒvƒ“Ï‚݃tƒ‰ƒO */
121 uint8_t cr1; /* CR1‚̐ݒè’liŠ„ž‚Ý‹–‰Âj*/
122 bool_t getready; /* •¶Žš‚ðŽóM‚µ‚½ó‘Ô */
123 bool_t putready; /* •¶Žš‚𑗐M‚Å‚«‚éó‘Ô */
124};
125
126/*
127 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‰Šú‰»ƒuƒƒbƒN
128 */
129const SIOPINIB siopinib_table[TNUM_SIOP] = {
130 { (void *) TADR_UPD72001_DATAA, (void *) TADR_UPD72001_CTRLA,
131 CR3_DEF, CR4_DEF, CR5_DEF, BRG1_DEF, BRG2_DEF },
132 { (void *) TADR_UPD72001_DATAB, (void *) TADR_UPD72001_CTRLB,
133 CR3_DEF, CR4_DEF, CR5_DEF, BRG1_DEF, BRG2_DEF }
134};
135
136/*
137 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒgŠÇ—ƒuƒƒbƒN‚̃GƒŠƒA
138 */
139SIOPCB siopcb_table[TNUM_SIOP];
140
141/*
142 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒgID‚©‚çŠÇ—ƒuƒƒbƒN‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
143 */
144#define INDEX_SIOP(siopid) ((uint_t)((siopid) - 1))
145#define get_siopcb(siopid) (&(siopcb_table[INDEX_SIOP(siopid)]))
146
147/*
148 * ƒfƒoƒCƒXƒŒƒWƒXƒ^‚ւ̃AƒNƒZƒXŠÖ”
149 */
150Inline uint8_t
151upd72001_read_reg(void *addr)
152{
153 uint8_t val;
154
155 val = upd72001_reb_reg(addr);
156 sil_dly_nse(UPD72001_DELAY);
157 return(val);
158}
159
160Inline void
161upd72001_write_reg(void *addr, uint8_t val)
162{
163 upd72001_wrb_reg(addr, val);
164 sil_dly_nse(UPD72001_DELAY);
165}
166
167Inline uint8_t
168upd72001_read_ctrl(void *addr, uint8_t reg)
169{
170 upd72001_write_reg(addr, reg);
171 return(upd72001_read_reg(addr));
172}
173
174Inline void
175upd72001_write_ctrl(void *addr, uint8_t reg, uint8_t val)
176{
177 upd72001_write_reg(addr, reg);
178 upd72001_write_reg(addr, val);
179}
180
181Inline void
182upd72001_write_brg(void *addr, uint8_t reg, uint8_t val,
183 uint8_t brg2, uint8_t brg1)
184{
185 upd72001_write_reg(addr, reg);
186 upd72001_write_reg(addr, val);
187 upd72001_write_reg(addr, brg2);
188 upd72001_write_reg(addr, brg1);
189 (void) upd72001_read_reg(addr); /* ƒ_ƒ~[ƒŠ[ƒh */
190}
191
192/*
193 * ó‘Ԃ̓Ǐo‚µiSR0‚̓Ǐo‚µj
194 *
195 * ƒÊPD72001‚́Có‘ԁiSR0j‚ðˆê“x“Ç‚Þ‚ÆŽóM’Ê’mƒrƒbƒg‚ª—Ž‚¿‚Ä‚µ‚Ü‚¤‚½
196 * ‚߁Có‘Ô‚ð“ǂݏo‚·ŠÖ”‚ðÝ‚¯CƒVƒŠƒAƒ‹I/Oƒ|[ƒgŠÇ—ƒuƒƒbƒN’†‚Ì
197 * getready‚ÉŽóM’Ê’mó‘ԁCputready‚É‘—M‰Â”\ó‘Ô‚ð•Û‘¶‚µ‚Ä‚¢‚éi‘—M
198 * ‰Â”\ó‘Ô‚Ì•Û‘¶‚Í•s—v‚©‚à‚µ‚ê‚È‚¢jD
199 * ó‘ÔƒŒƒWƒXƒ^‚ð“Ç‚ñ‚Å‚àŽóM’Ê’mƒrƒbƒg‚ª—Ž‚¿‚È‚¢ƒfƒoƒCƒXi‚±‚¿‚炪•
200 * ’Ê‚ÆŽv‚í‚ê‚éj‚ł́C‚±‚̊֐”‚Í•K—v‚È‚¢D
201 */
202static void
203upd72001_get_stat(SIOPCB *p_siopcb)
204{
205 uint8_t sr0;
206
207 sr0 = upd72001_read_ctrl(p_siopcb->p_siopinib->ctrl, UPD72001_SR0);
208 if ((sr0 & SR0_RECV) != 0) {
209 p_siopcb->getready = true;
210 }
211 if ((sr0 & SR0_SEND) != 0) {
212 p_siopcb->putready = true;
213 }
214}
215
216/*
217 * •¶Žš‚ðŽóM‚Å‚«‚é‚©H
218 */
219Inline bool_t
220upd72001_getready(SIOPCB *p_siopcb)
221{
222 upd72001_get_stat(p_siopcb);
223 return(p_siopcb->getready);
224}
225
226/*
227 * •¶Žš‚𑗐M‚Å‚«‚é‚©H
228 */
229Inline bool_t
230upd72001_putready(SIOPCB *p_siopcb)
231{
232 upd72001_get_stat(p_siopcb);
233 return(p_siopcb->putready);
234}
235
236/*
237 * ŽóM‚µ‚½•¶Žš‚ÌŽæo‚µ
238 */
239Inline char_t
240upd72001_getchar(SIOPCB *p_siopcb)
241{
242 p_siopcb->getready = false;
243 return((char_t) upd72001_read_reg(p_siopcb->p_siopinib->data));
244}
245
246/*
247 * ‘—M‚·‚镶Žš‚̏‘ž‚Ý
248 */
249Inline void
250upd72001_putchar(SIOPCB *p_siopcb, char_t c)
251{
252 p_siopcb->putready = false;
253 upd72001_write_reg(p_siopcb->p_siopinib->data, (uint8_t) c);
254}
255
256/*
257 * EOIiEnd Of Interruptj”­s
258 */
259Inline void
260upd72001_eoi(void)
261{
262 upd72001_write_ctrl((void *) TADR_UPD72001_CTRLA, UPD72001_CR0, CR0_EOI);
263}
264
265/*
266 * SIOƒhƒ‰ƒCƒo‚̏‰Šú‰»
267 */
268void
269upd72001_initialize(void)
270{
271 SIOPCB *p_siopcb;
272 uint_t i;
273
274 /*
275 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒgŠÇ—ƒuƒƒbƒN‚̏‰Šú‰»
276 */
277 for (p_siopcb = siopcb_table, i = 0; i < TNUM_SIOP; p_siopcb++, i++) {
278 p_siopcb->p_siopinib = &(siopinib_table[i]);
279 p_siopcb->openflag = false;
280 }
281}
282
283/*
284 * ƒI[ƒvƒ“‚µ‚Ä‚¢‚éƒ|[ƒg‚ª‚ ‚é‚©H
285 */
286bool_t
287upd72001_openflag(void)
288{
289 return(siopcb_table[0].openflag || siopcb_table[1].openflag);
290}
291
292/*
293 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚̃I[ƒvƒ“
294 */
295SIOPCB *
296upd72001_opn_por(ID siopid, intptr_t exinf)
297{
298 SIOPCB *p_siopcb;
299 const SIOPINIB *p_siopinib;
300
301 p_siopcb = get_siopcb(siopid);
302 p_siopinib = p_siopcb->p_siopinib;
303
304 upd72001_write_reg(p_siopinib->ctrl, CR_RESET);
305 if (!upd72001_openflag()) {
306 upd72001_write_ctrl((void *) TADR_UPD72001_CTRLA, UPD72001_CR2, 0x18);
307 upd72001_write_ctrl((void *) TADR_UPD72001_CTRLB, UPD72001_CR2, 0x00);
308 }
309 p_siopcb->cr1 = CR1_DOWN;
310 upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR1, p_siopcb->cr1);
311 upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR4, p_siopinib->cr4_def);
312 upd72001_write_brg(p_siopinib->ctrl, UPD72001_CR12, 0x01U,
313 p_siopinib->brg2_def, p_siopinib->brg1_def);
314 upd72001_write_brg(p_siopinib->ctrl, UPD72001_CR12, 0x02U,
315 p_siopinib->brg2_def, p_siopinib->brg1_def);
316 upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR15, CR15_DEF);
317 upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR14, CR14_DEF);
318 upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR10, CR10_DEF);
319 upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR3, p_siopinib->cr3_def);
320 upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR5, p_siopinib->cr5_def);
321 p_siopcb->exinf = exinf;
322 p_siopcb->getready = p_siopcb->putready = false;
323 p_siopcb->openflag = true;
324 return(p_siopcb);
325}
326
327/*
328 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚̃Nƒ[ƒY
329 */
330void
331upd72001_cls_por(SIOPCB *p_siopcb)
332{
333 upd72001_write_ctrl(p_siopcb->p_siopinib->ctrl, UPD72001_CR1, CR1_DOWN);
334 p_siopcb->openflag = false;
335}
336
337/*
338 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚Ö‚Ì•¶Žš‘—M
339 */
340bool_t
341upd72001_snd_chr(SIOPCB *p_siopcb, char_t c)
342{
343 if (upd72001_putready(p_siopcb)) {
344 upd72001_putchar(p_siopcb, c);
345 return(true);
346 }
347 return(false);
348}
349
350/*
351 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚Ì•¶ŽšŽóM
352 */
353int_t
354upd72001_rcv_chr(SIOPCB *p_siopcb)
355{
356 if (upd72001_getready(p_siopcb)) {
357 return((int_t)(uint8_t) upd72001_getchar(p_siopcb));
358 }
359 return(-1);
360}
361
362/*
363 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚Ì‹–‰Â
364 */
365void
366upd72001_ena_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
367{
368 uint8_t cr1_bit = 0;
369
370 switch (cbrtn) {
371 case SIO_RDY_SND:
372 cr1_bit = CR1_SEND;
373 break;
374 case SIO_RDY_RCV:
375 cr1_bit = CR1_RECV;
376 break;
377 }
378 p_siopcb->cr1 |= cr1_bit;
379 upd72001_write_ctrl(p_siopcb->p_siopinib->ctrl,
380 UPD72001_CR1, p_siopcb->cr1);
381}
382
383/*
384 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚Ì‹ÖŽ~
385 */
386void
387upd72001_dis_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
388{
389 uint8_t cr1_bit = 0;
390
391 switch (cbrtn) {
392 case SIO_RDY_SND:
393 cr1_bit = CR1_SEND;
394 break;
395 case SIO_RDY_RCV:
396 cr1_bit = CR1_RECV;
397 break;
398 }
399 p_siopcb->cr1 &= ~cr1_bit;
400 upd72001_write_ctrl(p_siopcb->p_siopinib->ctrl,
401 UPD72001_CR1, p_siopcb->cr1);
402}
403
404/*
405 * ƒVƒŠƒAƒ‹I/Oƒ|[ƒg‚ɑ΂·‚銄ž‚ݏˆ—
406 */
407static void
408upd72001_isr_siop(SIOPCB *p_siopcb)
409{
410 if ((p_siopcb->cr1 & CR1_RECV) != 0U && upd72001_getready(p_siopcb)) {
411 /*
412 * ŽóM’Ê’mƒR[ƒ‹ƒoƒbƒNƒ‹[ƒ`ƒ“‚ðŒÄ‚яo‚·D
413 */
414 upd72001_irdy_rcv(p_siopcb->exinf);
415 }
416 if ((p_siopcb->cr1 & CR1_SEND) != 0U && upd72001_putready(p_siopcb)) {
417 /*
418 * ‘—M‰Â”\ƒR[ƒ‹ƒoƒbƒNƒ‹[ƒ`ƒ“‚ðŒÄ‚яo‚·D
419 */
420 upd72001_irdy_snd(p_siopcb->exinf);
421 }
422}
423
424/*
425 * SIO‚ÌŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“
426 */
427void
428upd72001_isr(void)
429{
430 if (siopcb_table[0].openflag) {
431 upd72001_isr_siop(&(siopcb_table[0]));
432 }
433 if (siopcb_table[1].openflag) {
434 upd72001_isr_siop(&(siopcb_table[1]));
435 }
436 upd72001_eoi();
437}
Note: See TracBrowser for help on using the repository browser.