Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18c0d621 authored by Tomi Valkeinen's avatar Tomi Valkeinen
Browse files

drm/omap: change supported_modes to an array



enum omap_color_mode is a bitmask, so at the moment we present the
supported color modes as mask. To be able to move to fourccs, we need to
use an array to present the supported color modes.

As a first step towards fourccs, this patch changes the code to use an
array to store the enums.

Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
parent 22245f53
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1140,7 +1140,7 @@ static u32 dispc_ovl_get_burst_size(enum omap_plane_id plane)
	return unit * 8;
}

static enum omap_color_mode dispc_ovl_get_color_modes(enum omap_plane_id plane)
static const enum omap_color_mode *dispc_ovl_get_color_modes(enum omap_plane_id plane)
{
	return dss_feat_get_supported_color_modes(plane);
}
+88 −65
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ struct omap_dss_features {
	const int num_ovls;
	const enum omap_display_type *supported_displays;
	const enum omap_dss_output_id *supported_outputs;
	const enum omap_color_mode *supported_color_modes;
	const enum omap_color_mode **supported_color_modes;
	const enum omap_overlay_caps *overlay_caps;
	const struct dss_param_range *dss_params;

@@ -229,90 +229,104 @@ static const enum omap_dss_output_id omap5_dss_supported_outputs[] = {
	OMAP_DSS_OUTPUT_DSI2,
};

static const enum omap_color_mode omap2_dss_supported_color_modes[] = {
#define COLOR_ARRAY(arr...) (const enum omap_color_mode[]) { arr, 0 }

static const enum omap_color_mode *omap2_dss_supported_color_modes[] = {

	/* OMAP_DSS_GFX */
	OMAP_DSS_COLOR_RGB12U | OMAP_DSS_COLOR_RGB16 |
	OMAP_DSS_COLOR_RGB24U | OMAP_DSS_COLOR_RGB24P,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB12U, OMAP_DSS_COLOR_RGB16,
	OMAP_DSS_COLOR_RGB24U, OMAP_DSS_COLOR_RGB24P),

	/* OMAP_DSS_VIDEO1 */
	OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB24U |
	OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_YUV2 |
	OMAP_DSS_COLOR_UYVY,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB16, OMAP_DSS_COLOR_RGB24U,
	OMAP_DSS_COLOR_RGB24P, OMAP_DSS_COLOR_YUV2,
	OMAP_DSS_COLOR_UYVY),

	/* OMAP_DSS_VIDEO2 */
	OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB24U |
	OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_YUV2 |
	OMAP_DSS_COLOR_UYVY,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB16, OMAP_DSS_COLOR_RGB24U,
	OMAP_DSS_COLOR_RGB24P, OMAP_DSS_COLOR_YUV2,
	OMAP_DSS_COLOR_UYVY),
};

static const enum omap_color_mode omap3_dss_supported_color_modes[] = {
static const enum omap_color_mode *omap3_dss_supported_color_modes[] = {
	/* OMAP_DSS_GFX */
	OMAP_DSS_COLOR_RGB12U | OMAP_DSS_COLOR_ARGB16 |
	OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB24U |
	OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_ARGB32 |
	OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_RGBX32,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB12U, OMAP_DSS_COLOR_ARGB16,
	OMAP_DSS_COLOR_RGB16, OMAP_DSS_COLOR_RGB24U,
	OMAP_DSS_COLOR_RGB24P, OMAP_DSS_COLOR_ARGB32,
	OMAP_DSS_COLOR_RGBA32, OMAP_DSS_COLOR_RGBX32),

	/* OMAP_DSS_VIDEO1 */
	OMAP_DSS_COLOR_RGB24U | OMAP_DSS_COLOR_RGB24P |
	OMAP_DSS_COLOR_RGB12U | OMAP_DSS_COLOR_RGB16 |
	OMAP_DSS_COLOR_YUV2 | OMAP_DSS_COLOR_UYVY,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB24U, OMAP_DSS_COLOR_RGB24P,
	OMAP_DSS_COLOR_RGB12U, OMAP_DSS_COLOR_RGB16,
	OMAP_DSS_COLOR_YUV2, OMAP_DSS_COLOR_UYVY),

	/* OMAP_DSS_VIDEO2 */
	OMAP_DSS_COLOR_RGB12U | OMAP_DSS_COLOR_ARGB16 |
	OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB24U |
	OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_YUV2 |
	OMAP_DSS_COLOR_UYVY | OMAP_DSS_COLOR_ARGB32 |
	OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_RGBX32,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB12U, OMAP_DSS_COLOR_ARGB16,
	OMAP_DSS_COLOR_RGB16, OMAP_DSS_COLOR_RGB24U,
	OMAP_DSS_COLOR_RGB24P, OMAP_DSS_COLOR_YUV2,
	OMAP_DSS_COLOR_UYVY, OMAP_DSS_COLOR_ARGB32,
	OMAP_DSS_COLOR_RGBA32, OMAP_DSS_COLOR_RGBX32),
};

static const enum omap_color_mode omap4_dss_supported_color_modes[] = {
static const enum omap_color_mode *omap4_dss_supported_color_modes[] = {
	/* OMAP_DSS_GFX */
	OMAP_DSS_COLOR_RGB12U | OMAP_DSS_COLOR_ARGB16 |
	OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB24U |
	OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_ARGB32 |
	OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_RGBX32 |
	OMAP_DSS_COLOR_ARGB16_1555 | OMAP_DSS_COLOR_RGBX16 |
	OMAP_DSS_COLOR_RGBA16 | OMAP_DSS_COLOR_XRGB16_1555,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB12U, OMAP_DSS_COLOR_ARGB16,
	OMAP_DSS_COLOR_RGB16, OMAP_DSS_COLOR_RGB24U,
	OMAP_DSS_COLOR_RGB24P, OMAP_DSS_COLOR_ARGB32,
	OMAP_DSS_COLOR_RGBA32, OMAP_DSS_COLOR_RGBX32,
	OMAP_DSS_COLOR_ARGB16_1555, OMAP_DSS_COLOR_RGBX16,
	OMAP_DSS_COLOR_RGBA16, OMAP_DSS_COLOR_XRGB16_1555),

	/* OMAP_DSS_VIDEO1 */
	OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB12U |
	OMAP_DSS_COLOR_YUV2 | OMAP_DSS_COLOR_ARGB16_1555 |
	OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_NV12 |
	OMAP_DSS_COLOR_RGBA16 | OMAP_DSS_COLOR_RGB24U |
	OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_UYVY |
	OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 |
	OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 |
	OMAP_DSS_COLOR_RGBX32,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB16, OMAP_DSS_COLOR_RGB12U,
	OMAP_DSS_COLOR_YUV2, OMAP_DSS_COLOR_ARGB16_1555,
	OMAP_DSS_COLOR_RGBA32, OMAP_DSS_COLOR_NV12,
	OMAP_DSS_COLOR_RGBA16, OMAP_DSS_COLOR_RGB24U,
	OMAP_DSS_COLOR_RGB24P, OMAP_DSS_COLOR_UYVY,
	OMAP_DSS_COLOR_ARGB16, OMAP_DSS_COLOR_XRGB16_1555,
	OMAP_DSS_COLOR_ARGB32, OMAP_DSS_COLOR_RGBX16,
	OMAP_DSS_COLOR_RGBX32),

       /* OMAP_DSS_VIDEO2 */
	OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB12U |
	OMAP_DSS_COLOR_YUV2 | OMAP_DSS_COLOR_ARGB16_1555 |
	OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_NV12 |
	OMAP_DSS_COLOR_RGBA16 | OMAP_DSS_COLOR_RGB24U |
	OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_UYVY |
	OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 |
	OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 |
	OMAP_DSS_COLOR_RGBX32,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB16, OMAP_DSS_COLOR_RGB12U,
	OMAP_DSS_COLOR_YUV2, OMAP_DSS_COLOR_ARGB16_1555,
	OMAP_DSS_COLOR_RGBA32, OMAP_DSS_COLOR_NV12,
	OMAP_DSS_COLOR_RGBA16, OMAP_DSS_COLOR_RGB24U,
	OMAP_DSS_COLOR_RGB24P, OMAP_DSS_COLOR_UYVY,
	OMAP_DSS_COLOR_ARGB16, OMAP_DSS_COLOR_XRGB16_1555,
	OMAP_DSS_COLOR_ARGB32, OMAP_DSS_COLOR_RGBX16,
	OMAP_DSS_COLOR_RGBX32),

	/* OMAP_DSS_VIDEO3 */
	OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB12U |
	OMAP_DSS_COLOR_YUV2 | OMAP_DSS_COLOR_ARGB16_1555 |
	OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_NV12 |
	OMAP_DSS_COLOR_RGBA16 | OMAP_DSS_COLOR_RGB24U |
	OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_UYVY |
	OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 |
	OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 |
	OMAP_DSS_COLOR_RGBX32,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB16, OMAP_DSS_COLOR_RGB12U,
	OMAP_DSS_COLOR_YUV2, OMAP_DSS_COLOR_ARGB16_1555,
	OMAP_DSS_COLOR_RGBA32, OMAP_DSS_COLOR_NV12,
	OMAP_DSS_COLOR_RGBA16, OMAP_DSS_COLOR_RGB24U,
	OMAP_DSS_COLOR_RGB24P, OMAP_DSS_COLOR_UYVY,
	OMAP_DSS_COLOR_ARGB16, OMAP_DSS_COLOR_XRGB16_1555,
	OMAP_DSS_COLOR_ARGB32, OMAP_DSS_COLOR_RGBX16,
	OMAP_DSS_COLOR_RGBX32),

	/* OMAP_DSS_WB */
	OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB12U |
	OMAP_DSS_COLOR_YUV2 | OMAP_DSS_COLOR_ARGB16_1555 |
	OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_NV12 |
	OMAP_DSS_COLOR_RGBA16 | OMAP_DSS_COLOR_RGB24U |
	OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_UYVY |
	OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 |
	OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 |
	OMAP_DSS_COLOR_RGBX32,
	COLOR_ARRAY(
	OMAP_DSS_COLOR_RGB16, OMAP_DSS_COLOR_RGB12U,
	OMAP_DSS_COLOR_YUV2, OMAP_DSS_COLOR_ARGB16_1555,
	OMAP_DSS_COLOR_RGBA32, OMAP_DSS_COLOR_NV12,
	OMAP_DSS_COLOR_RGBA16, OMAP_DSS_COLOR_RGB24U,
	OMAP_DSS_COLOR_RGB24P, OMAP_DSS_COLOR_UYVY,
	OMAP_DSS_COLOR_ARGB16, OMAP_DSS_COLOR_XRGB16_1555,
	OMAP_DSS_COLOR_ARGB32, OMAP_DSS_COLOR_RGBX16,
	OMAP_DSS_COLOR_RGBX32),
};

static const enum omap_overlay_caps omap2_dss_overlay_caps[] = {
@@ -783,7 +797,7 @@ enum omap_dss_output_id dss_feat_get_supported_outputs(enum omap_channel channel
	return omap_current_dss_features->supported_outputs[channel];
}

enum omap_color_mode dss_feat_get_supported_color_modes(enum omap_plane_id plane)
const enum omap_color_mode *dss_feat_get_supported_color_modes(enum omap_plane_id plane)
{
	return omap_current_dss_features->supported_color_modes[plane];
}
@@ -796,8 +810,17 @@ enum omap_overlay_caps dss_feat_get_overlay_caps(enum omap_plane_id plane)
bool dss_feat_color_mode_supported(enum omap_plane_id plane,
		enum omap_color_mode color_mode)
{
	return omap_current_dss_features->supported_color_modes[plane] &
			color_mode;
	const enum omap_color_mode *modes;
	unsigned int i;

	modes = omap_current_dss_features->supported_color_modes[plane];

	for (i = 0; modes[i]; ++i) {
		if (modes[i] == color_mode)
			return true;
	}

	return false;
}

u32 dss_feat_get_buffer_size_unit(void)
+1 −1
Original line number Diff line number Diff line
@@ -104,6 +104,6 @@ enum omap_dss_output_id dss_feat_get_supported_outputs(enum omap_channel channel

int dss_feat_get_num_mgrs(void);
int dss_feat_get_num_ovls(void);
enum omap_color_mode dss_feat_get_supported_color_modes(enum omap_plane_id plane);
const enum omap_color_mode *dss_feat_get_supported_color_modes(enum omap_plane_id plane);

#endif
+1 −1
Original line number Diff line number Diff line
@@ -734,7 +734,7 @@ struct dispc_ops {
			const struct videomode *vm, bool mem_to_mem,
			enum omap_channel channel);

	enum omap_color_mode (*ovl_get_color_modes)(enum omap_plane_id plane);
	const enum omap_color_mode *(*ovl_get_color_modes)(enum omap_plane_id plane);
};

void dispc_set_ops(const struct dispc_ops *o);
+1 −1
Original line number Diff line number Diff line
@@ -151,7 +151,7 @@ struct drm_encoder *omap_connector_attached_encoder(
bool omap_connector_get_hdmi_mode(struct drm_connector *connector);

uint32_t omap_framebuffer_get_formats(uint32_t *pixel_formats,
		uint32_t max_formats, enum omap_color_mode supported_modes);
		uint32_t max_formats, const enum omap_color_mode *supported_modes);
struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
		struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd);
struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
Loading