16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
254579826SDavid Howells /*
354579826SDavid Howells  *
454579826SDavid Howells  * display7seg - Driver interface for the 7-segment display
554579826SDavid Howells  * present on Sun Microsystems CP1400 and CP1500
654579826SDavid Howells  *
754579826SDavid Howells  * Copyright (c) 2000 Eric Brower <ebrower@usa.net>
854579826SDavid Howells  *
954579826SDavid Howells  */
1054579826SDavid Howells 
1154579826SDavid Howells #ifndef __display7seg_h__
1254579826SDavid Howells #define __display7seg_h__
1354579826SDavid Howells 
1454579826SDavid Howells #define D7S_IOC	'p'
1554579826SDavid Howells 
1654579826SDavid Howells #define D7SIOCRD _IOR(D7S_IOC, 0x45, int)	/* Read device state	*/
1754579826SDavid Howells #define D7SIOCWR _IOW(D7S_IOC, 0x46, int)	/* Write device state	*/
1854579826SDavid Howells #define D7SIOCTM _IO (D7S_IOC, 0x47)		/* Translate mode (FLIP)*/
1954579826SDavid Howells 
2054579826SDavid Howells /*
2154579826SDavid Howells  * ioctl flag definitions
2254579826SDavid Howells  *
2354579826SDavid Howells  * POINT	- Toggle decimal point	(0=absent 1=present)
2454579826SDavid Howells  * ALARM	- Toggle alarm LED 		(0=green  1=red)
2554579826SDavid Howells  * FLIP		- Toggle inverted mode 	(0=normal 1=flipped)
2654579826SDavid Howells  * bits 0-4	- Character displayed	(see definitions below)
2754579826SDavid Howells  *
2854579826SDavid Howells  * Display segments are defined as follows,
2954579826SDavid Howells  * subject to D7S_FLIP register state:
3054579826SDavid Howells  *
3154579826SDavid Howells  *    a
3254579826SDavid Howells  *   ---
3354579826SDavid Howells  * f|   |b
3454579826SDavid Howells  *   -g-
3554579826SDavid Howells  * e|   |c
3654579826SDavid Howells  *   ---
3754579826SDavid Howells  *    d
3854579826SDavid Howells  */
3954579826SDavid Howells 
4054579826SDavid Howells #define D7S_POINT	(1 << 7)	/* Decimal point*/
4154579826SDavid Howells #define D7S_ALARM	(1 << 6)	/* Alarm LED 	*/
4254579826SDavid Howells #define D7S_FLIP	(1 << 5)	/* Flip display */
4354579826SDavid Howells 
4454579826SDavid Howells #define D7S_0		0x00		/* Numerals 0-9 */
4554579826SDavid Howells #define D7S_1		0x01
4654579826SDavid Howells #define D7S_2		0x02
4754579826SDavid Howells #define D7S_3		0x03
4854579826SDavid Howells #define D7S_4		0x04
4954579826SDavid Howells #define D7S_5		0x05
5054579826SDavid Howells #define D7S_6		0x06
5154579826SDavid Howells #define D7S_7		0x07
5254579826SDavid Howells #define D7S_8		0x08
5354579826SDavid Howells #define D7S_9		0x09
5454579826SDavid Howells #define D7S_A		0x0A		/* Letters A-F, H, L, P */
5554579826SDavid Howells #define D7S_B		0x0B
5654579826SDavid Howells #define D7S_C		0x0C
5754579826SDavid Howells #define D7S_D		0x0D
5854579826SDavid Howells #define D7S_E		0x0E
5954579826SDavid Howells #define D7S_F		0x0F
6054579826SDavid Howells #define D7S_H		0x10
6154579826SDavid Howells #define D7S_E2		0x11
6254579826SDavid Howells #define D7S_L		0x12
6354579826SDavid Howells #define D7S_P		0x13
6454579826SDavid Howells #define D7S_SEGA	0x14		/* Individual segments */
6554579826SDavid Howells #define D7S_SEGB	0x15
6654579826SDavid Howells #define D7S_SEGC	0x16
6754579826SDavid Howells #define D7S_SEGD	0x17
6854579826SDavid Howells #define D7S_SEGE	0x18
6954579826SDavid Howells #define D7S_SEGF	0x19
7054579826SDavid Howells #define D7S_SEGG	0x1A
7154579826SDavid Howells #define D7S_SEGABFG 0x1B		/* Segment groupings */
7254579826SDavid Howells #define D7S_SEGCDEG	0x1C
7354579826SDavid Howells #define D7S_SEGBCEF 0x1D
7454579826SDavid Howells #define D7S_SEGADG	0x1E
7554579826SDavid Howells #define D7S_BLANK	0x1F		/* Clear all segments */
7654579826SDavid Howells 
7754579826SDavid Howells #define D7S_MIN_VAL	0x0
7854579826SDavid Howells #define D7S_MAX_VAL	0x1F
7954579826SDavid Howells 
8054579826SDavid Howells #endif /* ifndef __display7seg_h__ */
81