[RFC] drm/i915: Use dedicated print_param functions

Michal Wajdeczko michal.wajdeczko at intel.com
Wed Oct 10 20:21:25 UTC 2018


Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
---
 drivers/gpu/drm/i915/i915_params.c | 37 ++++++++++++++++++++++---------------
 drivers/gpu/drm/i915/i915_params.h | 17 +++++++++++------
 2 files changed, 33 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
index bd6bd88..e04b20e 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -170,21 +170,28 @@ struct i915_params i915_modparams __read_mostly = {
 i915_param_named(enable_gvt, bool, 0400,
 	"Enable support for Intel GVT-g graphics virtualization host support(default:false)");
 
-static __always_inline void _print_param(struct drm_printer *p,
-					 const char *name,
-					 const char *type,
-					 const void *x)
+static __always_inline void
+_print_param_bool(struct drm_printer *p, const char *name, bool x)
 {
-	if (!__builtin_strcmp(type, "bool"))
-		drm_printf(p, "i915.%s=%s\n", name, yesno(*(const bool *)x));
-	else if (!__builtin_strcmp(type, "int"))
-		drm_printf(p, "i915.%s=%d\n", name, *(const int *)x);
-	else if (!__builtin_strcmp(type, "unsigned int"))
-		drm_printf(p, "i915.%s=%u\n", name, *(const unsigned int *)x);
-	else if (!__builtin_strcmp(type, "char *"))
-		drm_printf(p, "i915.%s=%s\n", name, *(const char **)x);
-	else
-		BUILD_BUG();
+	drm_printf(p, "i915.%s=%s\n", name, yesno(x));
+}
+
+static __always_inline void
+_print_param_int(struct drm_printer *p, const char *name, int x)
+{
+	drm_printf(p, "i915.%s=%d\n", name, x);
+}
+
+static __always_inline void
+_print_param_uint(struct drm_printer *p, const char *name, unsigned int x)
+{
+	drm_printf(p, "i915.%s=%u\n", name, x);
+}
+
+static __always_inline void
+_print_param_charp(struct drm_printer *p, const char *name, const char *x)
+{
+	drm_printf(p, "i915.%s=%s\n", name, x);
 }
 
 /**
@@ -196,7 +203,7 @@ static __always_inline void _print_param(struct drm_printer *p,
  */
 void i915_params_dump(const struct i915_params *params, struct drm_printer *p)
 {
-#define PRINT(T, x, ...) _print_param(p, #x, #T, &params->x);
+#define PRINT(T, x, ...) _print_param_##T(p, #x, params->x);
 	I915_PARAMS_FOR_EACH(PRINT);
 #undef PRINT
 }
diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
index 7e56c51..f0f643e 100644
--- a/drivers/gpu/drm/i915/i915_params.h
+++ b/drivers/gpu/drm/i915/i915_params.h
@@ -34,7 +34,7 @@
 #define ENABLE_GUC_LOAD_HUC		BIT(1)
 
 #define I915_PARAMS_FOR_EACH(param) \
-	param(char *, vbt_firmware, NULL) \
+	param(charp, vbt_firmware, NULL) \
 	param(int, modeset, -1) \
 	param(int, lvds_channel_mode, 0) \
 	param(int, panel_use_ssc, -1) \
@@ -47,13 +47,13 @@
 	param(int, invert_brightness, 0) \
 	param(int, enable_guc, 0) \
 	param(int, guc_log_level, -1) \
-	param(char *, guc_firmware_path, NULL) \
-	param(char *, huc_firmware_path, NULL) \
-	param(char *, dmc_firmware_path, NULL) \
+	param(charp, guc_firmware_path, NULL) \
+	param(charp, huc_firmware_path, NULL) \
+	param(charp, dmc_firmware_path, NULL) \
 	param(int, mmio_debug, 0) \
 	param(int, edp_vswing, 0) \
 	param(int, reset, 2) \
-	param(unsigned int, inject_load_failure, 0) \
+	param(uint, inject_load_failure, 0) \
 	/* leave bools at the end to not create holes */ \
 	param(bool, alpha_support, IS_ENABLED(CONFIG_DRM_I915_ALPHA_SUPPORT)) \
 	param(bool, enable_hangcheck, true) \
@@ -69,7 +69,12 @@
 	param(bool, enable_dpcd_backlight, false) \
 	param(bool, enable_gvt, false)
 
-#define MEMBER(T, member, ...) T member;
+typedef char * i915_param_type_charp;
+typedef int i915_param_type_int;
+typedef unsigned int i915_param_type_uint;
+typedef bool i915_param_type_bool;
+
+#define MEMBER(T, member, ...) i915_param_type_##T member;
 struct i915_params {
 	I915_PARAMS_FOR_EACH(MEMBER);
 };
-- 
1.9.1



More information about the Intel-gfx-trybot mailing list