summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorCédric VINCENT <cedric.vincent@st.com>2011-06-29 15:09:09 +0200
committerRiku Voipio <riku.voipio@linaro.org>2011-07-11 16:06:16 +0300
commite6fe18fb318cb399623246e2561581442ffc0372 (patch)
treef56bd889e71f01b9c14c009b91e9a9c0b25ec324
parent1c1b40c162a6964e1898e84304230a308f4d16c3 (diff)
downloadfocaccia-qemu-e6fe18fb318cb399623246e2561581442ffc0372.tar.gz
focaccia-qemu-e6fe18fb318cb399623246e2561581442ffc0372.zip
linux-user: Add support for KD...LED ioctls
DirectFB-1.0 uses at least one of the four added ioctls, and the three
others were added for completeness.  This patch was validated with the
program "setleds" and the following Makefile:

    SETLEDS_INIT  = setleds -v -num -caps -scroll
    SETLEDS_TESTS = sh -c ' \
	setleds -v +num +caps +scroll; \
	setleds -v -num -caps -scroll; \
	setleds -v +num -caps -scroll; \
	setleds -v +num +caps -scroll; \
	setleds -v +num +caps +scroll; \
	setleds -v -num +caps +scroll; \
	setleds -v -num -caps +scroll; \
	setleds -v -num -caps -scroll'

    SETLEDS_HOST = setleds
    SETLEDS_QEMU = "SETLEDS_QEMU not set"

    .PHONY: setleds_tests
    setleds_tests:
	rm -f setleds.host setleds.target
	$(SETLEDS_INIT:setleds=$(SETLEDS_HOST))
	$(SETLEDS_TESTS:setleds=$(SETLEDS_HOST)) >> setleds.host
	$(SETLEDS_INIT:setleds=$(SETLEDS_QEMU))
	$(SETLEDS_TESTS:setleds=$(SETLEDS_QEMU)) >> setleds.target
	cmp setleds.host setleds.target

Signed-off-by: Cédric VINCENT <cedric.vincent@st.com>
Cc: Riku Voipio <riku.voipio@iki.fi>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
-rw-r--r--linux-user/ioctls.h4
-rw-r--r--linux-user/syscall_defs.h4
2 files changed, 8 insertions, 0 deletions
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index 42b3ae3725..68418e425c 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -59,6 +59,10 @@
      IOCTL(KDSKBMODE, 0, TYPE_INT)
      IOCTL(KDGKBENT, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_kbentry)))
      IOCTL(KDGKBSENT, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_kbsentry)))
+     IOCTL(KDGKBLED, 0, TYPE_INT)
+     IOCTL(KDSKBLED, 0, TYPE_INT)
+     IOCTL(KDGETLED, 0, TYPE_INT)
+     IOCTL(KDSETLED, 0, TYPE_INT)
 
      IOCTL(BLKROSET, IOC_W, MK_PTR(TYPE_INT))
      IOCTL(BLKROGET, IOC_R, MK_PTR(TYPE_INT))
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 04c268de7c..2b74547885 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -708,6 +708,10 @@ struct target_pollfd {
 #define TARGET_KDSKBMODE       0x4b45
 #define TARGET_KDGKBENT	       0x4B46	/* gets one entry in translation table */
 #define TARGET_KDGKBSENT       0x4B48	/* gets one function key string entry */
+#define TARGET_KDGKBLED        0x4B64	/* get led flags (not lights) */
+#define TARGET_KDSKBLED        0x4B65	/* set led flags (not lights) */
+#define TARGET_KDGETLED        0x4B31	/* return current led state */
+#define TARGET_KDSETLED        0x4B32	/* set led state [lights, not flags] */
 
 #define TARGET_SIOCATMARK      0x8905