root/arch/x86/include/asm/i8259.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. inb_pic
  2. outb_pic
  3. has_legacy_pic
  4. nr_legacy_irqs

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _ASM_X86_I8259_H
   3 #define _ASM_X86_I8259_H
   4 
   5 #include <linux/delay.h>
   6 #include <asm/io.h>
   7 
   8 extern unsigned int cached_irq_mask;
   9 
  10 #define __byte(x, y)            (((unsigned char *)&(y))[x])
  11 #define cached_master_mask      (__byte(0, cached_irq_mask))
  12 #define cached_slave_mask       (__byte(1, cached_irq_mask))
  13 
  14 /* i8259A PIC registers */
  15 #define PIC_MASTER_CMD          0x20
  16 #define PIC_MASTER_IMR          0x21
  17 #define PIC_MASTER_ISR          PIC_MASTER_CMD
  18 #define PIC_MASTER_POLL         PIC_MASTER_ISR
  19 #define PIC_MASTER_OCW3         PIC_MASTER_ISR
  20 #define PIC_SLAVE_CMD           0xa0
  21 #define PIC_SLAVE_IMR           0xa1
  22 
  23 /* i8259A PIC related value */
  24 #define PIC_CASCADE_IR          2
  25 #define MASTER_ICW4_DEFAULT     0x01
  26 #define SLAVE_ICW4_DEFAULT      0x01
  27 #define PIC_ICW4_AEOI           2
  28 
  29 extern raw_spinlock_t i8259A_lock;
  30 
  31 /* the PIC may need a careful delay on some platforms, hence specific calls */
  32 static inline unsigned char inb_pic(unsigned int port)
  33 {
  34         unsigned char value = inb(port);
  35 
  36         /*
  37          * delay for some accesses to PIC on motherboard or in chipset
  38          * must be at least one microsecond, so be safe here:
  39          */
  40         udelay(2);
  41 
  42         return value;
  43 }
  44 
  45 static inline void outb_pic(unsigned char value, unsigned int port)
  46 {
  47         outb(value, port);
  48         /*
  49          * delay for some accesses to PIC on motherboard or in chipset
  50          * must be at least one microsecond, so be safe here:
  51          */
  52         udelay(2);
  53 }
  54 
  55 extern struct irq_chip i8259A_chip;
  56 
  57 struct legacy_pic {
  58         int nr_legacy_irqs;
  59         struct irq_chip *chip;
  60         void (*mask)(unsigned int irq);
  61         void (*unmask)(unsigned int irq);
  62         void (*mask_all)(void);
  63         void (*restore_mask)(void);
  64         void (*init)(int auto_eoi);
  65         int (*probe)(void);
  66         int (*irq_pending)(unsigned int irq);
  67         void (*make_irq)(unsigned int irq);
  68 };
  69 
  70 extern struct legacy_pic *legacy_pic;
  71 extern struct legacy_pic null_legacy_pic;
  72 
  73 static inline bool has_legacy_pic(void)
  74 {
  75         return legacy_pic != &null_legacy_pic;
  76 }
  77 
  78 static inline int nr_legacy_irqs(void)
  79 {
  80         return legacy_pic->nr_legacy_irqs;
  81 }
  82 
  83 #endif /* _ASM_X86_I8259_H */

/* [<][>][^][v][top][bottom][index][help] */