From 41d5e8b0a564bf392d4a73aa23bb5eb42ee783cd Mon Sep 17 00:00:00 2001 From: Brett Gordon Date: Wed, 7 Oct 2015 11:29:24 -0400 Subject: [PATCH] coco3: tty: add getting/setting graphics mode to ioctl. --- Kernel/platform-coco3/devtty.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Kernel/platform-coco3/devtty.c b/Kernel/platform-coco3/devtty.c index f1d6f60d..0fe5055c 100644 --- a/Kernel/platform-coco3/devtty.c +++ b/Kernel/platform-coco3/devtty.c @@ -497,11 +497,24 @@ unsigned char vt_map(unsigned char c) int gfx_ioctl(uint8_t minor, uarg_t arg, char *ptr) { + if ( minor > 2 ) goto error; /* remove once DW get its own ioctl() */ if (arg >> 8 != 0x03) return vt_ioctl(minor, arg, ptr); if (arg == GFXIOC_GETINFO) - return uput(&display, ptr, sizeof(display)); - udata.u_error = ENOTTY; + return uput( ptytab[minor-1].fdisp, ptr, sizeof( struct display)); + if (arg == GFXIOC_GETMODE){ + uint8_t m=ugetc(ptr); + if( m > 3 ) goto error; + return uput( &fmodes[m], ptr, sizeof( struct display)); + } + if (arg == GFXIOC_SETMODE){ + uint8_t m=ugetc(ptr); + if( m > 3 ) goto error; + memcpy( &(ptytab[minor-1].gime), &(mode[m]), sizeof( struct mode_s ) ); + if( minor == curminor ) apply_gime( minor ); + return 0; + } + error: udata.u_error = ENOTTY; return -1; } -- 2.34.1