}
#endif
-static void tegra_dc_add_modes(struct tegra_dc *dc)
-{
- struct fb_monspecs specs;
- int i;
-
- memset(&specs, 0, sizeof(specs));
- specs.max_x = dc->mode.h_active * 1000;
- specs.max_y = dc->mode.v_active * 1000;
- specs.modedb_len = dc->out->n_modes;
- specs.modedb = kzalloc(specs.modedb_len *
- sizeof(struct fb_videomode), GFP_KERNEL);
- if (specs.modedb == NULL) {
- dev_err(&dc->ndev->dev, "modedb allocation failed\n");
- return;
- }
- for (i = 0; i < dc->out->n_modes; i++)
- tegra_dc_to_fb_videomode(&specs.modedb[i],
- &dc->out->modes[i]);
- tegra_fb_update_monspecs(dc->fb, &specs, NULL);
-}
-
static int tegra_dc_probe(struct platform_device *ndev)
{
struct tegra_dc *dc;
}
}
- if (dc->out && dc->out->n_modes)
- tegra_dc_add_modes(dc);
-
if (dc->out && dc->out->hotplug_init)
dc->out->hotplug_init(&ndev->dev);
win->flags = TEGRA_WIN_FLAG_ENABLED;
win->global_alpha = 0xFF;
+ for (mode_idx = 0; mode_idx < dc->out->n_modes; mode_idx++) {
+ struct tegra_dc_mode mode = dc->out->modes[mode_idx];
+ struct fb_videomode vmode;
+
+ mode.pclk = dc->mode.pclk;
+
+ if (mode.pclk > 1000) {
+ tegra_dc_to_fb_videomode(&vmode, &mode);
+ fb_add_videomode(&vmode, &info->modelist);
+ }
+ }
+
if (fb_mem)
tegra_fb_set_par(info);
tegra_fb->info = info;
- dev_info(&ndev->dev, "probed\n");
-
if (fb_data->flags & TEGRA_FB_FLIP_ON_PROBE) {
tegra_dc_update_windows(&tegra_fb->win, 1);
tegra_dc_sync_windows(&tegra_fb->win, 1);
tegra_dc_program_bandwidth(tegra_fb->win->dc, true);
}
- for (mode_idx = 1; mode_idx < dc->out->n_modes; mode_idx++) {
- struct tegra_dc_mode mode = dc->out->modes[mode_idx];
- struct fb_videomode vmode;
-
- mode.pclk = dc->mode.pclk;
-
- if (mode.pclk > 1000) {
- tegra_dc_to_fb_videomode(&vmode, &mode);
- fb_add_videomode(&vmode, &info->modelist);
- }
- }
+ dev_info(&ndev->dev, "fb registered\n");
return tegra_fb;