Lines Matching defs: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
1135 /*struct omapfb2_device *fbdev = ofbi->fbdev;*/
1153 if (fbdev->ctrl->setcolreg)
1154 r = fbdev->ctrl->setcolreg(regno, red, green, blue,
1216 struct omapfb2_device *fbdev = ofbi->fbdev;
1224 omapfb_lock(fbdev);
1226 d = get_display_data(fbdev, display);
1238 omapfb_start_auto_update(fbdev, display);
1252 omapfb_stop_auto_update(fbdev, display);
1263 omapfb_unlock(fbdev);
1300 struct omapfb2_device *fbdev = ofbi->fbdev;
1320 dma_free_attrs(fbdev->dev, rg->size, rg->token, rg->dma_handle,
1337 static int omapfb_free_all_fbmem(struct omapfb2_device *fbdev)
1343 for (i = 0; i < fbdev->num_fbs; i++) {
1344 struct fb_info *fbi = fbdev->fbs[i];
1356 struct omapfb2_device *fbdev = ofbi->fbdev;
1382 token = dma_alloc_attrs(fbdev->dev, size, &dma_handle,
1386 dev_err(fbdev->dev, "failed to allocate framebuffer\n");
1396 dma_free_attrs(fbdev->dev, size, token, dma_handle,
1398 dev_err(fbdev->dev, "vrfb create ctx failed\n");
1420 struct omapfb2_device *fbdev = ofbi->fbdev;
1429 switch (omapfb_get_recommended_bpp(fbdev, display)) {
1522 static int omapfb_allocate_all_fbs(struct omapfb2_device *fbdev)
1533 dev_err(fbdev->dev, "failed to parse vram parameter\n");
1539 for (i = 0; i < fbdev->num_fbs; i++) {
1543 r = omapfb_alloc_fbmem_display(fbdev->fbs[i],
1551 for (i = 0; i < fbdev->num_fbs; i++) {
1552 struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]);
1583 struct omapfb2_device *fbdev = ofbi->fbdev;
1622 r = omapfb_fb_init(fbdev, fbi);
1661 struct omapfb2_device *fbdev;
1668 fbdev = d->fbdev;
1682 queue_delayed_work(fbdev->auto_update_wq,
1686 void omapfb_start_auto_update(struct omapfb2_device *fbdev,
1691 if (fbdev->auto_update_wq == NULL) {
1697 dev_err(fbdev->dev, "Failed to create workqueue for "
1702 fbdev->auto_update_wq = wq;
1705 d = get_display_data(fbdev, display);
1714 void omapfb_stop_auto_update(struct omapfb2_device *fbdev,
1719 d = get_display_data(fbdev, display);
1727 static int omapfb_fb_init(struct omapfb2_device *fbdev, struct fb_info *fbi)
1735 fbi->pseudo_palette = fbdev->pseudo_palette;
1766 switch (omapfb_get_recommended_bpp(fbdev, display)) {
1774 dev_err(fbdev->dev, "illegal display "
1800 dev_err(fbdev->dev, "unable to allocate color map memory\n");
1806 static void fbinfo_cleanup(struct omapfb2_device *fbdev, struct fb_info *fbi)
1812 static void omapfb_free_resources(struct omapfb2_device *fbdev)
1818 if (fbdev == NULL)
1821 for (i = 0; i < fbdev->num_overlays; i++) {
1822 struct omap_overlay *ovl = fbdev->overlays[i];
1830 for (i = 0; i < fbdev->num_fbs; i++)
1831 unregister_framebuffer(fbdev->fbs[i]);
1834 omapfb_free_all_fbmem(fbdev);
1836 for (i = 0; i < fbdev->num_fbs; i++) {
1837 fbinfo_cleanup(fbdev, fbdev->fbs[i]);
1838 framebuffer_release(fbdev->fbs[i]);
1841 for (i = 0; i < fbdev->num_displays; i++) {
1842 struct omap_dss_device *dssdev = fbdev->displays[i].dssdev;
1844 if (fbdev->displays[i].auto_update_work_enabled)
1845 omapfb_stop_auto_update(fbdev, dssdev);
1855 if (fbdev->auto_update_wq != NULL) {
1856 destroy_workqueue(fbdev->auto_update_wq);
1857 fbdev->auto_update_wq = NULL;
1860 dev_set_drvdata(fbdev->dev, NULL);
1863 static int omapfb_create_framebuffers(struct omapfb2_device *fbdev)
1867 fbdev->num_fbs = 0;
1877 fbdev->dev);
1883 fbdev->fbs[i] = fbi;
1886 ofbi->fbdev = fbdev;
1889 ofbi->region = &fbdev->regions[i];
1898 fbdev->num_fbs++;
1904 for (i = 0; i < min(fbdev->num_fbs, fbdev->num_overlays); i++) {
1905 struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]);
1907 ofbi->overlays[0] = fbdev->overlays[i];
1912 r = omapfb_allocate_all_fbs(fbdev);
1914 dev_err(fbdev->dev, "failed to allocate fbmem\n");
1921 for (i = 0; i < fbdev->num_fbs; i++) {
1922 struct fb_info *fbi = fbdev->fbs[i];
1926 r = omapfb_fb_init(fbdev, fbi);
1930 dev_err(fbdev->dev, "failed to setup fb_info\n");
1935 for (i = 0; i < fbdev->num_fbs; i++) {
1936 struct fb_info *fbi = fbdev->fbs[i];
1947 for (i = 0; i < fbdev->num_fbs; i++) {
1948 r = register_framebuffer(fbdev->fbs[i]);
1950 dev_err(fbdev->dev,
1958 for (i = 0; i < fbdev->num_fbs; i++) {
1959 struct fb_info *fbi = fbdev->fbs[i];
1967 dev_err(fbdev->dev, "failed to change mode\n");
1973 if (fbdev->num_fbs > 0) {
1974 struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[0]);
1984 dev_err(fbdev->dev,
2097 static int omapfb_set_def_mode(struct omapfb2_device *fbdev,
2109 d = get_display_data(fbdev, display);
2133 static int omapfb_get_recommended_bpp(struct omapfb2_device *fbdev,
2140 d = get_display_data(fbdev, dssdev);
2148 static int omapfb_parse_def_modes(struct omapfb2_device *fbdev)
2174 for (i = 0; i < fbdev->num_displays; ++i) {
2175 if (strcmp(fbdev->displays[i].dssdev->name,
2177 display = fbdev->displays[i].dssdev;
2187 r = omapfb_set_def_mode(fbdev, display, mode_str);
2301 static int omapfb_init_display(struct omapfb2_device *fbdev,
2310 dev_warn(fbdev->dev, "Failed to enable display '%s'\n",
2315 d = get_display_data(fbdev, dssdev);
2317 d->fbdev = fbdev;
2323 omapfb_start_auto_update(fbdev, dssdev);
2332 dev_err(fbdev->dev, "Failed to set TE\n");
2340 dev_err(fbdev->dev,
2351 static int omapfb_init_connections(struct omapfb2_device *fbdev,
2359 dev_err(fbdev->dev, "failed to connect default display\n");
2363 for (i = 0; i < fbdev->num_displays; ++i) {
2364 struct omap_dss_device *dssdev = fbdev->displays[i].dssdev;
2379 dev_err(fbdev->dev, "no ovl manager for the default display\n");
2383 for (i = 0; i < fbdev->num_overlays; i++) {
2384 struct omap_overlay *ovl = fbdev->overlays[i];
2391 dev_warn(fbdev->dev,
2400 omapfb_find_default_display(struct omapfb2_device *fbdev)
2413 for (i = 0; i < fbdev->num_displays; ++i) {
2416 dssdev = fbdev->displays[i].dssdev;
2430 for (i = 0; i < fbdev->num_displays; ++i) {
2434 dssdev = fbdev->displays[i].dssdev;
2445 return fbdev->displays[0].dssdev;
2450 struct omapfb2_device *fbdev = NULL;
2467 fbdev = devm_kzalloc(&pdev->dev, sizeof(struct omapfb2_device),
2469 if (fbdev == NULL) {
2484 mutex_init(&fbdev->mtx);
2486 fbdev->dev = &pdev->dev;
2487 platform_set_drvdata(pdev, fbdev);
2489 fbdev->num_displays = 0;
2503 d = &fbdev->displays[fbdev->num_displays++];
2511 if (fbdev->num_displays == 0) {
2517 fbdev->num_overlays = omap_dss_get_num_overlays();
2518 for (i = 0; i < fbdev->num_overlays; i++)
2519 fbdev->overlays[i] = omap_dss_get_overlay(i);
2521 fbdev->num_managers = omap_dss_get_num_overlay_managers();
2522 for (i = 0; i < fbdev->num_managers; i++)
2523 fbdev->managers[i] = omap_dss_get_overlay_manager(i);
2525 def_display = omapfb_find_default_display(fbdev);
2527 dev_err(fbdev->dev, "failed to find default display\n");
2532 r = omapfb_init_connections(fbdev, def_display);
2534 dev_err(fbdev->dev, "failed to init overlay connections\n");
2539 if (omapfb_parse_def_modes(fbdev))
2551 r = omapfb_create_framebuffers(fbdev);
2555 for (i = 0; i < fbdev->num_managers; i++) {
2557 mgr = fbdev->managers[i];
2560 dev_warn(fbdev->dev, "failed to apply dispc config\n");
2566 r = omapfb_init_display(fbdev, def_display);
2568 dev_err(fbdev->dev,
2576 r = omapfb_create_sysfs(fbdev);
2578 dev_err(fbdev->dev, "failed to create sysfs entries\n");
2587 dev_info(fbdev->dev, "using display '%s' mode %dx%d\n",
2594 omapfb_free_resources(fbdev);
2603 struct omapfb2_device *fbdev = platform_get_drvdata(pdev);
2607 omapfb_remove_sysfs(fbdev);
2609 omapfb_free_resources(fbdev);