Commit c27cce22 authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/display: add display platforms structure with platform members



Add a structure with a bitfield member for each platform and
subplatform, and initialize them in platform and subplatform descs.

The structure also contains a bitmap in a union for easier manipulation
of the bits. This, in turn, requires a bit of trickery with
INTEL_DISPLAY_PLATFORMS() to count the number of bits required for
DECLARE_BITMAP().

Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/bf1d828cd333d34862ad3198e282c9d294c6e1ad.1730144869.git.jani.nikula@intel.com


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent 8cbbc37d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ struct stepping_desc {
	.step_info.size = ARRAY_SIZE(_map)

struct subplatform_desc {
	struct intel_display_platforms platforms;
	enum intel_display_platform subplatform;
	const char *name;
	const u16 *pciidlist;
@@ -39,10 +40,12 @@ struct subplatform_desc {
};

#define SUBPLATFORM(_platform, _subplatform)				\
	.platforms._platform##_##_subplatform = 1,			\
	.subplatform = (INTEL_DISPLAY_##_platform##_##_subplatform),	\
	.name = #_subplatform

struct platform_desc {
	struct intel_display_platforms platforms;
	enum intel_display_platform platform;
	const char *name;
	const struct subplatform_desc *subplatforms;
@@ -51,6 +54,7 @@ struct platform_desc {
};

#define PLATFORM(_platform)			 \
	.platforms._platform = 1,		 \
	.platform = (INTEL_DISPLAY_##_platform), \
	.name = #_platform

+19 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@
#ifndef __INTEL_DISPLAY_DEVICE_H__
#define __INTEL_DISPLAY_DEVICE_H__

#include <linux/bitops.h>
#include <linux/types.h>

#include "intel_display_conversion.h"
@@ -106,6 +107,24 @@ enum intel_display_platform {

#undef __ENUM

#define __MEMBER(name) unsigned long name:1;
#define __COUNT(x) 1 +

#define __NUM_PLATFORMS (INTEL_DISPLAY_PLATFORMS(__COUNT) 0)

struct intel_display_platforms {
	union {
		struct {
			INTEL_DISPLAY_PLATFORMS(__MEMBER);
		};
		DECLARE_BITMAP(bitmap, __NUM_PLATFORMS);
	};
};

#undef __MEMBER
#undef __COUNT
#undef __NUM_PLATFORMS

#define DEV_INFO_DISPLAY_FOR_EACH_FLAG(func) \
	/* Keep in alphabetical order */ \
	func(cursor_needs_physical); \