Example #1
0
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;
}
Example #2
0
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];
}
Example #3
0
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];
}
Example #4
0
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];
}
Example #5
0
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;
}
Example #6
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];
}
Example #7
0
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;
}