MCPcopy Create free account
hub / github.com/F-Stack/f-stack / bcm_fb_setup_fbd

Function bcm_fb_setup_fbd

freebsd/arm/broadcom/bcm2835/bcm2835_fbd.c:111–171  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

109}
110
111static int
112bcm_fb_setup_fbd(struct bcmsc_softc *sc)
113{
114 struct bcm2835_fb_config fb;
115 device_t fbd;
116 int err;
117
118 err = bcm_fb_init(sc, &fb);
119 if (err)
120 return (err);
121
122 memset(&sc->info, 0, sizeof(sc->info));
123 sc->info.fb_name = device_get_nameunit(sc->dev);
124
125 sc->info.fb_vbase = (intptr_t)pmap_mapdev(fb.base, fb.size);
126 sc->info.fb_pbase = fb.base;
127 sc->info.fb_size = fb.size;
128 sc->info.fb_bpp = sc->info.fb_depth = fb.bpp;
129 sc->info.fb_stride = fb.pitch;
130 sc->info.fb_width = fb.xres;
131 sc->info.fb_height = fb.yres;
132#ifdef VM_MEMATTR_WRITE_COMBINING
133 sc->info.fb_flags = FB_FLAG_MEMATTR;
134 sc->info.fb_memattr = VM_MEMATTR_WRITE_COMBINING;
135#endif
136
137 if (sc->fbswap) {
138 switch (sc->info.fb_bpp) {
139 case 24:
140 vt_generate_cons_palette(sc->info.fb_cmap,
141 COLOR_FORMAT_RGB, 0xff, 0, 0xff, 8, 0xff, 16);
142 sc->info.fb_cmsize = 16;
143 break;
144 case 32:
145 vt_generate_cons_palette(sc->info.fb_cmap,
146 COLOR_FORMAT_RGB, 0xff, 16, 0xff, 8, 0xff, 0);
147 sc->info.fb_cmsize = 16;
148 break;
149 }
150 }
151
152 fbd = device_add_child(sc->dev, "fbd", device_get_unit(sc->dev));
153 if (fbd == NULL) {
154 device_printf(sc->dev, "Failed to add fbd child\n");
155 pmap_unmapdev(sc->info.fb_vbase, sc->info.fb_size);
156 return (ENXIO);
157 } else if (device_probe_and_attach(fbd) != 0) {
158 device_printf(sc->dev, "Failed to attach fbd device\n");
159 device_delete_child(sc->dev, fbd);
160 pmap_unmapdev(sc->info.fb_vbase, sc->info.fb_size);
161 return (ENXIO);
162 }
163
164 device_printf(sc->dev, "%dx%d(%dx%d@%d,%d) %dbpp\n", fb.xres, fb.yres,
165 fb.vxres, fb.vyres, fb.xoffset, fb.yoffset, fb.bpp);
166 device_printf(sc->dev,
167 "fbswap: %d, pitch %d, base 0x%08x, screen_size %d\n",
168 sc->fbswap, fb.pitch, fb.base, fb.size);

Callers 1

bcm_fb_attachFunction · 0.85

Calls 10

bcm_fb_initFunction · 0.85
memsetFunction · 0.85
device_get_nameunitFunction · 0.85
device_add_childFunction · 0.85
device_get_unitFunction · 0.85
device_printfFunction · 0.85
device_probe_and_attachFunction · 0.85
device_delete_childFunction · 0.85
pmap_mapdevFunction · 0.50
pmap_unmapdevFunction · 0.50

Tested by

no test coverage detected