Lines Matching refs:cmap
92 int fb_alloc_cmap_gfp(struct fb_cmap *cmap, int len, int transp, gfp_t flags) in fb_alloc_cmap_gfp() argument
97 if (cmap->len != len) { in fb_alloc_cmap_gfp()
98 fb_dealloc_cmap(cmap); in fb_alloc_cmap_gfp()
102 cmap->red = kmalloc(size, flags); in fb_alloc_cmap_gfp()
103 if (!cmap->red) in fb_alloc_cmap_gfp()
105 cmap->green = kmalloc(size, flags); in fb_alloc_cmap_gfp()
106 if (!cmap->green) in fb_alloc_cmap_gfp()
108 cmap->blue = kmalloc(size, flags); in fb_alloc_cmap_gfp()
109 if (!cmap->blue) in fb_alloc_cmap_gfp()
112 cmap->transp = kmalloc(size, flags); in fb_alloc_cmap_gfp()
113 if (!cmap->transp) in fb_alloc_cmap_gfp()
116 cmap->transp = NULL; in fb_alloc_cmap_gfp()
119 cmap->start = 0; in fb_alloc_cmap_gfp()
120 cmap->len = len; in fb_alloc_cmap_gfp()
121 ret = fb_copy_cmap(fb_default_cmap(len), cmap); in fb_alloc_cmap_gfp()
127 fb_dealloc_cmap(cmap); in fb_alloc_cmap_gfp()
131 int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp) in fb_alloc_cmap() argument
133 return fb_alloc_cmap_gfp(cmap, len, transp, GFP_ATOMIC); in fb_alloc_cmap()
145 void fb_dealloc_cmap(struct fb_cmap *cmap) in fb_dealloc_cmap() argument
147 kfree(cmap->red); in fb_dealloc_cmap()
148 kfree(cmap->green); in fb_dealloc_cmap()
149 kfree(cmap->blue); in fb_dealloc_cmap()
150 kfree(cmap->transp); in fb_dealloc_cmap()
152 cmap->red = cmap->green = cmap->blue = cmap->transp = NULL; in fb_dealloc_cmap()
153 cmap->len = 0; in fb_dealloc_cmap()
227 int fb_set_cmap(struct fb_cmap *cmap, struct fb_info *info) in fb_set_cmap() argument
233 red = cmap->red; in fb_set_cmap()
234 green = cmap->green; in fb_set_cmap()
235 blue = cmap->blue; in fb_set_cmap()
236 transp = cmap->transp; in fb_set_cmap()
237 start = cmap->start; in fb_set_cmap()
243 rc = info->fbops->fb_setcmap(cmap, info); in fb_set_cmap()
245 for (i = 0; i < cmap->len; i++) { in fb_set_cmap()
258 fb_copy_cmap(cmap, &info->cmap); in fb_set_cmap()
263 int fb_set_user_cmap(struct fb_cmap_user *cmap, struct fb_info *info) in fb_set_user_cmap() argument
265 int rc, size = cmap->len * sizeof(u16); in fb_set_user_cmap()
268 if (size < 0 || size < cmap->len) in fb_set_user_cmap()
272 rc = fb_alloc_cmap_gfp(&umap, cmap->len, cmap->transp != NULL, in fb_set_user_cmap()
276 if (copy_from_user(umap.red, cmap->red, size) || in fb_set_user_cmap()
277 copy_from_user(umap.green, cmap->green, size) || in fb_set_user_cmap()
278 copy_from_user(umap.blue, cmap->blue, size) || in fb_set_user_cmap()
279 (cmap->transp && copy_from_user(umap.transp, cmap->transp, size))) { in fb_set_user_cmap()
283 umap.start = cmap->start; in fb_set_user_cmap()