int tegra_dc_ext_check_windowattr(struct tegra_dc_ext *ext, struct tegra_dc_win *win) { long *addr; struct tegra_dc *dc = ext->dc; /* Check the window format */ addr = tegra_dc_parse_feature(dc, win->idx, GET_WIN_FORMATS); if (!test_bit(win->fmt, addr)) { dev_err(&dc->ndev->dev, "Color format of window %d is" " invalid.\n", win->idx); goto fail; } /* Check window size */ addr = tegra_dc_parse_feature(dc, win->idx, GET_WIN_SIZE); if (CHECK_SIZE(win->out_w, addr[MIN_WIDTH], addr[MAX_WIDTH]) || CHECK_SIZE(win->out_h, addr[MIN_HEIGHT], addr[MAX_HEIGHT])) { dev_err(&dc->ndev->dev, "Size of window %d is" " invalid.\n", win->idx); goto fail; } return 0; fail: return -EINVAL; }
int tegra_dc_feature_has_interlace(struct tegra_dc *dc, int win_idx) { long *addr = tegra_dc_parse_feature(dc, win_idx, HAS_INTERLACE); if (WARN_ONCE(!addr, "window does not exist")) return 0; return addr[INTERLACE]; }
int tegra_dc_feature_has_blocklinear(struct tegra_dc *dc, int win_idx) { long *addr = tegra_dc_parse_feature(dc, win_idx, HAS_BLOCKLINEAR); if (WARN_ONCE(!addr, "window does not exist")) return 0; return addr[BLOCK_LINEAR]; }
int tegra_dc_feature_has_tiling(struct tegra_dc *dc, int win_idx) { long *addr = tegra_dc_parse_feature(dc, win_idx, HAS_TILED); if (WARN_ONCE(!addr, "window does not exist")) return 0; return addr[TILED_LAYOUT]; }
int tegra_dc_feature_is_gen2_blender(struct tegra_dc *dc, int win_idx) { long *addr = tegra_dc_parse_feature(dc, win_idx, HAS_GEN2_BLEND); if (WARN_ONCE(!addr, "window does not exist")) return 0; if (addr[BLEND_GENERATION] == 2) return 1; return 0; }
int tegra_dc_feature_has_filter(struct tegra_dc *dc, int win_idx, int operation) { long *addr = tegra_dc_parse_feature(dc, win_idx, operation); if (WARN_ONCE(!addr, "window does not exist")) return 0; if (operation == HAS_V_FILTER) return addr[V_FILTER]; else return addr[H_FILTER]; }
int tegra_dc_feature_has_scaling(struct tegra_dc *dc, int win_idx) { int i; long *addr = tegra_dc_parse_feature(dc, win_idx, HAS_SCALE); if (WARN_ONCE(!addr, "window does not exist")) return 0; for (i = 0; i < ENTRY_SIZE; i++) if (addr[i] != 1) return 1; return 0; }