root/drivers/input/serio/i8042-io.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. i8042_read_data
  2. i8042_read_status
  3. i8042_write_data
  4. i8042_write_command
  5. i8042_platform_init
  6. i8042_platform_exit

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 #ifndef _I8042_IO_H
   3 #define _I8042_IO_H
   4 
   5 
   6 /*
   7  * Names.
   8  */
   9 
  10 #define I8042_KBD_PHYS_DESC "isa0060/serio0"
  11 #define I8042_AUX_PHYS_DESC "isa0060/serio1"
  12 #define I8042_MUX_PHYS_DESC "isa0060/serio%d"
  13 
  14 /*
  15  * IRQs.
  16  */
  17 
  18 #ifdef __alpha__
  19 # define I8042_KBD_IRQ  1
  20 # define I8042_AUX_IRQ  (RTC_PORT(0) == 0x170 ? 9 : 12) /* Jensen is special */
  21 #elif defined(__arm__)
  22 /* defined in include/asm-arm/arch-xxx/irqs.h */
  23 #include <asm/irq.h>
  24 #elif defined(CONFIG_SH_CAYMAN)
  25 #include <asm/irq.h>
  26 #elif defined(CONFIG_PPC)
  27 extern int of_i8042_kbd_irq;
  28 extern int of_i8042_aux_irq;
  29 # define I8042_KBD_IRQ  of_i8042_kbd_irq
  30 # define I8042_AUX_IRQ  of_i8042_aux_irq
  31 #else
  32 # define I8042_KBD_IRQ  1
  33 # define I8042_AUX_IRQ  12
  34 #endif
  35 
  36 
  37 /*
  38  * Register numbers.
  39  */
  40 
  41 #define I8042_COMMAND_REG       0x64
  42 #define I8042_STATUS_REG        0x64
  43 #define I8042_DATA_REG          0x60
  44 
  45 static inline int i8042_read_data(void)
  46 {
  47         return inb(I8042_DATA_REG);
  48 }
  49 
  50 static inline int i8042_read_status(void)
  51 {
  52         return inb(I8042_STATUS_REG);
  53 }
  54 
  55 static inline void i8042_write_data(int val)
  56 {
  57         outb(val, I8042_DATA_REG);
  58 }
  59 
  60 static inline void i8042_write_command(int val)
  61 {
  62         outb(val, I8042_COMMAND_REG);
  63 }
  64 
  65 static inline int i8042_platform_init(void)
  66 {
  67 /*
  68  * On some platforms touching the i8042 data register region can do really
  69  * bad things. Because of this the region is always reserved on such boxes.
  70  */
  71 #if defined(CONFIG_PPC)
  72         if (check_legacy_ioport(I8042_DATA_REG))
  73                 return -ENODEV;
  74 #endif
  75 #if !defined(__sh__) && !defined(__alpha__)
  76         if (!request_region(I8042_DATA_REG, 16, "i8042"))
  77                 return -EBUSY;
  78 #endif
  79 
  80         i8042_reset = I8042_RESET_ALWAYS;
  81         return 0;
  82 }
  83 
  84 static inline void i8042_platform_exit(void)
  85 {
  86 #if !defined(__sh__) && !defined(__alpha__)
  87         release_region(I8042_DATA_REG, 16);
  88 #endif
  89 }
  90 
  91 #endif /* _I8042_IO_H */

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