mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-08 15:14:30 -04:00
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: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/bf1d828cd333d34862ad3198e282c9d294c6e1ad.1730144869.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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); \
|
||||
|
||||
Reference in New Issue
Block a user