Lines Matching refs:fbdev

49 static int omapfb_fb_init(struct omapfb2_device *fbdev, struct fb_info *fbi);
50 static int omapfb_get_recommended_bpp(struct omapfb2_device *fbdev,
747 * fbdev framework callbacks
1137 /*struct omapfb2_device *fbdev = ofbi->fbdev;*/
1155 if (fbdev->ctrl->setcolreg)
1156 r = fbdev->ctrl->setcolreg(regno, red, green, blue,
1218 struct omapfb2_device *fbdev = ofbi->fbdev;
1226 omapfb_lock(fbdev);
1228 d = get_display_data(fbdev, display);
1240 omapfb_start_auto_update(fbdev, display);
1254 omapfb_stop_auto_update(fbdev, display);
1265 omapfb_unlock(fbdev);
1301 struct omapfb2_device *fbdev = ofbi->fbdev;
1321 dma_free_attrs(fbdev->dev, rg->size, rg->token, rg->dma_handle,
1338 static int omapfb_free_all_fbmem(struct omapfb2_device *fbdev)
1344 for (i = 0; i < fbdev->num_fbs; i++) {
1345 struct fb_info *fbi = fbdev->fbs[i];
1357 struct omapfb2_device *fbdev = ofbi->fbdev;
1383 token = dma_alloc_attrs(fbdev->dev, size, &dma_handle,
1387 dev_err(fbdev->dev, "failed to allocate framebuffer\n");
1397 dma_free_attrs(fbdev->dev, size, token, dma_handle,
1399 dev_err(fbdev->dev, "vrfb create ctx failed\n");
1421 struct omapfb2_device *fbdev = ofbi->fbdev;
1430 switch (omapfb_get_recommended_bpp(fbdev, display)) {
1523 static int omapfb_allocate_all_fbs(struct omapfb2_device *fbdev)
1534 dev_err(fbdev->dev, "failed to parse vram parameter\n");
1540 for (i = 0; i < fbdev->num_fbs; i++) {
1544 r = omapfb_alloc_fbmem_display(fbdev->fbs[i],
1552 for (i = 0; i < fbdev->num_fbs; i++) {
1553 struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]);
1584 struct omapfb2_device *fbdev = ofbi->fbdev;
1623 r = omapfb_fb_init(fbdev, fbi);
1662 struct omapfb2_device *fbdev;
1669 fbdev = d->fbdev;
1683 queue_delayed_work(fbdev->auto_update_wq,
1687 void omapfb_start_auto_update(struct omapfb2_device *fbdev,
1692 if (fbdev->auto_update_wq == NULL) {
1698 dev_err(fbdev->dev, "Failed to create workqueue for "
1703 fbdev->auto_update_wq = wq;
1706 d = get_display_data(fbdev, display);
1715 void omapfb_stop_auto_update(struct omapfb2_device *fbdev,
1720 d = get_display_data(fbdev, display);
1728 static int omapfb_fb_init(struct omapfb2_device *fbdev, struct fb_info *fbi)
1736 fbi->pseudo_palette = fbdev->pseudo_palette;
1767 switch (omapfb_get_recommended_bpp(fbdev, display)) {
1775 dev_err(fbdev->dev, "illegal display "
1801 dev_err(fbdev->dev, "unable to allocate color map memory\n");
1807 static void fbinfo_cleanup(struct omapfb2_device *fbdev, struct fb_info *fbi)
1813 static void omapfb_free_resources(struct omapfb2_device *fbdev)
1819 if (fbdev == NULL)
1822 for (i = 0; i < fbdev->num_overlays; i++) {
1823 struct omap_overlay *ovl = fbdev->overlays[i];
1831 for (i = 0; i < fbdev->num_fbs; i++)
1832 unregister_framebuffer(fbdev->fbs[i]);
1835 omapfb_free_all_fbmem(fbdev);
1837 for (i = 0; i < fbdev->num_fbs; i++) {
1838 fbinfo_cleanup(fbdev, fbdev->fbs[i]);
1839 framebuffer_release(fbdev->fbs[i]);
1842 for (i = 0; i < fbdev->num_displays; i++) {
1843 struct omap_dss_device *dssdev = fbdev->displays[i].dssdev;
1845 if (fbdev->displays[i].auto_update_work_enabled)
1846 omapfb_stop_auto_update(fbdev, dssdev);
1856 if (fbdev->auto_update_wq != NULL) {
1857 destroy_workqueue(fbdev->auto_update_wq);
1858 fbdev->auto_update_wq = NULL;
1861 dev_set_drvdata(fbdev->dev, NULL);
1864 static int omapfb_create_framebuffers(struct omapfb2_device *fbdev)
1868 fbdev->num_fbs = 0;
1878 fbdev->dev);
1884 fbdev->fbs[i] = fbi;
1887 ofbi->fbdev = fbdev;
1890 ofbi->region = &fbdev->regions[i];
1899 fbdev->num_fbs++;
1905 for (i = 0; i < min(fbdev->num_fbs, fbdev->num_overlays); i++) {
1906 struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]);
1908 ofbi->overlays[0] = fbdev->overlays[i];
1913 r = omapfb_allocate_all_fbs(fbdev);
1915 dev_err(fbdev->dev, "failed to allocate fbmem\n");
1922 for (i = 0; i < fbdev->num_fbs; i++) {
1923 struct fb_info *fbi = fbdev->fbs[i];
1927 r = omapfb_fb_init(fbdev, fbi);
1931 dev_err(fbdev->dev, "failed to setup fb_info\n");
1936 for (i = 0; i < fbdev->num_fbs; i++) {
1937 struct fb_info *fbi = fbdev->fbs[i];
1948 for (i = 0; i < fbdev->num_fbs; i++) {
1949 r = register_framebuffer(fbdev->fbs[i]);
1951 dev_err(fbdev->dev,
1959 for (i = 0; i < fbdev->num_fbs; i++) {
1960 struct fb_info *fbi = fbdev->fbs[i];
1968 dev_err(fbdev->dev, "failed to change mode\n");
1974 if (fbdev->num_fbs > 0) {
1975 struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[0]);
1985 dev_err(fbdev->dev,
2098 static int omapfb_set_def_mode(struct omapfb2_device *fbdev,
2110 d = get_display_data(fbdev, display);
2134 static int omapfb_get_recommended_bpp(struct omapfb2_device *fbdev,
2141 d = get_display_data(fbdev, dssdev);
2149 static int omapfb_parse_def_modes(struct omapfb2_device *fbdev)
2175 for (i = 0; i < fbdev->num_displays; ++i) {
2176 if (strcmp(fbdev->displays[i].dssdev->name,
2178 display = fbdev->displays[i].dssdev;
2188 r = omapfb_set_def_mode(fbdev, display, mode_str);
2302 static int omapfb_init_display(struct omapfb2_device *fbdev,
2311 dev_warn(fbdev->dev, "Failed to enable display '%s'\n",
2316 d = get_display_data(fbdev, dssdev);
2318 d->fbdev = fbdev;
2324 omapfb_start_auto_update(fbdev, dssdev);
2333 dev_err(fbdev->dev, "Failed to set TE\n");
2341 dev_err(fbdev->dev,
2352 static int omapfb_init_connections(struct omapfb2_device *fbdev,
2360 dev_err(fbdev->dev, "failed to connect default display\n");
2364 for (i = 0; i < fbdev->num_displays; ++i) {
2365 struct omap_dss_device *dssdev = fbdev->displays[i].dssdev;
2380 dev_err(fbdev->dev, "no ovl manager for the default display\n");
2384 for (i = 0; i < fbdev->num_overlays; i++) {
2385 struct omap_overlay *ovl = fbdev->overlays[i];
2392 dev_warn(fbdev->dev,
2401 omapfb_find_default_display(struct omapfb2_device *fbdev)
2414 for (i = 0; i < fbdev->num_displays; ++i) {
2417 dssdev = fbdev->displays[i].dssdev;
2431 for (i = 0; i < fbdev->num_displays; ++i) {
2435 dssdev = fbdev->displays[i].dssdev;
2446 return fbdev->displays[0].dssdev;
2451 struct omapfb2_device *fbdev = NULL;
2468 fbdev = devm_kzalloc(&pdev->dev, sizeof(struct omapfb2_device),
2470 if (fbdev == NULL) {
2485 mutex_init(&fbdev->mtx);
2487 fbdev->dev = &pdev->dev;
2488 platform_set_drvdata(pdev, fbdev);
2490 fbdev->num_displays = 0;
2504 d = &fbdev->displays[fbdev->num_displays++];
2512 if (fbdev->num_displays == 0) {
2518 fbdev->num_overlays = omap_dss_get_num_overlays();
2519 for (i = 0; i < fbdev->num_overlays; i++)
2520 fbdev->overlays[i] = omap_dss_get_overlay(i);
2522 fbdev->num_managers = omap_dss_get_num_overlay_managers();
2523 for (i = 0; i < fbdev->num_managers; i++)
2524 fbdev->managers[i] = omap_dss_get_overlay_manager(i);
2526 def_display = omapfb_find_default_display(fbdev);
2528 dev_err(fbdev->dev, "failed to find default display\n");
2533 r = omapfb_init_connections(fbdev, def_display);
2535 dev_err(fbdev->dev, "failed to init overlay connections\n");
2540 if (omapfb_parse_def_modes(fbdev))
2552 r = omapfb_create_framebuffers(fbdev);
2556 for (i = 0; i < fbdev->num_managers; i++) {
2558 mgr = fbdev->managers[i];
2561 dev_warn(fbdev->dev, "failed to apply dispc config\n");
2567 r = omapfb_init_display(fbdev, def_display);
2569 dev_err(fbdev->dev,
2577 r = omapfb_create_sysfs(fbdev);
2579 dev_err(fbdev->dev, "failed to create sysfs entries\n");
2588 dev_info(fbdev->dev, "using display '%s' mode %dx%d\n",
2595 omapfb_free_resources(fbdev);
2604 struct omapfb2_device *fbdev = platform_get_drvdata(pdev);
2608 omapfb_remove_sysfs(fbdev);
2610 omapfb_free_resources(fbdev);