162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci#ifndef _I8042_IP22_H
362306a36Sopenharmony_ci#define _I8042_IP22_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#include <asm/sgi/ioc.h>
662306a36Sopenharmony_ci#include <asm/sgi/ip22.h>
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci/*
1062306a36Sopenharmony_ci * Names.
1162306a36Sopenharmony_ci */
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define I8042_KBD_PHYS_DESC "hpc3ps2/serio0"
1462306a36Sopenharmony_ci#define I8042_AUX_PHYS_DESC "hpc3ps2/serio1"
1562306a36Sopenharmony_ci#define I8042_MUX_PHYS_DESC "hpc3ps2/serio%d"
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/*
1862306a36Sopenharmony_ci * IRQs.
1962306a36Sopenharmony_ci */
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#define I8042_KBD_IRQ SGI_KEYBD_IRQ
2262306a36Sopenharmony_ci#define I8042_AUX_IRQ SGI_KEYBD_IRQ
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci/*
2562306a36Sopenharmony_ci * Register numbers.
2662306a36Sopenharmony_ci */
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci#define I8042_COMMAND_REG	((unsigned long)&sgioc->kbdmouse.command)
2962306a36Sopenharmony_ci#define I8042_STATUS_REG	((unsigned long)&sgioc->kbdmouse.command)
3062306a36Sopenharmony_ci#define I8042_DATA_REG		((unsigned long)&sgioc->kbdmouse.data)
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_cistatic inline int i8042_read_data(void)
3362306a36Sopenharmony_ci{
3462306a36Sopenharmony_ci	return sgioc->kbdmouse.data;
3562306a36Sopenharmony_ci}
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_cistatic inline int i8042_read_status(void)
3862306a36Sopenharmony_ci{
3962306a36Sopenharmony_ci	return sgioc->kbdmouse.command;
4062306a36Sopenharmony_ci}
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_cistatic inline void i8042_write_data(int val)
4362306a36Sopenharmony_ci{
4462306a36Sopenharmony_ci	sgioc->kbdmouse.data = val;
4562306a36Sopenharmony_ci}
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_cistatic inline void i8042_write_command(int val)
4862306a36Sopenharmony_ci{
4962306a36Sopenharmony_ci	sgioc->kbdmouse.command = val;
5062306a36Sopenharmony_ci}
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_cistatic inline int i8042_platform_init(void)
5362306a36Sopenharmony_ci{
5462306a36Sopenharmony_ci#if 0
5562306a36Sopenharmony_ci	/* XXX sgi_kh is a virtual address */
5662306a36Sopenharmony_ci	if (!request_mem_region(sgi_kh, sizeof(struct hpc_keyb), "i8042"))
5762306a36Sopenharmony_ci		return -EBUSY;
5862306a36Sopenharmony_ci#endif
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci	i8042_reset = I8042_RESET_ALWAYS;
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci	return 0;
6362306a36Sopenharmony_ci}
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_cistatic inline void i8042_platform_exit(void)
6662306a36Sopenharmony_ci{
6762306a36Sopenharmony_ci#if 0
6862306a36Sopenharmony_ci	release_mem_region(JAZZ_KEYBOARD_ADDRESS, sizeof(struct hpc_keyb));
6962306a36Sopenharmony_ci#endif
7062306a36Sopenharmony_ci}
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci#endif /* _I8042_IP22_H */
73