Lines Matching refs:cmap
93 int fb_alloc_cmap_gfp(struct fb_cmap *cmap, int len, int transp, gfp_t flags) in fb_alloc_cmap_gfp() argument
100 if (cmap->len != len) { in fb_alloc_cmap_gfp()
101 fb_dealloc_cmap(cmap); in fb_alloc_cmap_gfp()
105 cmap->red = kzalloc(size, flags); in fb_alloc_cmap_gfp()
106 if (!cmap->red) in fb_alloc_cmap_gfp()
108 cmap->green = kzalloc(size, flags); in fb_alloc_cmap_gfp()
109 if (!cmap->green) in fb_alloc_cmap_gfp()
111 cmap->blue = kzalloc(size, flags); in fb_alloc_cmap_gfp()
112 if (!cmap->blue) in fb_alloc_cmap_gfp()
115 cmap->transp = kzalloc(size, flags); in fb_alloc_cmap_gfp()
116 if (!cmap->transp) in fb_alloc_cmap_gfp()
119 cmap->transp = NULL; in fb_alloc_cmap_gfp()
122 cmap->start = 0; in fb_alloc_cmap_gfp()
123 cmap->len = len; in fb_alloc_cmap_gfp()
124 ret = fb_copy_cmap(fb_default_cmap(len), cmap); in fb_alloc_cmap_gfp()
130 fb_dealloc_cmap(cmap); in fb_alloc_cmap_gfp()
134 int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp) in fb_alloc_cmap() argument
136 return fb_alloc_cmap_gfp(cmap, len, transp, GFP_ATOMIC); in fb_alloc_cmap()
148 void fb_dealloc_cmap(struct fb_cmap *cmap) in fb_dealloc_cmap() argument
150 kfree(cmap->red); in fb_dealloc_cmap()
151 kfree(cmap->green); in fb_dealloc_cmap()
152 kfree(cmap->blue); in fb_dealloc_cmap()
153 kfree(cmap->transp); in fb_dealloc_cmap()
155 cmap->red = cmap->green = cmap->blue = cmap->transp = NULL; in fb_dealloc_cmap()
156 cmap->len = 0; in fb_dealloc_cmap()
232 int fb_set_cmap(struct fb_cmap *cmap, struct fb_info *info) in fb_set_cmap() argument
238 red = cmap->red; in fb_set_cmap()
239 green = cmap->green; in fb_set_cmap()
240 blue = cmap->blue; in fb_set_cmap()
241 transp = cmap->transp; in fb_set_cmap()
242 start = cmap->start; in fb_set_cmap()
248 rc = info->fbops->fb_setcmap(cmap, info); in fb_set_cmap()
250 for (i = 0; i < cmap->len; i++) { in fb_set_cmap()
263 fb_copy_cmap(cmap, &info->cmap); in fb_set_cmap()
268 int fb_set_user_cmap(struct fb_cmap_user *cmap, struct fb_info *info) in fb_set_user_cmap() argument
270 int rc, size = cmap->len * sizeof(u16); in fb_set_user_cmap()
273 if (size < 0 || size < cmap->len) in fb_set_user_cmap()
277 rc = fb_alloc_cmap_gfp(&umap, cmap->len, cmap->transp != NULL, in fb_set_user_cmap()
281 if (copy_from_user(umap.red, cmap->red, size) || in fb_set_user_cmap()
282 copy_from_user(umap.green, cmap->green, size) || in fb_set_user_cmap()
283 copy_from_user(umap.blue, cmap->blue, size) || in fb_set_user_cmap()
284 (cmap->transp && copy_from_user(umap.transp, cmap->transp, size))) { in fb_set_user_cmap()
288 umap.start = cmap->start; in fb_set_user_cmap()