Lines Matching +full:- +full:gp
1 /* sunxvr1000.c: Sun XVR-1000 fb driver for sparc64 systems
30 static int gfb_get_props(struct gfb_info *gp) in gfb_get_props() argument
32 gp->width = of_getintprop_default(gp->of_node, "width", 0); in gfb_get_props()
33 gp->height = of_getintprop_default(gp->of_node, "height", 0); in gfb_get_props()
34 gp->depth = of_getintprop_default(gp->of_node, "depth", 32); in gfb_get_props()
36 if (!gp->width || !gp->height) { in gfb_get_props()
38 gp->of_node); in gfb_get_props()
39 return -EINVAL; in gfb_get_props()
57 ((u32 *)info->pseudo_palette)[regno] = value; in gfb_setcolreg()
69 static int gfb_set_fbinfo(struct gfb_info *gp) in gfb_set_fbinfo() argument
71 struct fb_info *info = gp->info; in gfb_set_fbinfo()
72 struct fb_var_screeninfo *var = &info->var; in gfb_set_fbinfo()
74 info->fbops = &gfb_ops; in gfb_set_fbinfo()
75 info->screen_base = gp->fb_base; in gfb_set_fbinfo()
76 info->screen_size = gp->fb_size; in gfb_set_fbinfo()
78 info->pseudo_palette = gp->pseudo_palette; in gfb_set_fbinfo()
81 strscpy(info->fix.id, "gfb", sizeof(info->fix.id)); in gfb_set_fbinfo()
82 info->fix.smem_start = gp->fb_base_phys; in gfb_set_fbinfo()
83 info->fix.smem_len = gp->fb_size; in gfb_set_fbinfo()
84 info->fix.type = FB_TYPE_PACKED_PIXELS; in gfb_set_fbinfo()
85 if (gp->depth == 32 || gp->depth == 24) in gfb_set_fbinfo()
86 info->fix.visual = FB_VISUAL_TRUECOLOR; in gfb_set_fbinfo()
88 info->fix.visual = FB_VISUAL_PSEUDOCOLOR; in gfb_set_fbinfo()
90 var->xres = gp->width; in gfb_set_fbinfo()
91 var->yres = gp->height; in gfb_set_fbinfo()
92 var->xres_virtual = var->xres; in gfb_set_fbinfo()
93 var->yres_virtual = var->yres; in gfb_set_fbinfo()
94 var->bits_per_pixel = gp->depth; in gfb_set_fbinfo()
96 var->red.offset = 0; in gfb_set_fbinfo()
97 var->red.length = 8; in gfb_set_fbinfo()
98 var->green.offset = 8; in gfb_set_fbinfo()
99 var->green.length = 8; in gfb_set_fbinfo()
100 var->blue.offset = 16; in gfb_set_fbinfo()
101 var->blue.length = 8; in gfb_set_fbinfo()
102 var->transp.offset = 0; in gfb_set_fbinfo()
103 var->transp.length = 0; in gfb_set_fbinfo()
105 if (fb_alloc_cmap(&info->cmap, 256, 0)) { in gfb_set_fbinfo()
107 return -ENOMEM; in gfb_set_fbinfo()
115 struct device_node *dp = op->dev.of_node; in gfb_probe()
117 struct gfb_info *gp; in gfb_probe() local
120 info = framebuffer_alloc(sizeof(struct gfb_info), &op->dev); in gfb_probe()
122 err = -ENOMEM; in gfb_probe()
126 gp = info->par; in gfb_probe()
127 gp->info = info; in gfb_probe()
128 gp->of_node = dp; in gfb_probe()
130 gp->fb_base_phys = op->resource[6].start; in gfb_probe()
132 err = gfb_get_props(gp); in gfb_probe()
137 info->fix.line_length = 16384; in gfb_probe()
138 gp->fb_size = info->fix.line_length * gp->height; in gfb_probe()
140 gp->fb_base = of_ioremap(&op->resource[6], 0, in gfb_probe()
141 gp->fb_size, "gfb fb"); in gfb_probe()
142 if (!gp->fb_base) { in gfb_probe()
143 err = -ENOMEM; in gfb_probe()
147 err = gfb_set_fbinfo(gp); in gfb_probe()
160 dev_set_drvdata(&op->dev, info); in gfb_probe()
165 of_iounmap(&op->resource[6], gp->fb_base, gp->fb_size); in gfb_probe()
193 return -ENODEV; in gfb_init()