1*d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2f1782447SThomas Bogendoerfer #ifndef _I8042_SNIRM_H 3f1782447SThomas Bogendoerfer #define _I8042_SNIRM_H 4f1782447SThomas Bogendoerfer 5f1782447SThomas Bogendoerfer #include <asm/sni.h> 6f1782447SThomas Bogendoerfer 7f1782447SThomas Bogendoerfer 8f1782447SThomas Bogendoerfer /* 9f1782447SThomas Bogendoerfer * Names. 10f1782447SThomas Bogendoerfer */ 11f1782447SThomas Bogendoerfer 12f1782447SThomas Bogendoerfer #define I8042_KBD_PHYS_DESC "onboard/serio0" 13f1782447SThomas Bogendoerfer #define I8042_AUX_PHYS_DESC "onboard/serio1" 14f1782447SThomas Bogendoerfer #define I8042_MUX_PHYS_DESC "onboard/serio%d" 15f1782447SThomas Bogendoerfer 16f1782447SThomas Bogendoerfer /* 17f1782447SThomas Bogendoerfer * IRQs. 18f1782447SThomas Bogendoerfer */ 19f1782447SThomas Bogendoerfer static int i8042_kbd_irq; 20f1782447SThomas Bogendoerfer static int i8042_aux_irq; 21f1782447SThomas Bogendoerfer #define I8042_KBD_IRQ i8042_kbd_irq 22f1782447SThomas Bogendoerfer #define I8042_AUX_IRQ i8042_aux_irq 23f1782447SThomas Bogendoerfer 24f1782447SThomas Bogendoerfer static void __iomem *kbd_iobase; 25f1782447SThomas Bogendoerfer 26f1782447SThomas Bogendoerfer #define I8042_COMMAND_REG (kbd_iobase + 0x64UL) 27f1782447SThomas Bogendoerfer #define I8042_DATA_REG (kbd_iobase + 0x60UL) 28f1782447SThomas Bogendoerfer i8042_read_data(void)29f1782447SThomas Bogendoerferstatic inline int i8042_read_data(void) 30f1782447SThomas Bogendoerfer { 31f1782447SThomas Bogendoerfer return readb(kbd_iobase + 0x60UL); 32f1782447SThomas Bogendoerfer } 33f1782447SThomas Bogendoerfer i8042_read_status(void)34f1782447SThomas Bogendoerferstatic inline int i8042_read_status(void) 35f1782447SThomas Bogendoerfer { 36f1782447SThomas Bogendoerfer return readb(kbd_iobase + 0x64UL); 37f1782447SThomas Bogendoerfer } 38f1782447SThomas Bogendoerfer i8042_write_data(int val)39f1782447SThomas Bogendoerferstatic inline void i8042_write_data(int val) 40f1782447SThomas Bogendoerfer { 41f1782447SThomas Bogendoerfer writeb(val, kbd_iobase + 0x60UL); 42f1782447SThomas Bogendoerfer } 43f1782447SThomas Bogendoerfer i8042_write_command(int val)44f1782447SThomas Bogendoerferstatic inline void i8042_write_command(int val) 45f1782447SThomas Bogendoerfer { 46f1782447SThomas Bogendoerfer writeb(val, kbd_iobase + 0x64UL); 47f1782447SThomas Bogendoerfer } i8042_platform_init(void)48f1782447SThomas Bogendoerferstatic inline int i8042_platform_init(void) 49f1782447SThomas Bogendoerfer { 50f1782447SThomas Bogendoerfer /* RM200 is strange ... */ 51f1782447SThomas Bogendoerfer if (sni_brd_type == SNI_BRD_RM200) { 52f1782447SThomas Bogendoerfer kbd_iobase = ioremap(0x16000000, 4); 53f1782447SThomas Bogendoerfer i8042_kbd_irq = 33; 54f1782447SThomas Bogendoerfer i8042_aux_irq = 44; 55f1782447SThomas Bogendoerfer } else { 56f1782447SThomas Bogendoerfer kbd_iobase = ioremap(0x14000000, 4); 57f1782447SThomas Bogendoerfer i8042_kbd_irq = 1; 58f1782447SThomas Bogendoerfer i8042_aux_irq = 12; 59f1782447SThomas Bogendoerfer } 60f1782447SThomas Bogendoerfer if (!kbd_iobase) 61f1782447SThomas Bogendoerfer return -ENOMEM; 62f1782447SThomas Bogendoerfer 63f1782447SThomas Bogendoerfer return 0; 64f1782447SThomas Bogendoerfer } 65f1782447SThomas Bogendoerfer i8042_platform_exit(void)66f1782447SThomas Bogendoerferstatic inline void i8042_platform_exit(void) 67f1782447SThomas Bogendoerfer { 68f1782447SThomas Bogendoerfer 69f1782447SThomas Bogendoerfer } 70f1782447SThomas Bogendoerfer 71f1782447SThomas Bogendoerfer #endif /* _I8042_SNIRM_H */ 72