From owner-p4-projects@FreeBSD.ORG Sat May 7 21:42:05 2005 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CBAA316A4DF; Sat, 7 May 2005 21:42:04 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9B66D16A4DD for ; Sat, 7 May 2005 21:42:04 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7220F43D9F for ; Sat, 7 May 2005 21:42:04 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j47Lg443098804 for ; Sat, 7 May 2005 21:42:04 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j47Lg4JE098801 for perforce@freebsd.org; Sat, 7 May 2005 21:42:04 GMT (envelope-from marcel@freebsd.org) Date: Sat, 7 May 2005 21:42:04 GMT Message-Id: <200505072142.j47Lg4JE098801@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 76664 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 May 2005 21:42:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=76664 Change 76664 by marcel@marcel_nfs on 2005/05/07 21:41:29 A bunch of changes. Most importantly: o Add dev/ic/vga.h for register definitions and the likes. o Design the hardware interface around bitblt. The vtc(4) driver will deal with cursors, fonts and the likes. o Revamp the vga(4) driver accordingly. This change makes the vtc(4) and vga(4) code non-functional, but instead paves the way towards the final goal. Compiles on: ia64. Affected files ... .. //depot/projects/tty/sys/conf/files#24 edit .. //depot/projects/tty/sys/dev/ic/vga.h#1 add .. //depot/projects/tty/sys/dev/vga/vga.c#4 edit .. //depot/projects/tty/sys/dev/vga/vga.h#4 edit .. //depot/projects/tty/sys/dev/vga/vga_bus_isa.c#2 edit .. //depot/projects/tty/sys/dev/vga/vga_bus_pci.c#2 edit .. //depot/projects/tty/sys/dev/vga/vga_con.c#1 add .. //depot/projects/tty/sys/dev/vga/vga_cons.c#6 delete .. //depot/projects/tty/sys/dev/vga/vga_cpu_alpha.c#3 edit .. //depot/projects/tty/sys/dev/vga/vga_cpu_amd64.c#3 edit .. //depot/projects/tty/sys/dev/vga/vga_cpu_i386.c#4 edit .. //depot/projects/tty/sys/dev/vga/vga_cpu_ia64.c#3 edit .. //depot/projects/tty/sys/dev/vga/vga_cpu_sparc64.c#2 edit .. //depot/projects/tty/sys/dev/vga/vga_vid.c#3 delete .. //depot/projects/tty/sys/dev/vtc/vtc_con.c#1 add .. //depot/projects/tty/sys/dev/vtc/vtc_con.h#1 add .. //depot/projects/tty/sys/dev/vtc/vtc_core.c#2 edit .. //depot/projects/tty/sys/dev/vtc/vtc_tty.c#1 add Differences ... ==== //depot/projects/tty/sys/conf/files#24 (text+ko) ==== @@ -916,9 +916,10 @@ dev/vga/vga.c optional vga dev/vga/vga_bus_isa.c optional vga isa dev/vga/vga_bus_pci.c optional vga pci -dev/vga/vga_cons.c optional vga +dev/vga/vga_con.c optional vga dev/vge/if_vge.c optional vge dev/vkbd/vkbd.c optional vkbd +dev/vtc/vtc_con.c optional vtc dev/vtc/vtc_core.c optional vtc dev/vx/if_vx.c optional vx dev/vx/if_vx_eisa.c optional vx eisa ==== //depot/projects/tty/sys/dev/vga/vga.c#4 (text+ko) ==== @@ -34,158 +34,60 @@ #include #include +#include #include struct vga_softc vga_console; devclass_t vga_devclass; char vga_device_name[] = "vga"; -int vga_curcol; -int vga_currow; - -static void -vga_write(struct vga_softc *sc, int y, int x, int ascii, int color) +int +vga_probe(struct vga_softc *sc) { - uint32_t ofs; - uint16_t w; - ofs = y * 160 + x * 2; - w = color * 256 + ascii; - bus_space_write_2(sc->vga_screen.bst, sc->vga_screen.bsh, ofs, w); + return (1); } -static void -vga_scrollup(struct vga_softc *sc) +int +vga_init(struct vga_softc *sc) { - uint32_t count, ofs; - uint16_t w; + int error; - ofs = 0; + sc->vga_screen = sc->vga_fb; + error = bus_space_subregion(sc->vga_fb.bst, sc->vga_fb.bsh, + (sc->vga_mono) ? 0x10000 : 0x18000, 4096, &sc->vga_screen.bsh); + if (error) + return (error); - /* Copy data on lower 24 lines 1 line up. */ - count = 24*80; - while (count--) { - w = bus_space_read_2(sc->vga_screen.bst, sc->vga_screen.bsh, - ofs + 160); - bus_space_write_2(sc->vga_screen.bst, sc->vga_screen.bsh, - ofs, w); - ofs += 2; - } + /* TODO -- set the VGA adapter in 640x480x16 mode */ - /* Clear bottom line. Use BG color of last character copied. */ - count = 80; - w = (w & 0xff00) | 0x20; - while (count--) { - bus_space_write_2(sc->vga_screen.bst, sc->vga_screen.bsh, - ofs, w); - ofs += 2; - } + sc->vga_enable = 1; + return (0); } -void -vga_setpos(struct vga_softc *sc, int row, int col) +int +vga_bitblt(struct vga_softc *sc, int x, int y) { - uint16_t ofs; - ofs = row * 80 + col; - bus_space_write_1(sc->vga_crtc.bst, sc->vga_crtc.bsh, 0, 14); - bus_space_write_1(sc->vga_crtc.bst, sc->vga_crtc.bsh, 1, ofs >> 8); - bus_space_write_1(sc->vga_crtc.bst, sc->vga_crtc.bsh, 0, 15); - bus_space_write_1(sc->vga_crtc.bst, sc->vga_crtc.bsh, 1, ofs & 0xff); -} - -void -vga_getpos(struct vga_softc *sc, int *row, int *col) -{ - uint16_t ofs; - - bus_space_write_1(sc->vga_crtc.bst, sc->vga_crtc.bsh, 0, 14); - ofs = bus_space_read_1(sc->vga_crtc.bst, sc->vga_crtc.bsh, 1) << 8; - bus_space_write_1(sc->vga_crtc.bst, sc->vga_crtc.bsh, 0, 15); - ofs |= bus_space_read_1(sc->vga_crtc.bst, sc->vga_crtc.bsh, 1) & 0xff; - *row = ofs / 80; - *col = ofs % 80; + return (0); } -void -vga_putc(struct vga_softc *sc, int c) -{ - int d; - - d = 1; - switch (c) { - case 0x07: /* bell */ - return; - case 0x08: /* backspace */ - c = ' '; - if (vga_curcol) - vga_curcol--; - d = 0; - break; - case 0x09: /* tab */ - vga_curcol = (vga_curcol + 8) & ~7; - if (vga_curcol < 80) { - vga_setpos(sc, vga_currow, vga_curcol); - return; - } - /* FALLTHOUGH */ - case 0x0a: /* linefeed */ - if (vga_currow == 24) - vga_scrollup(sc); - else - vga_currow++; - /* FALLTHROUGH */ - case 0x0d: /* carriage return */ - vga_curcol = 0; - vga_setpos(sc, vga_currow, vga_curcol); - return; - } - vga_write(sc, vga_currow, vga_curcol, c, 0x0f); - vga_curcol += d; - if (vga_curcol >= 80) { - vga_curcol = 0; - if (vga_currow == 24) - vga_scrollup(sc); - else - vga_currow++; - } - vga_setpos(sc, vga_currow, vga_curcol); -} - -void -vga_puts(struct vga_softc *sc, const char *s) -{ - - while (*s) - vga_putc(sc, *s++); -} - int vga_attach(device_t dev) { struct vga_softc *sc; int error; - uint32_t x, y; sc = device_get_softc(dev); - sc->vga_screen = sc->vga_fb; - error = bus_space_subregion(sc->vga_fb.bst, sc->vga_fb.bsh, - (sc->vga_mono) ? 0x10000 : 0x18000, 4096, &sc->vga_screen.bsh); - if (error) - return (error); - - sc->vga_enable = 1; - if (sc->vga_console) return (0); - for (y = 0; y < 25; y++) - for (x = 0; x < 80; x++) - vga_write(sc, y, x, ' ', 7); + error = vga_init(sc); + if (error) + return (error); - vga_currow = vga_curcol = 0; - vga_puts(sc, "Please wait...\r"); + /* TODO -- show beastie logo */ return (0); } ==== //depot/projects/tty/sys/dev/vga/vga.h#4 (text+ko) ==== @@ -29,9 +29,7 @@ #ifndef _DEV_VGA_VGA_H_ #define _DEV_VGA_VGA_H_ -#define VGA_REG_MISC 0x1c /* 0x3CC */ - -struct vga_space +struct vga_spc { bus_space_tag_t bst; bus_space_handle_t bsh; @@ -39,35 +37,34 @@ struct vga_softc { - struct consdev * vga_consdev; - device_t vga_dev; - dev_t vga_node; + device_t vga_dev; + dev_t vga_node; /* Device flags and state. */ - int vga_bustype:2; + int vga_bustype:2; #define VGA_BUSTYPE_ISA 1 #define VGA_BUSTYPE_PCI 2 - int vga_console:1; - int vga_enable:1; - int vga_mono:1; + int vga_console:1; + int vga_enable:1; + int vga_mono:1; /* Bus spaces */ - struct vga_space vga_space[4]; + struct vga_spc vga_spc[4]; #define VGA_RES_FB 0 #define VGA_RES_SCREEN 1 #define VGA_RES_REG 2 #define VGA_RES_CRTC 3 }; -#define vga_fb vga_space[VGA_RES_FB] -#define vga_screen vga_space[VGA_RES_SCREEN] -#define vga_reg vga_space[VGA_RES_REG] -#define vga_crtc vga_space[VGA_RES_CRTC] +#define vga_fb vga_spc[VGA_RES_FB] +#define vga_screen vga_spc[VGA_RES_SCREEN] +#define vga_reg vga_spc[VGA_RES_REG] +#define vga_crtc vga_spc[VGA_RES_CRTC] struct vga_consdata { - struct vga_space fb; - struct vga_space reg; - struct vga_space crtc; + struct vga_spc fb; + struct vga_spc reg; + struct vga_spc crtc; }; int vga_get_console(struct vga_consdata*); @@ -76,14 +73,18 @@ extern devclass_t vga_devclass; extern char vga_device_name[]; -extern int vga_curcol; -extern int vga_currow; +static __inline int +vga_is_mono(struct vga_spc *sp) +{ + uint8_t misc; + + misc = bus_space_read_1(sp->bst, sp->bsh, VGA_GEN_MISC_OUTPUT_R); + return ((misc & VGA_GEN_MO_IOA) ? 0 : 1); +} int vga_attach(device_t); - -void vga_getpos(struct vga_softc *, int *, int *); -void vga_putc(struct vga_softc *, int); -void vga_puts(struct vga_softc *, const char *); -void vga_setpos(struct vga_softc *, int, int); +int vga_bitblt(struct vga_softc *, int, int); +int vga_init(struct vga_softc *); +int vga_probe(struct vga_softc *); #endif /* _DEV_VGA_VGA_H_ */ ==== //depot/projects/tty/sys/dev/vga/vga_bus_isa.c#2 (text+ko) ==== @@ -39,6 +39,7 @@ #include #include +#include #include static int vga_isa_attach(device_t); ==== //depot/projects/tty/sys/dev/vga/vga_bus_pci.c#2 (text+ko) ==== @@ -39,6 +39,7 @@ #include #include +#include #include static int vga_pci_attach(device_t dev); @@ -66,8 +67,8 @@ if (res == NULL) return (ENXIO); - sc->vga_space[rid].bsh = rman_get_bushandle(res); - sc->vga_space[rid].bst = rman_get_bustag(res); + sc->vga_spc[rid].bsh = rman_get_bushandle(res); + sc->vga_spc[rid].bst = rman_get_bustag(res); return (0); } @@ -76,8 +77,6 @@ { struct vga_softc *sc; int error; - uint32_t crtc; - uint8_t x; /* * If VGA is the console, this device must be it. If not, then @@ -90,8 +89,10 @@ sc->vga_bustype = VGA_BUSTYPE_PCI; /* Set the legacy resources */ - bus_set_resource(dev, SYS_RES_MEMORY, VGA_RES_FB, 0xA0000, 0x20000); - bus_set_resource(dev, SYS_RES_IOPORT, VGA_RES_REG, 0x3c0, 0x10); + bus_set_resource(dev, SYS_RES_MEMORY, VGA_RES_FB, VGA_MEM_BASE, + VGA_MEM_SIZE); + bus_set_resource(dev, SYS_RES_IOPORT, VGA_RES_REG, VGA_IO0_BASE, + VGA_IO0_SIZE); error = vga_pci_alloc(dev, sc, SYS_RES_MEMORY, VGA_RES_FB); if (error) @@ -100,12 +101,11 @@ if (error) return (error); - /* Determine if the VGA controller is in colour or monochrome mode. */ - x = bus_space_read_1(sc->vga_reg.bst, sc->vga_reg.bsh, VGA_REG_MISC); - sc->vga_mono = (x & 1) ? 0 : 1; + /* Determine if the VGA controller is in color or monochrome mode. */ + sc->vga_mono = vga_is_mono(&sc->vga_reg); - crtc = (sc->vga_mono) ? 0x3b0 : 0x3d0; - bus_set_resource(dev, SYS_RES_IOPORT, VGA_RES_CRTC, crtc, 0x0c); + bus_set_resource(dev, SYS_RES_IOPORT, VGA_RES_CRTC, + (sc->vga_mono) ? VGA_IO1_MONO : VGA_IO1_COLOR, VGA_IO1_SIZE); error = vga_pci_alloc(dev, sc, SYS_RES_IOPORT, VGA_RES_CRTC); if (error) return (error); ==== //depot/projects/tty/sys/dev/vga/vga_cpu_alpha.c#3 (text+ko) ==== @@ -32,28 +32,18 @@ #include +#include #include int vga_get_console(struct vga_consdata *cd) { - int mono; - uint8_t misc; cd->fb.bst = busspace_isa_mem; - cd->fb.bsh = 0xA0000; + cd->fb.bsh = VGA_MEM_BASE; cd->reg.bst = busspace_isa_io; - cd->reg.bsh = 0x3c0; - - /* - * Determine if the VGA controller is in colour or monochrome mode. - * That way we know where the CRTC registers are. - */ - misc = bus_space_read_1(cd->reg.bst, cd->reg.bsh, VGA_REG_MISC); - mono = (misc & 1) ? 0 : 1; - + cd->reg.bsh = VGA_IO0_BASE; cd->crtc.bst = busspace_isa_io; - cd->crtc.bsh = (mono) ? 0x3b4 : 0x3d4; - + cd->crtc.bsh = (vga_is_mono(&cd->reg)) ? VGA_IO1_MONO : VGA_IO1_COLOR; return (0); } ==== //depot/projects/tty/sys/dev/vga/vga_cpu_amd64.c#3 (text+ko) ==== @@ -38,28 +38,18 @@ #include #include +#include #include int vga_get_console(struct vga_consdata *cd) { - int mono; - uint8_t misc; cd->fb.bst = AMD64_BUS_SPACE_MEM; - cd->fb.bsh = 0xA0000 + KERNBASE; + cd->fb.bsh = KERNBASE + VGA_MEM_BASE; cd->reg.bst = AMD64_BUS_SPACE_IO; - cd->reg.bsh = 0x3c0; - - /* - * Determine if the VGA controller is in colour or monochrome mode. - * That way we know where the CRTC registers are. - */ - misc = bus_space_read_1(cd->reg.bst, cd->reg.bsh, VGA_REG_MISC); - mono = (misc & 1) ? 0 : 1; - + cd->reg.bsh = VGA_IO0_BASE; cd->crtc.bst = AMD64_BUS_SPACE_IO; - cd->crtc.bsh = (mono) ? 0x3b4 : 0x3d4; - + cd->crtc.bsh = (vga_is_mono(&cd->reg)) ? VGA_IO1_MONO : VGA_IO1_COLOR; return (0); } ==== //depot/projects/tty/sys/dev/vga/vga_cpu_i386.c#4 (text+ko) ==== @@ -38,28 +38,18 @@ #include #include +#include #include int vga_get_console(struct vga_consdata *cd) { - int mono; - uint8_t misc; cd->fb.bst = I386_BUS_SPACE_MEM; - cd->fb.bsh = 0xA0000 + KERNBASE; + cd->fb.bsh = KERNBASE + VGA_MEM_BASE; cd->reg.bst = I386_BUS_SPACE_IO; - cd->reg.bsh = 0x3c0; - - /* - * Determine if the VGA controller is in colour or monochrome mode. - * That way we know where the CRTC registers are. - */ - misc = bus_space_read_1(cd->reg.bst, cd->reg.bsh, VGA_REG_MISC); - mono = (misc & 1) ? 0 : 1; - + cd->reg.bsh = VGA_IO0_BASE; cd->crtc.bst = I386_BUS_SPACE_IO; - cd->crtc.bsh = (mono) ? 0x3b4 : 0x3d4; - + cd->crtc.bsh = (vga_is_mono(&cd->reg)) ? VGA_IO1_MONO : VGA_IO1_COLOR; return (0); } ==== //depot/projects/tty/sys/dev/vga/vga_cpu_ia64.c#3 (text+ko) ==== @@ -32,28 +32,18 @@ #include +#include #include int vga_get_console(struct vga_consdata *cd) { - int mono; - uint8_t misc; cd->fb.bst = IA64_BUS_SPACE_MEM; - cd->fb.bsh = IA64_PHYS_TO_RR6(0xA0000); /* XXX */ + cd->fb.bsh = IA64_PHYS_TO_RR6(VGA_MEM_BASE); cd->reg.bst = IA64_BUS_SPACE_IO; - cd->reg.bsh = 0x3c0; - - /* - * Determine if the VGA controller is in colour or monochrome mode. - * That way we know where the CRTC registers are. - */ - misc = bus_space_read_1(cd->reg.bst, cd->reg.bsh, VGA_REG_MISC); - mono = (misc & 1) ? 0 : 1; - + cd->reg.bsh = VGA_IO0_BASE; cd->crtc.bst = IA64_BUS_SPACE_IO; - cd->crtc.bsh = (mono) ? 0x3b4 : 0x3d4; - + cd->crtc.bsh = (vga_is_mono(&cd->reg)) ? VGA_IO1_MONO : VGA_IO1_COLOR; return (0); } ==== //depot/projects/tty/sys/dev/vga/vga_cpu_sparc64.c#2 (text+ko) ==== @@ -28,15 +28,56 @@ __FBSDID("$FreeBSD$"); #include -#include +#include #include +#include + +#include +#include +#include #include int vga_get_console(struct vga_consdata *cd) { + static struct bus_space_tag bst_store[3]; + char odev[32]; + ihandle_t stdout; + phandle_t chosen, oh, options; - return (ENXIO); + /* + * Query OFW to see if we have a graphical console and whether + * it's actually a VGA. + */ + if ((options = OF_finddevice("/options")) == -1) + return (ENXIO); + if (OF_getprop(options, "output-device", odev, sizeof(odev)) == -1) + return (ENXIO); + if (strcmp(odev, "screen") != 0) + return (ENODEV); + if ((oh = OF_finddevice(odev)) == -1) + return (ENXIO); + if ((chosen = OF_finddevice("/chosen")) == -1) + return (ENXIO); + if (OF_getprop(chosen, "stdout", &stdout, sizeof(stdout)) == -1) + return (ENXIO); + if (OF_instance_to_package(stdout) != oh) + return (ENODEV); + + /* XXX check if it's a VGA. */ + + /* Construct the bus tags and handles. */ + cd->fb.bst = &bst_store[0]; + cd->fb.bsh = sparc64_fake_bustag(PCI_MEMORY_BUS_SPACE, 0x1ff000a0000, + cd->fb.bst); + cd->reg.bst = &bst_store[1]; + cd->reg.bsh = sparc64_fake_bustag(PCI_IO_BUS_SPACE, 0x1fe020003c0, + cd->reg.bst); + cd->crtc.bst = &bst_store[2]; + cd->crtc.bsh = (vga_is_mono(&cd->reg)) ? + sparc64_fake_bustag(PCI_IO_BUS_SPACE, 0x1fe020003b0, cd->crtc.bst) : + sparc64_fake_bustag(PCI_IO_BUS_SPACE, 0x1fe020003d0, cd->crtc.bst); + return (0); } ==== //depot/projects/tty/sys/dev/vtc/vtc_core.c#2 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2004 Marcel Moolenaar + * Copyright (c) 2003-2005 Marcel Moolenaar * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,154 +30,19 @@ #include #include #include -#include #include -#include #include -#include -#include -#include -#include -#include - -static d_close_t vtc_close; -static d_ioctl_t vtc_ioctl; -static d_mmap_t vtc_mmap; -static d_open_t vtc_open; - -static struct cdevsw vtc_cdevsw = { - .d_version = D_VERSION, - .d_open = vtc_open; - .d_close = vtc_close; - .d_ioctl = vtc_ioctl; - .d_mmap = vtc_mmap; - .d_name = "vtc", - .d_flags = D_TTY | D_NEEDGIANT, -}; - -static dev_t vtc_console; static int -vtc_open(dev_t dev, int flag, int mode, struct thread *td) -{ - struct uart_softc *sc; - struct tty *tp; - int error; - - sc = dev->si_drv1; - if (sc == NULL || sc->sc_leaving) - return (ENODEV); - - tp = dev->si_tty; - - loop: - if (sc->sc_opened) { - KASSERT(tp->t_state & TS_ISOPEN, ("foo")); - /* - * The device is open, so everything has been initialized. - * Handle conflicts. - */ - if (minor(dev) & UART_MINOR_CALLOUT) { - if (!sc->sc_callout) - return (EBUSY); - } else { - if (sc->sc_callout) { - if (flags & O_NONBLOCK) - return (EBUSY); - error = tsleep(sc, TTIPRI|PCATCH, "uartbi", 0); - if (error) - return (error); - sc = dev->si_drv1; - if (sc == NULL || sc->sc_leaving) - return (ENODEV); - goto loop; - } - } - if (tp->t_state & TS_XCLUDE && suser(td) != 0) - return (EBUSY); - } else { - KASSERT(!(tp->t_state & TS_ISOPEN), ("foo")); - /* - * The device isn't open, so there are no conflicts. - * Initialize it. Initialization is done twice in many - * cases: to preempt sleeping callin opens if we are - * callout, and to complete a callin open after DCD rises. - */ - sc->sc_callout = (minor(dev) & UART_MINOR_CALLOUT) ? 1 : 0; - tp->t_dev = dev; - - tp->t_cflag = TTYDEF_CFLAG; - tp->t_iflag = TTYDEF_IFLAG; - tp->t_lflag = TTYDEF_LFLAG; - tp->t_oflag = TTYDEF_OFLAG; - tp->t_ispeed = tp->t_ospeed = TTYDEF_SPEED; - ttychars(tp); - error = uart_tty_param(tp, &tp->t_termios); - if (error) - return (error); - /* - * Handle initial DCD. - */ - if ((sc->sc_hwsig & UART_SIG_DCD) || sc->sc_callout) - ttyld_modem(tp, 1); - } - /* - * Wait for DCD if necessary. - */ - if (!(tp->t_state & TS_CARR_ON) && !sc->sc_callout && - !(tp->t_cflag & CLOCAL) && !(flags & O_NONBLOCK)) { - error = tsleep(TSA_CARR_ON(tp), TTIPRI|PCATCH, "uartdcd", 0); - if (error) - return (error); - sc = dev->si_drv1; - if (sc == NULL || sc->sc_leaving) - return (ENODEV); - goto loop; - } - error = ttyopen(dev, tp); - if (error) - return (error); - error = ttyld_open(tp, dev); - if (error) - return (error); - - KASSERT(tp->t_state & TS_ISOPEN, ("foo")); - sc->sc_opened = 1; - return (0); -} - -static int -vtc_close(dev_t dev, int flag, int mode, struct thread *td) -{ -} - -static int -vtc_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td) -{ - - return (ttyioctl(dev, cmd, data, flag, td)); -} - -static int -vtc_mmap(dev_t dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot) -{ - - return (-1); -} - -static int vtc_modevent(module_t mod, int type, void *data) { - switch(type) { + switch (type) { case MOD_LOAD: - printf("vtc: \n"); - vtc_console = make_dev(&vtc_cdevsw, 0, UID_ROOT, GID_WHEEL, - 0666, "console"); + printf("vtc: \n"); return (0); case MOD_UNLOAD: - destroy_dev(vtc_console); return (0); case MOD_SHUTDOWN: