drivers/misc/ibmasm/remote.h

Source file repositories/reference/linux-study-clean/drivers/misc/ibmasm/remote.h

File Facts

System
Linux kernel
Corpus path
drivers/misc/ibmasm/remote.h
Extension
.h
Size
7854 bytes
Lines
258
Domain
Driver Families
Bucket
drivers/misc
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

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   0xFF08
#define KEY_SYM_TAB      0xFF09
#define KEY_SYM_ENTER    0xFF0D
#define KEY_SYM_SCR_LOCK 0xFF14
#define KEY_SYM_ESCAPE   0xFF1B
#define KEY_SYM_HOME     0xFF50
#define KEY_SYM_LARROW   0xFF51
#define KEY_SYM_UARROW   0xFF52
#define KEY_SYM_RARROW   0xFF53
#define KEY_SYM_DARROW   0xFF54
#define KEY_SYM_PAGEUP   0xFF55
#define KEY_SYM_PAGEDOWN 0xFF56
#define KEY_SYM_END      0xFF57
#define KEY_SYM_INSERT   0xFF63
#define KEY_SYM_NUM_LOCK 0xFF7F
#define KEY_SYM_KPSTAR   0xFFAA
#define KEY_SYM_KPPLUS   0xFFAB
#define KEY_SYM_KPMINUS  0xFFAD
#define KEY_SYM_KPDOT    0xFFAE
#define KEY_SYM_KPSLASH  0xFFAF
#define KEY_SYM_KPRIGHT  0xFF96
#define KEY_SYM_KPUP     0xFF97
#define KEY_SYM_KPLEFT   0xFF98
#define KEY_SYM_KPDOWN   0xFF99
#define KEY_SYM_KP0      0xFFB0
#define KEY_SYM_KP1      0xFFB1
#define KEY_SYM_KP2      0xFFB2
#define KEY_SYM_KP3      0xFFB3

Annotation

Implementation Notes