Module Name: src Committed By: jakllsch Date: Wed Jan 25 16:11:54 UTC 2017
Modified Files: src/sys/dev/ic: igsfb.c Log Message: Map coprocessor registers before igsfb_hw_setup(), they are needed for setting up the video mode. To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/dev/ic/igsfb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ic/igsfb.c diff -u src/sys/dev/ic/igsfb.c:1.54 src/sys/dev/ic/igsfb.c:1.55 --- src/sys/dev/ic/igsfb.c:1.54 Wed Jan 25 15:51:07 2017 +++ src/sys/dev/ic/igsfb.c Wed Jan 25 16:11:54 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: igsfb.c,v 1.54 2017/01/25 15:51:07 jakllsch Exp $ */ +/* $NetBSD: igsfb.c,v 1.55 2017/01/25 16:11:54 jakllsch Exp $ */ /* * Copyright (c) 2002, 2003 Valeriy E. Ushakov @@ -31,7 +31,7 @@ * Integraphics Systems IGA 168x and CyberPro series. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: igsfb.c,v 1.54 2017/01/25 15:51:07 jakllsch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: igsfb.c,v 1.55 2017/01/25 16:11:54 jakllsch Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -279,6 +279,20 @@ igsfb_init_video(struct igsfb_devconfig } } + /* + * Map graphic coprocessor for mode setting and accelerated rasops. + */ + if (dc->dc_id >= 0x2000) { /* XXX */ + if (bus_space_map(dc->dc_iot, + dc->dc_iobase + IGS_COP_BASE_B, IGS_COP_SIZE, + dc->dc_ioflags, + &dc->dc_coph) != 0) + { + printf("unable to map COP registers\n"); + return 1; + } + } + igsfb_hw_setup(dc); /* @@ -289,6 +303,9 @@ igsfb_init_video(struct igsfb_devconfig dc->dc_memflags | BUS_SPACE_MAP_LINEAR, &dc->dc_fbh) != 0) { + if (dc->dc_id >= 0x2000) { /* XXX */ + bus_space_unmap(dc->dc_iot, dc->dc_coph, IGS_COP_SIZE); + } bus_space_unmap(dc->dc_iot, dc->dc_ioh, IGS_REG_SIZE); printf("unable to map framebuffer\n"); return 1; @@ -305,6 +322,9 @@ igsfb_init_video(struct igsfb_devconfig dc->dc_memflags | BUS_SPACE_MAP_LINEAR, &dc->dc_crh) != 0) { + if (dc->dc_id >= 0x2000) { /* XXX */ + bus_space_unmap(dc->dc_iot, dc->dc_coph, IGS_COP_SIZE); + } bus_space_unmap(dc->dc_iot, dc->dc_ioh, IGS_REG_SIZE); bus_space_unmap(dc->dc_memt, dc->dc_fbh, dc->dc_fbsz); printf("unable to map cursor sprite region\n"); @@ -336,18 +356,9 @@ igsfb_init_video(struct igsfb_devconfig dc->dc_curenb = 0; /* - * Map and init graphic coprocessor for accelerated rasops. + * Init graphic coprocessor for accelerated rasops. */ if (dc->dc_id >= 0x2000) { /* XXX */ - if (bus_space_map(dc->dc_iot, - dc->dc_iobase + IGS_COP_BASE_B, IGS_COP_SIZE, - dc->dc_ioflags, - &dc->dc_coph) != 0) - { - printf("unable to map COP registers\n"); - return 1; - } - /* XXX: hardcoded 8bpp */ bus_space_write_2(dc->dc_iot, dc->dc_coph, IGS_COP_SRC_MAP_WIDTH_REG,