/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* IBM ASM Service Processor Device Driver
*
* Copyright (C) IBM Corporation, 2004
*
* Author: Max Asböck <amax@us.ibm.com>
*
* Originally written by Pete Reynolds
*/
#ifndef _IBMASM_REMOTE_H_
#define _IBMASM_REMOTE_H_
#include <asm /io.h>
/* pci offsets */
#define CONDOR_MOUSE_DATA 0 x000AC000
#define CONDOR_MOUSE_ISR_CONTROL 0 x00
#define CONDOR_MOUSE_ISR_STATUS 0 x04
#define CONDOR_MOUSE_Q_READER 0 x08
#define CONDOR_MOUSE_Q_WRITER 0 x0C
#define CONDOR_MOUSE_Q_BEGIN 0 x10
#define CONDOR_MOUSE_MAX_X 0 x14
#define CONDOR_MOUSE_MAX_Y 0 x18
#define CONDOR_INPUT_DESKTOP_INFO 0 x1F0
#define CONDOR_INPUT_DISPLAY_RESX 0 x1F4
#define CONDOR_INPUT_DISPLAY_RESY 0 x1F8
#define CONDOR_INPUT_DISPLAY_BITS 0 x1FC
#define CONDOR_OUTPUT_VNC_STATUS 0 x200
#define CONDOR_MOUSE_INTR_STATUS_MASK 0 x00000001
#define INPUT_TYPE_MOUSE 0 x1
#define INPUT_TYPE_KEYBOARD 0 x2
/* mouse button states received from SP */
#define REMOTE_DOUBLE_CLICK 0 xF0
#define REMOTE_BUTTON_LEFT 0 x01
#define REMOTE_BUTTON_MIDDLE 0 x02
#define REMOTE_BUTTON_RIGHT 0 x04
/* size of keysym/keycode translation matrices */
#define XLATE_SIZE 256
struct mouse_input {
unsigned short y;
unsigned short x;
};
struct keyboard_input {
unsigned short key_code;
unsigned char key_flag;
unsigned char key_down;
};
struct remote_input {
union {
struct mouse_input mouse;
struct keyboard_input keyboard;
} data;
unsigned char type;
unsigned char pad1;
unsigned char mouse_buttons;
unsigned char pad3;
};
#define mouse_addr(sp) (sp->base_address + CONDOR_MOUSE_DATA)
#define display_width(sp) (mouse_addr(sp) + CONDOR_INPUT_DISPLAY_RESX)
#define display_height(sp) (mouse_addr(sp) + CONDOR_INPUT_DISPLAY_RESY)
#define display_depth(sp) (mouse_addr(sp) + CONDOR_INPUT_DISPLAY_BITS)
#define desktop_info(sp) (mouse_addr(sp) + CONDOR_INPUT_DESKTOP_INFO)
#define vnc_status(sp) (mouse_addr(sp) + CONDOR_OUTPUT_VNC_STATUS)
#define isr_control(sp) (mouse_addr(sp) + CONDOR_MOUSE_ISR_CONTROL)
#define mouse_interrupt_pending(sp) readl(mouse_addr(sp) + CONDOR_MOUSE_ISR_STATUS)
#define clear_mouse_interrupt(sp) writel(0 , mouse_addr(sp) + CONDOR_MOUSE_ISR_STATUS)
#define enable_mouse_interrupts(sp) writel(1 , mouse_addr(sp) + CONDOR_MOUSE_ISR_CONTROL)
#define disable_mouse_interrupts(sp) writel(0 , mouse_addr(sp) + CONDOR_MOUSE_ISR_CONTROL)
/* remote input queue operations */
#define REMOTE_QUEUE_SIZE 60
#define get_queue_writer(sp) readl(mouse_addr(sp) + CONDOR_MOUSE_Q_WRITER)
#define get_queue_reader(sp) readl(mouse_addr(sp) + CONDOR_MOUSE_Q_READER)
#define set_queue_reader(sp, reader) writel(reader, mouse_addr(sp) + CONDOR_MOUSE_Q_READER)
#define queue_begin (mouse_addr(sp) + CONDOR_MOUSE_Q_BEGIN)
#define get_queue_entry(sp, read_index) \
((void *)(queue_begin + read_index * sizeof (struct remote_input)))
static inline int advance_queue_reader(struct service_processor *sp, unsigned long reader)
{
reader++;
if (reader == REMOTE_QUEUE_SIZE)
reader = 0 ;
set_queue_reader(sp, reader);
return reader;
}
#define NO_KEYCODE 0
#define KEY_SYM_BK_SPC 0 xFF08
#define KEY_SYM_TAB 0 xFF09
#define KEY_SYM_ENTER 0 xFF0D
#define KEY_SYM_SCR_LOCK 0 xFF14
#define KEY_SYM_ESCAPE 0 xFF1B
#define KEY_SYM_HOME 0 xFF50
#define KEY_SYM_LARROW 0 xFF51
#define KEY_SYM_UARROW 0 xFF52
#define KEY_SYM_RARROW 0 xFF53
#define KEY_SYM_DARROW 0 xFF54
#define KEY_SYM_PAGEUP 0 xFF55
#define KEY_SYM_PAGEDOWN 0 xFF56
#define KEY_SYM_END 0 xFF57
#define KEY_SYM_INSERT 0 xFF63
#define KEY_SYM_NUM_LOCK 0 xFF7F
#define KEY_SYM_KPSTAR 0 xFFAA
#define KEY_SYM_KPPLUS 0 xFFAB
#define KEY_SYM_KPMINUS 0 xFFAD
#define KEY_SYM_KPDOT 0 xFFAE
#define KEY_SYM_KPSLASH 0 xFFAF
#define KEY_SYM_KPRIGHT 0 xFF96
#define KEY_SYM_KPUP 0 xFF97
#define KEY_SYM_KPLEFT 0 xFF98
#define KEY_SYM_KPDOWN 0 xFF99
#define KEY_SYM_KP0 0 xFFB0
#define KEY_SYM_KP1 0 xFFB1
#define KEY_SYM_KP2 0 xFFB2
#define KEY_SYM_KP3 0 xFFB3
#define KEY_SYM_KP4 0 xFFB4
#define KEY_SYM_KP5 0 xFFB5
#define KEY_SYM_KP6 0 xFFB6
#define KEY_SYM_KP7 0 xFFB7
#define KEY_SYM_KP8 0 xFFB8
#define KEY_SYM_KP9 0 xFFB9
#define KEY_SYM_F1 0 xFFBE // 1B 5B 5B 41
#define KEY_SYM_F2 0 xFFBF // 1B 5B 5B 42
#define KEY_SYM_F3 0 xFFC0 // 1B 5B 5B 43
#define KEY_SYM_F4 0 xFFC1 // 1B 5B 5B 44
#define KEY_SYM_F5 0 xFFC2 // 1B 5B 5B 45
#define KEY_SYM_F6 0 xFFC3 // 1B 5B 31 37 7E
#define KEY_SYM_F7 0 xFFC4 // 1B 5B 31 38 7E
#define KEY_SYM_F8 0 xFFC5 // 1B 5B 31 39 7E
#define KEY_SYM_F9 0 xFFC6 // 1B 5B 32 30 7E
#define KEY_SYM_F10 0 xFFC7 // 1B 5B 32 31 7E
#define KEY_SYM_F11 0 xFFC8 // 1B 5B 32 33 7E
#define KEY_SYM_F12 0 xFFC9 // 1B 5B 32 34 7E
#define KEY_SYM_SHIFT 0 xFFE1
#define KEY_SYM_CTRL 0 xFFE3
#define KEY_SYM_ALT 0 xFFE9
#define KEY_SYM_CAP_LOCK 0 xFFE5
#define KEY_SYM_DELETE 0 xFFFF
#define KEY_SYM_TILDE 0 x60
#define KEY_SYM_BKTIC 0 x7E
#define KEY_SYM_ONE 0 x31
#define KEY_SYM_BANG 0 x21
#define KEY_SYM_TWO 0 x32
#define KEY_SYM_AT 0 x40
#define KEY_SYM_THREE 0 x33
#define KEY_SYM_POUND 0 x23
#define KEY_SYM_FOUR 0 x34
#define KEY_SYM_DOLLAR 0 x24
#define KEY_SYM_FIVE 0 x35
#define KEY_SYM_PERCENT 0 x25
#define KEY_SYM_SIX 0 x36
#define KEY_SYM_CARAT 0 x5E
#define KEY_SYM_SEVEN 0 x37
#define KEY_SYM_AMPER 0 x26
#define KEY_SYM_EIGHT 0 x38
#define KEY_SYM_STAR 0 x2A
#define KEY_SYM_NINE 0 x39
#define KEY_SYM_LPAREN 0 x28
#define KEY_SYM_ZERO 0 x30
#define KEY_SYM_RPAREN 0 x29
#define KEY_SYM_MINUS 0 x2D
#define KEY_SYM_USCORE 0 x5F
#define KEY_SYM_EQUAL 0 x2B
#define KEY_SYM_PLUS 0 x3D
#define KEY_SYM_LBRKT 0 x5B
#define KEY_SYM_LCURLY 0 x7B
#define KEY_SYM_RBRKT 0 x5D
#define KEY_SYM_RCURLY 0 x7D
#define KEY_SYM_SLASH 0 x5C
#define KEY_SYM_PIPE 0 x7C
#define KEY_SYM_TIC 0 x27
#define KEY_SYM_QUOTE 0 x22
#define KEY_SYM_SEMIC 0 x3B
#define KEY_SYM_COLON 0 x3A
#define KEY_SYM_COMMA 0 x2C
#define KEY_SYM_LT 0 x3C
#define KEY_SYM_PERIOD 0 x2E
#define KEY_SYM_GT 0 x3E
#define KEY_SYM_BSLASH 0 x2F
#define KEY_SYM_QMARK 0 x3F
#define KEY_SYM_A 0 x41
#define KEY_SYM_B 0 x42
#define KEY_SYM_C 0 x43
#define KEY_SYM_D 0 x44
#define KEY_SYM_E 0 x45
#define KEY_SYM_F 0 x46
#define KEY_SYM_G 0 x47
#define KEY_SYM_H 0 x48
#define KEY_SYM_I 0 x49
#define KEY_SYM_J 0 x4A
#define KEY_SYM_K 0 x4B
#define KEY_SYM_L 0 x4C
#define KEY_SYM_M 0 x4D
#define KEY_SYM_N 0 x4E
#define KEY_SYM_O 0 x4F
#define KEY_SYM_P 0 x50
#define KEY_SYM_Q 0 x51
#define KEY_SYM_R 0 x52
#define KEY_SYM_S 0 x53
#define KEY_SYM_T 0 x54
#define KEY_SYM_U 0 x55
#define KEY_SYM_V 0 x56
#define KEY_SYM_W 0 x57
#define KEY_SYM_X 0 x58
#define KEY_SYM_Y 0 x59
#define KEY_SYM_Z 0 x5A
#define KEY_SYM_a 0 x61
#define KEY_SYM_b 0 x62
#define KEY_SYM_c 0 x63
#define KEY_SYM_d 0 x64
#define KEY_SYM_e 0 x65
#define KEY_SYM_f 0 x66
#define KEY_SYM_g 0 x67
#define KEY_SYM_h 0 x68
#define KEY_SYM_i 0 x69
#define KEY_SYM_j 0 x6A
#define KEY_SYM_k 0 x6B
#define KEY_SYM_l 0 x6C
#define KEY_SYM_m 0 x6D
#define KEY_SYM_n 0 x6E
#define KEY_SYM_o 0 x6F
#define KEY_SYM_p 0 x70
#define KEY_SYM_q 0 x71
#define KEY_SYM_r 0 x72
#define KEY_SYM_s 0 x73
#define KEY_SYM_t 0 x74
#define KEY_SYM_u 0 x75
#define KEY_SYM_v 0 x76
#define KEY_SYM_w 0 x77
#define KEY_SYM_x 0 x78
#define KEY_SYM_y 0 x79
#define KEY_SYM_z 0 x7A
#define KEY_SYM_SPACE 0 x20
#endif /* _IBMASM_REMOTE_H_ */
Messung V0.5 in Prozent C=94 H=94 G=93
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland