Changes in uspace/drv/fb/kfb/port.c [8d2dd7f2:f4665bdc] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/fb/kfb/port.c
r8d2dd7f2 rf4665bdc 66 66 67 67 typedef struct { 68 sysarg_t paddr; 68 69 sysarg_t width; 69 70 sysarg_t height; … … 85 86 static vslmode_list_element_t pixel_mode; 86 87 87 static pixel_t color_table[16] = {88 [COLOR_BLACK] = 0x000000,89 [COLOR_BLUE] = 0x0000f0,90 [COLOR_GREEN] = 0x00f000,91 [COLOR_CYAN] = 0x00f0f0,92 [COLOR_RED] = 0xf00000,93 [COLOR_MAGENTA] = 0xf000f0,94 [COLOR_YELLOW] = 0xf0f000,95 [COLOR_WHITE] = 0xf0f0f0,96 97 [COLOR_BLACK + 8] = 0x000000,98 [COLOR_BLUE + 8] = 0x0000ff,99 [COLOR_GREEN + 8] = 0x00ff00,100 [COLOR_CYAN + 8] = 0x00ffff,101 [COLOR_RED + 8] = 0xff0000,102 [COLOR_MAGENTA + 8] = 0xff00ff,103 [COLOR_YELLOW + 8] = 0xffff00,104 [COLOR_WHITE + 8] = 0xffffff,105 };106 107 static inline void attrs_rgb(char_attrs_t attrs, pixel_t *bgcolor, pixel_t *fgcolor)108 {109 switch (attrs.type) {110 case CHAR_ATTR_STYLE:111 switch (attrs.val.style) {112 case STYLE_NORMAL:113 *bgcolor = color_table[COLOR_WHITE];114 *fgcolor = color_table[COLOR_BLACK];115 break;116 case STYLE_EMPHASIS:117 *bgcolor = color_table[COLOR_WHITE];118 *fgcolor = color_table[COLOR_RED];119 break;120 case STYLE_INVERTED:121 *bgcolor = color_table[COLOR_BLACK];122 *fgcolor = color_table[COLOR_WHITE];123 break;124 case STYLE_SELECTED:125 *bgcolor = color_table[COLOR_RED];126 *fgcolor = color_table[COLOR_WHITE];127 break;128 }129 break;130 case CHAR_ATTR_INDEX:131 *bgcolor = color_table[(attrs.val.index.bgcolor & 7) |132 ((attrs.val.index.attr & CATTR_BRIGHT) ? 8 : 0)];133 *fgcolor = color_table[(attrs.val.index.fgcolor & 7) |134 ((attrs.val.index.attr & CATTR_BRIGHT) ? 8 : 0)];135 break;136 case CHAR_ATTR_RGB:137 *bgcolor = attrs.val.rgb.bgcolor;138 *fgcolor = attrs.val.rgb.fgcolor;139 break;140 }141 }142 143 88 static int kfb_claim(visualizer_t *vs) 144 89 { 145 return EOK; 90 return physmem_map(kfb.paddr + kfb.offset, 91 ALIGN_UP(kfb.size, PAGE_SIZE) >> PAGE_WIDTH, 92 AS_AREA_READ | AS_AREA_WRITE, (void *) &kfb.addr); 146 93 } 147 94 148 95 static int kfb_yield(visualizer_t *vs) 149 96 { 97 int rc; 98 150 99 if (vs->mode_set) { 151 100 vs->ops.handle_damage = NULL; 152 101 } 153 102 103 rc = physmem_unmap(kfb.addr); 104 if (rc != EOK) 105 return rc; 106 107 kfb.addr = NULL; 154 108 return EOK; 155 109 } … … 211 165 { 212 166 visualizer_t *vsl; 167 int rc; 213 168 214 169 vsl = (visualizer_t *) ddf_fun_data_get((ddf_fun_t *)arg); 215 170 graph_visualizer_connection(vsl, iid, icall, NULL); 171 172 if (kfb.addr != NULL) { 173 rc = physmem_unmap(kfb.addr); 174 if (rc == EOK) 175 kfb.addr = NULL; 176 } 216 177 } 217 178 … … 266 227 kfb.width = width; 267 228 kfb.height = height; 229 kfb.paddr = paddr; 268 230 kfb.offset = offset; 269 231 kfb.scanline = scanline; … … 343 305 kfb.size = scanline * height; 344 306 kfb.addr = AS_AREA_ANY; 345 346 rc = physmem_map(paddr + offset,347 ALIGN_UP(kfb.size, PAGE_SIZE) >> PAGE_WIDTH,348 AS_AREA_READ | AS_AREA_WRITE, (void *) &kfb.addr);349 if (rc != EOK)350 return rc;351 307 352 308 ddf_fun_t *fun_vs = ddf_fun_create(dev, fun_exposed, "vsl0");
Note:
See TracChangeset
for help on using the changeset viewer.