返回列表 发帖

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

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

void __init w90x900_init_irq(void)- 嵌入式底层驱动开发技术学习网站1 [" M! Z8 Q! o" _$ ?9 N" A/ e
{- 嵌入式底层驱动开发技术学习网站+ L* l' U5 \& Q; F% Q
mcuos.com- k* V0 o# b; g
unsigned long pend;

; |- Y8 u/ f4 P, q' }" F& hmcuos.com5 M3 e; `7 [$ X8 M4 ]7 b" w
unsigned long last;

" Y, c* S. o9 O) [2 H本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
! F0 b/ `# @) Dint irqno;
mcuos.com" l- M' z5 `9 ?+ j  @( f$ U' F
mcuos.com. y/ X" M6 v. Z" u6 f! D* W
int i;

+ W# U; y' Q0 a+ p嵌入式开发联盟
7 `! U- r/ x% {$ u嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习: I, J0 O6 `* C# G1 x- z# z3 ~# I
__raw_writel(0xFFFFFFFE, W90X900_AIC_MDCR); /* disable all interrupts */

  e) g3 I/ b2 H, C3 [) y+ P嵌入式开发联盟      
' c5 E5 H! s  _本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 Q. \/ T% F! F
/* register the main interrupts */

; E  R  a, J; T" j5 {! v本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。 嵌入式开发联盟: I" w6 C! L$ {. T- r: m
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- E5 r% n6 `( H$ w0 L, g$ L
irqdbf("w90x900_init_irq: registering w90x900 interrupt handlers\n");

6 U2 u  @0 @3 ^5 z9 `# L& e1 p 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习7 }) p9 C9 M  |' G

; Q& h* e7 `. ]6 B4 B# t8 n: J- 嵌入式底层驱动开发技术学习网站for (irqno = IRQ_WDT; irqno <= IRQ_ADC; irqno++) {

  V4 h4 X& E- p' }. k" q- Emcuos.com嵌入式开发联盟2 {5 o. m) [7 \4 Y
/* set all the w90x900 internal irqs */

8 C2 S2 m' V' T嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, U- K6 u* s+ Y/ Y( U. {6 a5 q

  E7 q2 r; U+ Q4 fmcuos.comswitch (irqno) {

3 G; _/ K/ P: j; k8 P6 v本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 @0 M2 G3 ^$ S6 E* S
/* deal with the special IRQs (cascaded) */
嵌入式开发联盟6 X$ M, a" ?' }) a, p6 P! O
  K; ^( e* A: c
mcuos.com; e; S6 Z, N) _* o) U7 |
case IRQ_UART0:
嵌入式开发联盟- e" s* Y2 x. ~+ A$ R; ~; H
mcuos.com: z5 V9 X8 Y" K% l0 H
case IRQ_TIMER0:
% a! T3 A/ {. R  D. v! K
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习) i+ M+ W( M( X" q; m& h
set_irq_chip(irqno, &
w90x900_irq_chip);
mcuos.com8 F' z* q! v9 V5 j
3 ]9 J0 D! B0 _7 v
set_irq_handler(irqno, do_level_IRQ);
嵌入式开发联盟' S. [' H( r( o" b; k9 B
- 嵌入式底层驱动开发技术学习网站: W$ s, q& {9 f# g! a# N
set_irq_flags(irqno, IRQF_VALID);
mcuos.com' {4 Y9 y8 _8 W) L" Q: X- d/ O

5 e% U$ {" d, H# X' @6 ]0 d嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习break;
) q- U- a3 J  b. N
/ J9 k! _) A* d3 `5 m0 L: n

0 ?; a0 h1 u/ j4 H( M4 pdefault:
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 J  j( [  H; q8 T+ n
嵌入式开发联盟2 l( C8 Q5 }- S, m6 B! h
//irqdbf("registering irq %d (w90p irq)\n", irqno);
7 z4 L' U  t# H2 }: z: ]
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; t" X- E) i2 d- m! S/ e
set_irq_chip(irqno, &w90x900_irq_chip);
/ P1 L5 S2 d6 Y# I5 j; u$ }! I
嵌入式开发联盟& G. }  L5 w, B& h+ I, U
set_irq_handler(irqno, do_level_IRQ);
mcuos.com4 }2 O  |4 l* P, D# [0 }
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- n- C' o" d& u, I/ c2 Z- g3 F, N
set_irq_flags(irqno, IRQF_VALID);

' x. U7 n* P! G1 n- A- a7 W: E% T
" v0 V9 @& H* b& J5 Dmcuos.com}

7 A0 m* Q0 X/ R1 L: W6 ?嵌入式开发联盟嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 y3 x3 z1 v+ O6 g7 h
}
- 嵌入式底层驱动开发技术学习网站5 c( U3 u* d3 [6 j
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1 v+ @: j2 l, v8 _. C
5 ]9 ^/ Z' f! ?. P9 J
irqdbf("w90x900: registered interrupt handlers\n");

5 K5 ~2 u) ~0 A8 T5 R; a本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。}- 嵌入式底层驱动开发技术学习网站# X2 _2 b- _9 W3 q4 p: n
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 g5 O" Z) t. ?5 |/ k
static struct irqchip w90x900_irq_chip = {本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 o9 U0 p9 x: F( R9 A7 J* R
% n: X* o* @8 s4 U/ U% T
.ack
9 \; T% g- k: p/ K% w4 C4 l- 嵌入式底层驱动开发技术学习网站mcuos.com/ m* l: L, X- I. E9 R9 M0 H$ P, K6 [
=
w90x900_irq_ack,
mcuos.com2 ?; |8 {. {# K4 _9 M- y/ c

$ d% Q& W0 j# J' S* a* p4 H2 Hmcuos.com.mask嵌入式开发联盟& Q% P0 I' V9 T5 x( N) U
- 嵌入式底层驱动开发技术学习网站: f/ |8 n3 `6 h* V% \
= w90x900_irq_mask,
- 嵌入式底层驱动开发技术学习网站( N) G% ^+ y2 n! k4 g8 E* \

7 u7 G$ ^+ I9 {5 b.unmask
) [* @5 g6 Q" b& g- Y/ ?嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习嵌入式开发联盟8 ]" T1 B2 ?$ i& f  ~
= w90x900_irq_unmask,
- 嵌入式底层驱动开发技术学习网站% ~3 y) T! \% d' F
- 嵌入式底层驱动开发技术学习网站5 r, P7 q- a9 P% V& A( B
.set_wakemcuos.com% n. M0 Y! |! L' o& a
- 嵌入式底层驱动开发技术学习网站- O0 l. O" ~2 ?* O
= NULL
嵌入式开发联盟/ Z" G1 V+ }) E4 U
};- 嵌入式底层驱动开发技术学习网站) p. U$ W5 F; D! L. D: r& n
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2 @- q  l7 J) Z* V" d  g

7 m5 K; e# ^8 P3 u0 V( }6 gmcuos.com.macro
9 `# o9 u+ V4 f- x1 |, r' s+ d本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
get_irqnr_and_base, irqnr, irqstat, base, tmp
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" G& ^. ^9 w: H1 s% L

. V2 \( [; R1 l4 i/ v/ w. Y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。嵌入式开发联盟+ q. e1 T* {# T' G- @2 I8 Q
mov
. n, d4 |" X' K7 n本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。\base, #W90X900_VA_IRQ
嵌入式开发联盟2 M7 Z: D1 ~' N9 f

5 w* _$ ~4 o, E! i6 s: @mcuos.com
/ w( T9 N$ |+ C* y6 _ldrmcuos.com: t- b  W' U$ q( ~0 b2 [; R7 s+ ^
\irqnr, [ \base, #
AIC_IPER]//
采用iper来识别中断号,该中断是优先级最高的激活中断。它需要w90x900_irq_ack中的__raw_writel(0x01, W90X900_AIC_EOSCR);来清除中断状态。
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/ L! B" ?7 Z6 x8 Q0 {

% A) ~7 l; N: j2 \嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习ldr嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! p# E# p( v+ t# [$ a7 k2 R
\irqnr, [ \base, #AIC_ISNR]

7 E) Z4 g9 a& Z9 l, jmcuos.com
5 G' a1 h4 J* V. J  z( |2 U: N嵌入式开发联盟cmp本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。6 [# U# i4 w1 T7 F/ B
\irqnr, #0
# R/ x3 u  H6 Imcuos.com
嵌入式开发联盟" L4 z8 v, T- F; _  m) G- J, p8 ~6 T
              本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。" f9 e9 P& k8 P

& q: e+ b6 h% ]6 ~5 @# smcuos.com.endm
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ v( Q, Z" x) Q5 m0 q, v9 X- Q" K
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 ]! R- @1 z  f: l+ v: L2 }
嵌入式开发联盟8 A4 b; C6 D+ b5 U: r
/* currently don't need an disable_fiq macro */

5 Z/ X6 ]$ x( T) f嵌入式开发联盟 嵌入式开发联盟6 Q/ }  P+ s" \0 ^* j

9 J2 u0 I7 `" Y" V; Y嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习.macro
! T8 g) j! Z% e( C* I0 f5 bmcuos.comdisable_fiq
/ ]5 h+ E3 L- c

3 @0 I1 z0 A# Q' y+ |; y嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习.endm

8 ^9 F! g8 O+ J, Z9 a4 [嵌入式开发联盟
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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