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