Changes in uspace/drv/fb/kfb/port.c [f4665bdc:8d2dd7f2] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/fb/kfb/port.c
rf4665bdc r8d2dd7f2 66 66 67 67 typedef struct { 68 sysarg_t paddr;69 68 sysarg_t width; 70 69 sysarg_t height; … … 86 85 static vslmode_list_element_t pixel_mode; 87 86 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 88 143 static int kfb_claim(visualizer_t *vs) 89 144 { 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); 145 return EOK; 93 146 } 94 147 95 148 static int kfb_yield(visualizer_t *vs) 96 149 { 97 int rc;98 99 150 if (vs->mode_set) { 100 151 vs->ops.handle_damage = NULL; 101 152 } 102 153 103 rc = physmem_unmap(kfb.addr);104 if (rc != EOK)105 return rc;106 107 kfb.addr = NULL;108 154 return EOK; 109 155 } … … 165 211 { 166 212 visualizer_t *vsl; 167 int rc;168 213 169 214 vsl = (visualizer_t *) ddf_fun_data_get((ddf_fun_t *)arg); 170 215 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 }177 216 } 178 217 … … 227 266 kfb.width = width; 228 267 kfb.height = height; 229 kfb.paddr = paddr;230 268 kfb.offset = offset; 231 269 kfb.scanline = scanline; … … 305 343 kfb.size = scanline * height; 306 344 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; 307 351 308 352 ddf_fun_t *fun_vs = ddf_fun_create(dev, fun_exposed, "vsl0");
Note:
See TracChangeset
for help on using the changeset viewer.