cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

i8042-io.h (1765B)


      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_PPC)
     25extern int of_i8042_kbd_irq;
     26extern int of_i8042_aux_irq;
     27# define I8042_KBD_IRQ  of_i8042_kbd_irq
     28# define I8042_AUX_IRQ  of_i8042_aux_irq
     29#else
     30# define I8042_KBD_IRQ	1
     31# define I8042_AUX_IRQ	12
     32#endif
     33
     34
     35/*
     36 * Register numbers.
     37 */
     38
     39#define I8042_COMMAND_REG	0x64
     40#define I8042_STATUS_REG	0x64
     41#define I8042_DATA_REG		0x60
     42
     43static inline int i8042_read_data(void)
     44{
     45	return inb(I8042_DATA_REG);
     46}
     47
     48static inline int i8042_read_status(void)
     49{
     50	return inb(I8042_STATUS_REG);
     51}
     52
     53static inline void i8042_write_data(int val)
     54{
     55	outb(val, I8042_DATA_REG);
     56}
     57
     58static inline void i8042_write_command(int val)
     59{
     60	outb(val, I8042_COMMAND_REG);
     61}
     62
     63static inline int i8042_platform_init(void)
     64{
     65/*
     66 * On some platforms touching the i8042 data register region can do really
     67 * bad things. Because of this the region is always reserved on such boxes.
     68 */
     69#if defined(CONFIG_PPC)
     70	if (check_legacy_ioport(I8042_DATA_REG))
     71		return -ENODEV;
     72#endif
     73#if !defined(__sh__) && !defined(__alpha__)
     74	if (!request_region(I8042_DATA_REG, 16, "i8042"))
     75		return -EBUSY;
     76#endif
     77
     78	i8042_reset = I8042_RESET_ALWAYS;
     79	return 0;
     80}
     81
     82static inline void i8042_platform_exit(void)
     83{
     84#if !defined(__sh__) && !defined(__alpha__)
     85	release_region(I8042_DATA_REG, 16);
     86#endif
     87}
     88
     89#endif /* _I8042_IO_H */