返回列表 发帖

[原创经验] w90x900驱动之三IRQ的编写

[原创经验] w90x900驱动之三IRQ的编写

void __init w90x900_init_irq(void)嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! _, [% Q0 X. }" o9 X0 R( c
{- 嵌入式底层驱动开发技术学习网站7 x* ^2 M" B* H7 Z

/ B: D: ^8 M; @; v- Eunsigned long pend;
; e5 _- {) z7 R

9 U; w3 v( `3 t4 _# dmcuos.comunsigned long last;

5 u( G# z  ^: z3 t( P$ Fmcuos.com
4 r: w2 c+ b. a) q( O: b本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。int irqno;
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, O% A# m+ ?! e! Y+ F, R" x" D7 [0 \
mcuos.com  v+ ?2 q, I( X3 X
int i;
- 嵌入式底层驱动开发技术学习网站9 B3 X" T+ O  W1 G

: x6 p8 t1 e4 \7 f4 \mcuos.com; g7 @( j) w7 {- @
__raw_writel(0xFFFFFFFE, W90X900_AIC_MDCR); /* disable all interrupts */
( ?5 _5 B* K7 u/ v* y3 j
       6 W% A9 z# {; Y: a" O2 ?% G* i+ r

' x- |" k! w2 `$ I( W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/* register the main interrupts */

. l3 v4 `4 K" U% N2 P6 v- 嵌入式底层驱动开发技术学习网站 $ _% g6 B* X" y2 M  h

% H5 h- s! n6 M7 zmcuos.comirqdbf("w90x900_init_irq: registering w90x900 interrupt handlers\n");

8 Y( T; `  T$ E) Z' C" f6 N8 x本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。 - 嵌入式底层驱动开发技术学习网站3 t# j" J- i# M; L1 f

: \3 s( k7 T+ p/ s; G0 m. h嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习for (irqno = IRQ_WDT; irqno <= IRQ_ADC; irqno++) {

) k- _% B1 O0 t嵌入式开发联盟
3 `( _1 R, y$ N# Y+ A嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习/* set all the w90x900 internal irqs */

3 f) }3 W* F, d- X8 |- 嵌入式底层驱动开发技术学习网站
# o$ f6 ^5 E/ H. B" Ymcuos.com- 嵌入式底层驱动开发技术学习网站! G0 z7 ~, d, f/ F0 z3 u/ v- F
switch (irqno) {

! H( J/ [1 j6 n4 N6 X" u+ o, M" \嵌入式开发联盟
1 r. j/ J' {: v' umcuos.com/* deal with the special IRQs (cascaded) */

6 o$ k" m/ @% I8 T. }! T: d$ ymcuos.com
6 r4 G% L/ ]$ E8 {  Y5 o5 m- 嵌入式底层驱动开发技术学习网站& u+ s6 u) l8 R2 i& X2 R; J
case IRQ_UART0:

' }: \" ]' ]9 \, f% @  K本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。嵌入式开发联盟7 ?; E! J  ?, R- ]1 J
case IRQ_TIMER0:

5 l. @. z( p4 Z7 e3 Cmcuos.com
- C" ^9 U3 |8 C, B) @, P  pmcuos.comset_irq_chip(irqno, &
w90x900_irq_chip);

. v: e4 k2 `4 ?+ V+ A/ U嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% ?! o& F" p/ r' K& y
set_irq_handler(irqno, do_level_IRQ);

+ k$ \# s9 ~/ ^6 f; c/ G. }' E) U嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
6 n+ b% U1 v/ L; wmcuos.comset_irq_flags(irqno, IRQF_VALID);
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。' {6 P2 Q) H/ J4 y7 b3 m+ T

- @3 B# e  U4 j. ?$ C+ A8 y! Umcuos.combreak;
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; W$ I5 l- D; J+ j: [2 A) n0 P
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' k6 z9 k3 n. c" f; ?' w

3 |# }1 B# Y" Q$ Y4 Emcuos.comdefault:
- 嵌入式底层驱动开发技术学习网站( p7 x( [0 y: M: I, n+ _
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 X8 E. b. S4 w& N( }* a# J6 U
//irqdbf("registering irq %d (w90p irq)\n", irqno);

% y6 x) v4 C# }7 b4 u6 v本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
9 M4 j0 L: z0 ?- J8 x2 W6 f5 Z! h本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。set_irq_chip(irqno, &w90x900_irq_chip);

) c2 h; t! @; h本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。mcuos.com6 Q% y! m# [0 w
set_irq_handler(irqno, do_level_IRQ);

* V; N# G% K% `$ M) a7 l嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习mcuos.com, T* n5 n  J4 n. i* v: s2 ^2 d% ^
set_irq_flags(irqno, IRQF_VALID);
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& d" B7 y3 e" y' r. ^
- i( g( i/ t& d
}

" X3 O* {8 _: q* S本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
! Y+ P' n3 U5 D/ t/ e& W5 imcuos.com}

, c! c9 ^# W7 G$ |0 @+ X6 J3 ]" S8 \嵌入式开发联盟
* Y1 b1 u& h- S: H+ s嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
' t* c" p1 g( O嵌入式开发联盟irqdbf("w90x900: registered interrupt handlers\n");
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; X5 c  g# _7 B, Y9 G. q3 [
}
$ M. d0 v2 c0 k9 r( t
3 c" F9 S: V( R& D' E本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。static struct irqchip w90x900_irq_chip = {mcuos.com' e3 i  b/ `2 m" R5 s
嵌入式开发联盟7 }/ C$ ~8 N( C6 a( I5 a
.ack- 嵌入式底层驱动开发技术学习网站# x. E& G. {& I5 a3 R& N

" @( ~" G; }0 {7 X- I' r本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。=
w90x900_irq_ack,
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 ]! q6 \3 c4 E) N& Q1 K+ p

+ ~! [* H; ~% e  G4 X/ h' l: e1 q- 嵌入式底层驱动开发技术学习网站.mask嵌入式开发联盟+ J1 _" z: @& ^, T

6 q( T# t  p1 ~  `# L+ U" n嵌入式开发联盟= w90x900_irq_mask,
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。: @; H- d! U% E  t, a4 ~
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习# o. O9 W  S" z7 k+ p, }
.unmask
" g( [" h, w, K0 N3 A5 q8 d: S
3 y  O9 j% ]8 b1 [" `4 [2 f嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习= w90x900_irq_unmask,

; n$ i) P: Y& B5 F8 ]' U7 W- 嵌入式底层驱动开发技术学习网站嵌入式开发联盟: Y0 P) i, w$ Q+ i/ M) Z
.set_wake
' K8 |- g6 s& f; \0 `1 I" [嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
- V) W( J  K3 U, k嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习= NULL

5 ]8 b4 e8 Q- W; I4 F2 fmcuos.com};- 嵌入式底层驱动开发技术学习网站3 ?, t5 y% o$ i' S

6 I- K% |9 d- N- L7 K+ amcuos.com嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& N3 g: H; D( p0 M4 f; _
.macromcuos.com( f0 i7 H+ s  F
get_irqnr_and_base, irqnr, irqstat, base, tmp
嵌入式开发联盟: `( q+ s6 @5 n: E, l9 Y" c3 e/ o* y

; X5 G! v, `. ~  C% d- 嵌入式底层驱动开发技术学习网站嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习8 t! O3 g, J& d8 v9 J; W
mov
  @( G& l! C; r2 [# N8 J5 X\base, #W90X900_VA_IRQ
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; A* ]! F! {! x: j
mcuos.com* k; j! s" j% k, t
- 嵌入式底层驱动开发技术学习网站! q- W; y3 z  b2 O' q: |
ldr本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ C% Y( S: R* F) \& G# H6 @
\irqnr, [ \base, #
AIC_IPER]//
采用iper来识别中断号,该中断是优先级最高的激活中断。它需要w90x900_irq_ack中的__raw_writel(0x01, W90X900_AIC_EOSCR);来清除中断状态。
mcuos.com6 _+ }# J6 R. e& t

( _4 l$ a* t1 t) K! G4 a- 嵌入式底层驱动开发技术学习网站ldr本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% @9 J( }# g8 ]3 v3 {3 C# T
\irqnr, [ \base, #AIC_ISNR]
mcuos.com. I; w1 b0 B& [" V
- 嵌入式底层驱动开发技术学习网站6 }! W/ y1 [$ Z* o" U
cmp
0 y5 D( }! N$ v3 m5 U# l2 ]- c6 I\irqnr, #0
- }' f( U) ~: c% j- 嵌入式底层驱动开发技术学习网站
( w% V8 K  m/ S$ t6 `0 z
              
( h3 ]( o; L: zmcuos.com
# U) v+ g4 D' T* y+ A; G- 嵌入式底层驱动开发技术学习网站.endm

2 V4 D2 f) J0 P嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
$ r6 a1 K/ S9 w; i; ~  c; D: n- 嵌入式底层驱动开发技术学习网站
* u  e+ F7 b0 F% ?( k本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/* currently don't need an disable_fiq macro */

/ R, `0 Q/ S/ F6 {( S1 v1 `7 F本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
% s: o# q9 S, U3 R嵌入式开发联盟
: D' l# E4 ?( Q# ymcuos.com.macro
  p3 D; R2 E8 }  k3 j" a- 嵌入式底层驱动开发技术学习网站disable_fiq
& i$ E$ \. ~$ j* i" T$ g1 x

4 g/ J) l: ~  Y. y8 ?- 嵌入式底层驱动开发技术学习网站.endm
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 O& @/ a0 V  p
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

返回列表
网页右侧QQ悬浮滚动在线客服
网页右侧QQ悬浮滚动在线客服