irq.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/arch/arm/mach-ebsa110/irq.c
  3.  *
  4.  *  Copyright (C) 1996-1998 Russell King
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  *
  10.  *  Changelog:
  11.  *   22-08-1998 RMK Restructured IRQ routines
  12.  */
  13. #include <linux/init.h>
  14. #include <asm/mach/irq.h>
  15. #include <asm/hardware.h>
  16. #include <asm/io.h>
  17. #include <asm/irq.h>
  18. #include <asm/system.h>
  19. #include "hardware.h"
  20. static void ebsa110_mask_irq(unsigned int irq)
  21. {
  22. __raw_writeb(1 << irq, IRQ_MCLR);
  23. }
  24. static void ebsa110_unmask_irq(unsigned int irq)
  25. {
  26. __raw_writeb(1 << irq, IRQ_MSET);
  27. }
  28.  
  29. void __init ebsa110_init_irq(void)
  30. {
  31. unsigned long flags;
  32. int irq;
  33. save_flags_cli (flags);
  34. __raw_writeb(0xff, IRQ_MCLR);
  35. __raw_writeb(0x55, IRQ_MSET);
  36. __raw_writeb(0x00, IRQ_MSET);
  37. if (__raw_readb(IRQ_MASK) != 0x55)
  38. while (1);
  39. __raw_writeb(0xff, IRQ_MCLR); /* clear all interrupt enables */
  40. restore_flags (flags);
  41. for (irq = 0; irq < NR_IRQS; irq++) {
  42. irq_desc[irq].valid = 1;
  43. irq_desc[irq].probe_ok = 1;
  44. irq_desc[irq].mask_ack = ebsa110_mask_irq;
  45. irq_desc[irq].mask = ebsa110_mask_irq;
  46. irq_desc[irq].unmask = ebsa110_unmask_irq;
  47. }
  48. }