* [PATCH 1/4] drm: Print pretty names for pixel formats
@ 2013-06-07 15:43 ville.syrjala
2013-06-07 15:43 ` [PATCH 2/4] drm/i915: " ville.syrjala
` (3 more replies)
0 siblings, 4 replies; 14+ messages in thread
From: ville.syrjala @ 2013-06-07 15:43 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Foo Bar <foo@bar.com>
Rather than just printing the pixel format as a hex number, decode the
fourcc into human readable form, and also decode the LE vs. BE flag.
Keep printing the raw hex number too in case it contains non-printable
characters.
Some examples what the new drm_get_format_name() produces:
DRM_FORMAT_XRGB8888: "XR24 little-endian (0x34325258)"
DRM_FORMAT_YUYV: "YUYV little-endian (0x56595559)"
DRM_FORMAT_RGB565|DRM_FORMAT_BIG_ENDIAN: "RG16 big-endian (0xb6314752)"
Unprintable characters: "D??? big-endian (0xff7f0244)"
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_crtc.c | 29 +++++++++++++++++++++++++++--
include/drm/drm_crtc.h | 1 +
2 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index e7e9242..079996a 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -29,6 +29,7 @@
* Dave Airlie <airlied@linux.ie>
* Jesse Barnes <jesse.barnes@intel.com>
*/
+#include <linux/ctype.h>
#include <linux/list.h>
#include <linux/slab.h>
#include <linux/export.h>
@@ -252,6 +253,28 @@ char *drm_get_connector_status_name(enum drm_connector_status status)
}
EXPORT_SYMBOL(drm_get_connector_status_name);
+static char printable_char(int c)
+{
+ return isascii(c) && isprint(c) ? c : '?';
+}
+
+char *drm_get_format_name(uint32_t format)
+{
+ static char buf[32];
+
+ snprintf(buf, sizeof(buf),
+ "%c%c%c%c %s-endian (0x%08x)",
+ printable_char(format & 0xff),
+ printable_char((format >> 8) & 0xff),
+ printable_char((format >> 16) & 0xff),
+ printable_char((format >> 24) & 0x7f),
+ format & DRM_FORMAT_BIG_ENDIAN ? "big" : "little",
+ format);
+
+ return buf;
+}
+EXPORT_SYMBOL(drm_get_format_name);
+
/**
* drm_mode_object_get - allocate a new modeset identifier
* @dev: DRM device
@@ -1834,7 +1857,8 @@ int drm_mode_setplane(struct drm_device *dev, void *data,
if (fb->pixel_format == plane->format_types[i])
break;
if (i == plane->format_count) {
- DRM_DEBUG_KMS("Invalid pixel format 0x%08x\n", fb->pixel_format);
+ DRM_DEBUG_KMS("Invalid pixel format %s\n",
+ drm_get_format_name(fb->pixel_format));
ret = -EINVAL;
goto out;
}
@@ -2312,7 +2336,8 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r)
ret = format_check(r);
if (ret) {
- DRM_DEBUG_KMS("bad framebuffer format 0x%08x\n", r->pixel_format);
+ DRM_DEBUG_KMS("bad framebuffer format %s\n",
+ drm_get_format_name(r->pixel_format));
return ret;
}
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index adb3f9b..2cbbfd4 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -1094,5 +1094,6 @@ extern int drm_format_num_planes(uint32_t format);
extern int drm_format_plane_cpp(uint32_t format, int plane);
extern int drm_format_horz_chroma_subsampling(uint32_t format);
extern int drm_format_vert_chroma_subsampling(uint32_t format);
+extern char *drm_get_format_name(uint32_t format);
#endif /* __DRM_CRTC_H__ */
--
1.8.1.5
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 2/4] drm/i915: Print pretty names for pixel formats
2013-06-07 15:43 [PATCH 1/4] drm: Print pretty names for pixel formats ville.syrjala
@ 2013-06-07 15:43 ` ville.syrjala
2013-06-07 15:43 ` ville.syrjala
` (2 subsequent siblings)
3 siblings, 0 replies; 14+ messages in thread
From: ville.syrjala @ 2013-06-07 15:43 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Use drm_get_format_name to print more readable pixel format names
in debug output.
Also unify the debug messages to say "unsupported pixel format",
which better describes what is going on.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 92fd0d4..d4886dc 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -9030,7 +9030,8 @@ int intel_framebuffer_init(struct drm_device *dev,
case DRM_FORMAT_XRGB1555:
case DRM_FORMAT_ARGB1555:
if (INTEL_INFO(dev)->gen > 3) {
- DRM_DEBUG("invalid format: 0x%08x\n", mode_cmd->pixel_format);
+ DRM_DEBUG("unsupported pixel format: %s\n",
+ drm_get_format_name(mode_cmd->pixel_format));
return -EINVAL;
}
break;
@@ -9041,7 +9042,8 @@ int intel_framebuffer_init(struct drm_device *dev,
case DRM_FORMAT_XBGR2101010:
case DRM_FORMAT_ABGR2101010:
if (INTEL_INFO(dev)->gen < 4) {
- DRM_DEBUG("invalid format: 0x%08x\n", mode_cmd->pixel_format);
+ DRM_DEBUG("unsupported pixel format: %s\n",
+ drm_get_format_name(mode_cmd->pixel_format));
return -EINVAL;
}
break;
@@ -9050,12 +9052,14 @@ int intel_framebuffer_init(struct drm_device *dev,
case DRM_FORMAT_YVYU:
case DRM_FORMAT_VYUY:
if (INTEL_INFO(dev)->gen < 5) {
- DRM_DEBUG("invalid format: 0x%08x\n", mode_cmd->pixel_format);
+ DRM_DEBUG("unsupported pixel format: %s\n",
+ drm_get_format_name(mode_cmd->pixel_format));
return -EINVAL;
}
break;
default:
- DRM_DEBUG("unsupported pixel format 0x%08x\n", mode_cmd->pixel_format);
+ DRM_DEBUG("unsupported pixel format: %s\n",
+ drm_get_format_name(mode_cmd->pixel_format));
return -EINVAL;
}
--
1.8.1.5
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/4] fb: Make fb_get_options() 'name' parameter const
2013-06-07 15:43 [PATCH 1/4] drm: Print pretty names for pixel formats ville.syrjala
@ 2013-06-07 15:43 ` ville.syrjala
2013-06-07 15:43 ` ville.syrjala
` (2 subsequent siblings)
3 siblings, 0 replies; 14+ messages in thread
From: ville.syrjala @ 2013-06-07 15:43 UTC (permalink / raw)
To: dri-devel
Cc: intel-gfx, Tomi Valkeinen, Jean-Christophe Plagniol-Villard,
linux-fbdev
From: Ville Syrj채l채 <ville.syrjala@linux.intel.com>
The string isn't modified so make it const.
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: linux-fbdev@vger.kernel.org
Signed-off-by: Ville Syrj채l채 <ville.syrjala@linux.intel.com>
---
drivers/video/fbmem.c | 2 +-
include/linux/fb.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 098bfc6..d8d5779 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1881,7 +1881,7 @@ static int ofonly __read_mostly;
*
* NOTE: Needed to maintain backwards compatibility
*/
-int fb_get_options(char *name, char **option)
+int fb_get_options(const char *name, char **option)
{
char *opt, *options = NULL;
int retval = 0;
diff --git a/include/linux/fb.h b/include/linux/fb.h
index d49c60f..ffac70a 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -624,7 +624,7 @@ extern void fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, u3
extern void fb_set_suspend(struct fb_info *info, int state);
extern int fb_get_color_depth(struct fb_var_screeninfo *var,
struct fb_fix_screeninfo *fix);
-extern int fb_get_options(char *name, char **option);
+extern int fb_get_options(const char *name, char **option);
extern int fb_new_modelist(struct fb_info *info);
extern struct fb_info *registered_fb[FB_MAX];
--
1.8.1.5
--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/4] fb: Make fb_get_options() 'name' parameter const
@ 2013-06-07 15:43 ` ville.syrjala
0 siblings, 0 replies; 14+ messages in thread
From: ville.syrjala @ 2013-06-07 15:43 UTC (permalink / raw)
To: dri-devel
Cc: intel-gfx, Tomi Valkeinen, Jean-Christophe Plagniol-Villard,
linux-fbdev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
The string isn't modified so make it const.
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: linux-fbdev@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/video/fbmem.c | 2 +-
include/linux/fb.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 098bfc6..d8d5779 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1881,7 +1881,7 @@ static int ofonly __read_mostly;
*
* NOTE: Needed to maintain backwards compatibility
*/
-int fb_get_options(char *name, char **option)
+int fb_get_options(const char *name, char **option)
{
char *opt, *options = NULL;
int retval = 0;
diff --git a/include/linux/fb.h b/include/linux/fb.h
index d49c60f..ffac70a 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -624,7 +624,7 @@ extern void fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, u3
extern void fb_set_suspend(struct fb_info *info, int state);
extern int fb_get_color_depth(struct fb_var_screeninfo *var,
struct fb_fix_screeninfo *fix);
-extern int fb_get_options(char *name, char **option);
+extern int fb_get_options(const char *name, char **option);
extern int fb_new_modelist(struct fb_info *info);
extern struct fb_info *registered_fb[FB_MAX];
--
1.8.1.5
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 4/4] drm: Constify the pretty-print functions
2013-06-07 15:43 [PATCH 1/4] drm: Print pretty names for pixel formats ville.syrjala
2013-06-07 15:43 ` [PATCH 2/4] drm/i915: " ville.syrjala
2013-06-07 15:43 ` ville.syrjala
@ 2013-06-07 15:43 ` ville.syrjala
2013-06-07 16:03 ` Daniel Vetter
2013-06-19 0:53 ` Laurent Pinchart
2013-06-07 20:09 ` [PATCH 1/4] drm: Print pretty names for pixel formats Dave Airlie
3 siblings, 2 replies; 14+ messages in thread
From: ville.syrjala @ 2013-06-07 15:43 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
The structures and strings involved with various pretty-print functions
aren't meant to be modified, so make them all const. The exception is
drm_connector_enum_list which does get modified in drm_connector_init().
While at it move the drm_get_connector_status_name() prototype from
drmP.h to drm_crtc.h where it belongs.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_crtc.c | 30 +++++++++++++++---------------
include/drm/drmP.h | 1 -
include/drm/drm_crtc.h | 17 +++++++++--------
3 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 079996a..44c3421 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -92,7 +92,7 @@ EXPORT_SYMBOL(drm_warn_on_modeset_not_all_locked);
/* Avoid boilerplate. I'm tired of typing. */
#define DRM_ENUM_NAME_FN(fnname, list) \
- char *fnname(int val) \
+ const char *fnname(int val) \
{ \
int i; \
for (i = 0; i < ARRAY_SIZE(list); i++) { \
@@ -105,7 +105,7 @@ EXPORT_SYMBOL(drm_warn_on_modeset_not_all_locked);
/*
* Global properties
*/
-static struct drm_prop_enum_list drm_dpms_enum_list[] =
+static const struct drm_prop_enum_list drm_dpms_enum_list[] =
{ { DRM_MODE_DPMS_ON, "On" },
{ DRM_MODE_DPMS_STANDBY, "Standby" },
{ DRM_MODE_DPMS_SUSPEND, "Suspend" },
@@ -117,7 +117,7 @@ DRM_ENUM_NAME_FN(drm_get_dpms_name, drm_dpms_enum_list)
/*
* Optional properties
*/
-static struct drm_prop_enum_list drm_scaling_mode_enum_list[] =
+static const struct drm_prop_enum_list drm_scaling_mode_enum_list[] =
{
{ DRM_MODE_SCALE_NONE, "None" },
{ DRM_MODE_SCALE_FULLSCREEN, "Full" },
@@ -125,7 +125,7 @@ static struct drm_prop_enum_list drm_scaling_mode_enum_list[] =
{ DRM_MODE_SCALE_ASPECT, "Full aspect" },
};
-static struct drm_prop_enum_list drm_dithering_mode_enum_list[] =
+static const struct drm_prop_enum_list drm_dithering_mode_enum_list[] =
{
{ DRM_MODE_DITHERING_OFF, "Off" },
{ DRM_MODE_DITHERING_ON, "On" },
@@ -135,7 +135,7 @@ static struct drm_prop_enum_list drm_dithering_mode_enum_list[] =
/*
* Non-global properties, but "required" for certain connectors.
*/
-static struct drm_prop_enum_list drm_dvi_i_select_enum_list[] =
+static const struct drm_prop_enum_list drm_dvi_i_select_enum_list[] =
{
{ DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */
{ DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */
@@ -144,7 +144,7 @@ static struct drm_prop_enum_list drm_dvi_i_select_enum_list[] =
DRM_ENUM_NAME_FN(drm_get_dvi_i_select_name, drm_dvi_i_select_enum_list)
-static struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] =
+static const struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] =
{
{ DRM_MODE_SUBCONNECTOR_Unknown, "Unknown" }, /* DVI-I and TV-out */
{ DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */
@@ -154,7 +154,7 @@ static struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] =
DRM_ENUM_NAME_FN(drm_get_dvi_i_subconnector_name,
drm_dvi_i_subconnector_enum_list)
-static struct drm_prop_enum_list drm_tv_select_enum_list[] =
+static const struct drm_prop_enum_list drm_tv_select_enum_list[] =
{
{ DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */
{ DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
@@ -165,7 +165,7 @@ static struct drm_prop_enum_list drm_tv_select_enum_list[] =
DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list)
-static struct drm_prop_enum_list drm_tv_subconnector_enum_list[] =
+static const struct drm_prop_enum_list drm_tv_subconnector_enum_list[] =
{
{ DRM_MODE_SUBCONNECTOR_Unknown, "Unknown" }, /* DVI-I and TV-out */
{ DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
@@ -177,7 +177,7 @@ static struct drm_prop_enum_list drm_tv_subconnector_enum_list[] =
DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name,
drm_tv_subconnector_enum_list)
-static struct drm_prop_enum_list drm_dirty_info_enum_list[] = {
+static const struct drm_prop_enum_list drm_dirty_info_enum_list[] = {
{ DRM_MODE_DIRTY_OFF, "Off" },
{ DRM_MODE_DIRTY_ON, "On" },
{ DRM_MODE_DIRTY_ANNOTATE, "Annotate" },
@@ -185,7 +185,7 @@ static struct drm_prop_enum_list drm_dirty_info_enum_list[] = {
struct drm_conn_prop_enum_list {
int type;
- char *name;
+ const char *name;
int count;
};
@@ -211,7 +211,7 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] =
{ DRM_MODE_CONNECTOR_VIRTUAL, "Virtual", 0},
};
-static struct drm_prop_enum_list drm_encoder_enum_list[] =
+static const struct drm_prop_enum_list drm_encoder_enum_list[] =
{ { DRM_MODE_ENCODER_NONE, "None" },
{ DRM_MODE_ENCODER_DAC, "DAC" },
{ DRM_MODE_ENCODER_TMDS, "TMDS" },
@@ -220,7 +220,7 @@ static struct drm_prop_enum_list drm_encoder_enum_list[] =
{ DRM_MODE_ENCODER_VIRTUAL, "Virtual" },
};
-char *drm_get_encoder_name(struct drm_encoder *encoder)
+const char *drm_get_encoder_name(const struct drm_encoder *encoder)
{
static char buf[32];
@@ -231,7 +231,7 @@ char *drm_get_encoder_name(struct drm_encoder *encoder)
}
EXPORT_SYMBOL(drm_get_encoder_name);
-char *drm_get_connector_name(struct drm_connector *connector)
+const char *drm_get_connector_name(const struct drm_connector *connector)
{
static char buf[32];
@@ -242,7 +242,7 @@ char *drm_get_connector_name(struct drm_connector *connector)
}
EXPORT_SYMBOL(drm_get_connector_name);
-char *drm_get_connector_status_name(enum drm_connector_status status)
+const char *drm_get_connector_status_name(enum drm_connector_status status)
{
if (status == connector_status_connected)
return "connected";
@@ -258,7 +258,7 @@ static char printable_char(int c)
return isascii(c) && isprint(c) ? c : '?';
}
-char *drm_get_format_name(uint32_t format)
+const char *drm_get_format_name(uint32_t format)
{
static char buf[32];
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index b06f5af..e931a65 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1598,7 +1598,6 @@ extern void drm_sysfs_destroy(void);
extern int drm_sysfs_device_add(struct drm_minor *minor);
extern void drm_sysfs_hotplug_event(struct drm_device *dev);
extern void drm_sysfs_device_remove(struct drm_minor *minor);
-extern char *drm_get_connector_status_name(enum drm_connector_status status);
extern int drm_sysfs_connector_add(struct drm_connector *connector);
extern void drm_sysfs_connector_remove(struct drm_connector *connector);
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 2cbbfd4..53c33e2 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -897,12 +897,13 @@ extern void drm_plane_cleanup(struct drm_plane *plane);
extern void drm_encoder_cleanup(struct drm_encoder *encoder);
-extern char *drm_get_connector_name(struct drm_connector *connector);
-extern char *drm_get_dpms_name(int val);
-extern char *drm_get_dvi_i_subconnector_name(int val);
-extern char *drm_get_dvi_i_select_name(int val);
-extern char *drm_get_tv_subconnector_name(int val);
-extern char *drm_get_tv_select_name(int val);
+extern const char *drm_get_connector_name(const struct drm_connector *connector);
+extern const char *drm_get_connector_status_name(enum drm_connector_status status);
+extern const char *drm_get_dpms_name(int val);
+extern const char *drm_get_dvi_i_subconnector_name(int val);
+extern const char *drm_get_dvi_i_select_name(int val);
+extern const char *drm_get_tv_subconnector_name(int val);
+extern const char *drm_get_tv_select_name(int val);
extern void drm_fb_release(struct drm_file *file_priv);
extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group);
extern bool drm_probe_ddc(struct i2c_adapter *adapter);
@@ -994,7 +995,7 @@ extern int drm_mode_create_tv_properties(struct drm_device *dev, int num_formats
extern int drm_mode_create_scaling_mode_property(struct drm_device *dev);
extern int drm_mode_create_dithering_property(struct drm_device *dev);
extern int drm_mode_create_dirty_info_property(struct drm_device *dev);
-extern char *drm_get_encoder_name(struct drm_encoder *encoder);
+extern const char *drm_get_encoder_name(const struct drm_encoder *encoder);
extern int drm_mode_connector_attach_encoder(struct drm_connector *connector,
struct drm_encoder *encoder);
@@ -1094,6 +1095,6 @@ extern int drm_format_num_planes(uint32_t format);
extern int drm_format_plane_cpp(uint32_t format, int plane);
extern int drm_format_horz_chroma_subsampling(uint32_t format);
extern int drm_format_vert_chroma_subsampling(uint32_t format);
-extern char *drm_get_format_name(uint32_t format);
+extern const char *drm_get_format_name(uint32_t format);
#endif /* __DRM_CRTC_H__ */
--
1.8.1.5
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 4/4] drm: Constify the pretty-print functions
2013-06-07 15:43 ` [PATCH 4/4] drm: Constify the pretty-print functions ville.syrjala
@ 2013-06-07 16:03 ` Daniel Vetter
2013-06-19 0:53 ` Laurent Pinchart
1 sibling, 0 replies; 14+ messages in thread
From: Daniel Vetter @ 2013-06-07 16:03 UTC (permalink / raw)
To: ville.syrjala; +Cc: intel-gfx, dri-devel
On Fri, Jun 07, 2013 at 06:43:07PM +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The structures and strings involved with various pretty-print functions
> aren't meant to be modified, so make them all const. The exception is
> drm_connector_enum_list which does get modified in drm_connector_init().
>
> While at it move the drm_get_connector_status_name() prototype from
> drmP.h to drm_crtc.h where it belongs.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Looks good to me, and probably simplest if we merge everything (including
drm/i915 parts) through drm-next. On the series:
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/gpu/drm/drm_crtc.c | 30 +++++++++++++++---------------
> include/drm/drmP.h | 1 -
> include/drm/drm_crtc.h | 17 +++++++++--------
> 3 files changed, 24 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 079996a..44c3421 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -92,7 +92,7 @@ EXPORT_SYMBOL(drm_warn_on_modeset_not_all_locked);
>
> /* Avoid boilerplate. I'm tired of typing. */
> #define DRM_ENUM_NAME_FN(fnname, list) \
> - char *fnname(int val) \
> + const char *fnname(int val) \
> { \
> int i; \
> for (i = 0; i < ARRAY_SIZE(list); i++) { \
> @@ -105,7 +105,7 @@ EXPORT_SYMBOL(drm_warn_on_modeset_not_all_locked);
> /*
> * Global properties
> */
> -static struct drm_prop_enum_list drm_dpms_enum_list[] =
> +static const struct drm_prop_enum_list drm_dpms_enum_list[] =
> { { DRM_MODE_DPMS_ON, "On" },
> { DRM_MODE_DPMS_STANDBY, "Standby" },
> { DRM_MODE_DPMS_SUSPEND, "Suspend" },
> @@ -117,7 +117,7 @@ DRM_ENUM_NAME_FN(drm_get_dpms_name, drm_dpms_enum_list)
> /*
> * Optional properties
> */
> -static struct drm_prop_enum_list drm_scaling_mode_enum_list[] =
> +static const struct drm_prop_enum_list drm_scaling_mode_enum_list[] =
> {
> { DRM_MODE_SCALE_NONE, "None" },
> { DRM_MODE_SCALE_FULLSCREEN, "Full" },
> @@ -125,7 +125,7 @@ static struct drm_prop_enum_list drm_scaling_mode_enum_list[] =
> { DRM_MODE_SCALE_ASPECT, "Full aspect" },
> };
>
> -static struct drm_prop_enum_list drm_dithering_mode_enum_list[] =
> +static const struct drm_prop_enum_list drm_dithering_mode_enum_list[] =
> {
> { DRM_MODE_DITHERING_OFF, "Off" },
> { DRM_MODE_DITHERING_ON, "On" },
> @@ -135,7 +135,7 @@ static struct drm_prop_enum_list drm_dithering_mode_enum_list[] =
> /*
> * Non-global properties, but "required" for certain connectors.
> */
> -static struct drm_prop_enum_list drm_dvi_i_select_enum_list[] =
> +static const struct drm_prop_enum_list drm_dvi_i_select_enum_list[] =
> {
> { DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */
> { DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */
> @@ -144,7 +144,7 @@ static struct drm_prop_enum_list drm_dvi_i_select_enum_list[] =
>
> DRM_ENUM_NAME_FN(drm_get_dvi_i_select_name, drm_dvi_i_select_enum_list)
>
> -static struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] =
> +static const struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] =
> {
> { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown" }, /* DVI-I and TV-out */
> { DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */
> @@ -154,7 +154,7 @@ static struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] =
> DRM_ENUM_NAME_FN(drm_get_dvi_i_subconnector_name,
> drm_dvi_i_subconnector_enum_list)
>
> -static struct drm_prop_enum_list drm_tv_select_enum_list[] =
> +static const struct drm_prop_enum_list drm_tv_select_enum_list[] =
> {
> { DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */
> { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
> @@ -165,7 +165,7 @@ static struct drm_prop_enum_list drm_tv_select_enum_list[] =
>
> DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list)
>
> -static struct drm_prop_enum_list drm_tv_subconnector_enum_list[] =
> +static const struct drm_prop_enum_list drm_tv_subconnector_enum_list[] =
> {
> { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown" }, /* DVI-I and TV-out */
> { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
> @@ -177,7 +177,7 @@ static struct drm_prop_enum_list drm_tv_subconnector_enum_list[] =
> DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name,
> drm_tv_subconnector_enum_list)
>
> -static struct drm_prop_enum_list drm_dirty_info_enum_list[] = {
> +static const struct drm_prop_enum_list drm_dirty_info_enum_list[] = {
> { DRM_MODE_DIRTY_OFF, "Off" },
> { DRM_MODE_DIRTY_ON, "On" },
> { DRM_MODE_DIRTY_ANNOTATE, "Annotate" },
> @@ -185,7 +185,7 @@ static struct drm_prop_enum_list drm_dirty_info_enum_list[] = {
>
> struct drm_conn_prop_enum_list {
> int type;
> - char *name;
> + const char *name;
> int count;
> };
>
> @@ -211,7 +211,7 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] =
> { DRM_MODE_CONNECTOR_VIRTUAL, "Virtual", 0},
> };
>
> -static struct drm_prop_enum_list drm_encoder_enum_list[] =
> +static const struct drm_prop_enum_list drm_encoder_enum_list[] =
> { { DRM_MODE_ENCODER_NONE, "None" },
> { DRM_MODE_ENCODER_DAC, "DAC" },
> { DRM_MODE_ENCODER_TMDS, "TMDS" },
> @@ -220,7 +220,7 @@ static struct drm_prop_enum_list drm_encoder_enum_list[] =
> { DRM_MODE_ENCODER_VIRTUAL, "Virtual" },
> };
>
> -char *drm_get_encoder_name(struct drm_encoder *encoder)
> +const char *drm_get_encoder_name(const struct drm_encoder *encoder)
> {
> static char buf[32];
>
> @@ -231,7 +231,7 @@ char *drm_get_encoder_name(struct drm_encoder *encoder)
> }
> EXPORT_SYMBOL(drm_get_encoder_name);
>
> -char *drm_get_connector_name(struct drm_connector *connector)
> +const char *drm_get_connector_name(const struct drm_connector *connector)
> {
> static char buf[32];
>
> @@ -242,7 +242,7 @@ char *drm_get_connector_name(struct drm_connector *connector)
> }
> EXPORT_SYMBOL(drm_get_connector_name);
>
> -char *drm_get_connector_status_name(enum drm_connector_status status)
> +const char *drm_get_connector_status_name(enum drm_connector_status status)
> {
> if (status == connector_status_connected)
> return "connected";
> @@ -258,7 +258,7 @@ static char printable_char(int c)
> return isascii(c) && isprint(c) ? c : '?';
> }
>
> -char *drm_get_format_name(uint32_t format)
> +const char *drm_get_format_name(uint32_t format)
> {
> static char buf[32];
>
> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index b06f5af..e931a65 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -1598,7 +1598,6 @@ extern void drm_sysfs_destroy(void);
> extern int drm_sysfs_device_add(struct drm_minor *minor);
> extern void drm_sysfs_hotplug_event(struct drm_device *dev);
> extern void drm_sysfs_device_remove(struct drm_minor *minor);
> -extern char *drm_get_connector_status_name(enum drm_connector_status status);
> extern int drm_sysfs_connector_add(struct drm_connector *connector);
> extern void drm_sysfs_connector_remove(struct drm_connector *connector);
>
> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
> index 2cbbfd4..53c33e2 100644
> --- a/include/drm/drm_crtc.h
> +++ b/include/drm/drm_crtc.h
> @@ -897,12 +897,13 @@ extern void drm_plane_cleanup(struct drm_plane *plane);
>
> extern void drm_encoder_cleanup(struct drm_encoder *encoder);
>
> -extern char *drm_get_connector_name(struct drm_connector *connector);
> -extern char *drm_get_dpms_name(int val);
> -extern char *drm_get_dvi_i_subconnector_name(int val);
> -extern char *drm_get_dvi_i_select_name(int val);
> -extern char *drm_get_tv_subconnector_name(int val);
> -extern char *drm_get_tv_select_name(int val);
> +extern const char *drm_get_connector_name(const struct drm_connector *connector);
> +extern const char *drm_get_connector_status_name(enum drm_connector_status status);
> +extern const char *drm_get_dpms_name(int val);
> +extern const char *drm_get_dvi_i_subconnector_name(int val);
> +extern const char *drm_get_dvi_i_select_name(int val);
> +extern const char *drm_get_tv_subconnector_name(int val);
> +extern const char *drm_get_tv_select_name(int val);
> extern void drm_fb_release(struct drm_file *file_priv);
> extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group);
> extern bool drm_probe_ddc(struct i2c_adapter *adapter);
> @@ -994,7 +995,7 @@ extern int drm_mode_create_tv_properties(struct drm_device *dev, int num_formats
> extern int drm_mode_create_scaling_mode_property(struct drm_device *dev);
> extern int drm_mode_create_dithering_property(struct drm_device *dev);
> extern int drm_mode_create_dirty_info_property(struct drm_device *dev);
> -extern char *drm_get_encoder_name(struct drm_encoder *encoder);
> +extern const char *drm_get_encoder_name(const struct drm_encoder *encoder);
>
> extern int drm_mode_connector_attach_encoder(struct drm_connector *connector,
> struct drm_encoder *encoder);
> @@ -1094,6 +1095,6 @@ extern int drm_format_num_planes(uint32_t format);
> extern int drm_format_plane_cpp(uint32_t format, int plane);
> extern int drm_format_horz_chroma_subsampling(uint32_t format);
> extern int drm_format_vert_chroma_subsampling(uint32_t format);
> -extern char *drm_get_format_name(uint32_t format);
> +extern const char *drm_get_format_name(uint32_t format);
>
> #endif /* __DRM_CRTC_H__ */
> --
> 1.8.1.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/4] drm: Print pretty names for pixel formats
2013-06-07 15:43 [PATCH 1/4] drm: Print pretty names for pixel formats ville.syrjala
` (2 preceding siblings ...)
2013-06-07 15:43 ` [PATCH 4/4] drm: Constify the pretty-print functions ville.syrjala
@ 2013-06-07 20:09 ` Dave Airlie
2013-06-07 20:35 ` Ville Syrjälä
3 siblings, 1 reply; 14+ messages in thread
From: Dave Airlie @ 2013-06-07 20:09 UTC (permalink / raw)
To: ville.syrjala; +Cc: intel-gfx, dri-devel
On Sat, Jun 8, 2013 at 1:43 AM, <ville.syrjala@linux.intel.com> wrote:
> From: Foo Bar <foo@bar.com>
^ ??
git config error?
Dave.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/4] drm: Print pretty names for pixel formats
2013-06-07 20:09 ` [PATCH 1/4] drm: Print pretty names for pixel formats Dave Airlie
@ 2013-06-07 20:35 ` Ville Syrjälä
2013-06-07 21:33 ` Dave Airlie
0 siblings, 1 reply; 14+ messages in thread
From: Ville Syrjälä @ 2013-06-07 20:35 UTC (permalink / raw)
To: Dave Airlie; +Cc: intel-gfx, dri-devel
On Sat, Jun 08, 2013 at 06:09:42AM +1000, Dave Airlie wrote:
> On Sat, Jun 8, 2013 at 1:43 AM, <ville.syrjala@linux.intel.com> wrote:
> > From: Foo Bar <foo@bar.com>
>
> ^ ??
>
> git config error?
Whoops. Sorry about that. I created the original patch on a test
machine where I apparently had been too lazy to set up my git
correctly. And then I used suppress-cc=author to avoid spamming
myself too much, so I didn't notice it when sending the mail.
Do you want a fixed patch, or will you take care of it on your end?
--
Ville Syrjälä
Intel OTC
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/4] drm: Print pretty names for pixel formats
2013-06-07 20:35 ` Ville Syrjälä
@ 2013-06-07 21:33 ` Dave Airlie
2013-06-10 8:15 ` [PATCH v2] " ville.syrjala
0 siblings, 1 reply; 14+ messages in thread
From: Dave Airlie @ 2013-06-07 21:33 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, dri-devel
On Sat, Jun 8, 2013 at 6:35 AM, Ville Syrjälä
<ville.syrjala@linux.intel.com> wrote:
> On Sat, Jun 08, 2013 at 06:09:42AM +1000, Dave Airlie wrote:
>> On Sat, Jun 8, 2013 at 1:43 AM, <ville.syrjala@linux.intel.com> wrote:
>> > From: Foo Bar <foo@bar.com>
>>
>> ^ ??
>>
>> git config error?
>
> Whoops. Sorry about that. I created the original patch on a test
> machine where I apparently had been too lazy to set up my git
> correctly. And then I used suppress-cc=author to avoid spamming
> myself too much, so I didn't notice it when sending the mail.
>
> Do you want a fixed patch, or will you take care of it on your end?
can you resend that one, otherwise i'll probably forget when I pick it up :-)
Dave.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2] drm: Print pretty names for pixel formats
2013-06-07 21:33 ` Dave Airlie
@ 2013-06-10 8:15 ` ville.syrjala
0 siblings, 0 replies; 14+ messages in thread
From: ville.syrjala @ 2013-06-10 8:15 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Rather than just printing the pixel format as a hex number, decode the
fourcc into human readable form, and also decode the LE vs. BE flag.
Keep printing the raw hex number too in case it contains non-printable
characters.
Some examples what the new drm_get_format_name() produces:
DRM_FORMAT_XRGB8888: "XR24 little-endian (0x34325258)"
DRM_FORMAT_YUYV: "YUYV little-endian (0x56595559)"
DRM_FORMAT_RGB565|DRM_FORMAT_BIG_ENDIAN: "RG16 big-endian (0xb6314752)"
Unprintable characters: "D??? big-endian (0xff7f0244)"
v2: Fix patch author
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_crtc.c | 29 +++++++++++++++++++++++++++--
include/drm/drm_crtc.h | 1 +
2 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index e7e9242..079996a 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -29,6 +29,7 @@
* Dave Airlie <airlied@linux.ie>
* Jesse Barnes <jesse.barnes@intel.com>
*/
+#include <linux/ctype.h>
#include <linux/list.h>
#include <linux/slab.h>
#include <linux/export.h>
@@ -252,6 +253,28 @@ char *drm_get_connector_status_name(enum drm_connector_status status)
}
EXPORT_SYMBOL(drm_get_connector_status_name);
+static char printable_char(int c)
+{
+ return isascii(c) && isprint(c) ? c : '?';
+}
+
+char *drm_get_format_name(uint32_t format)
+{
+ static char buf[32];
+
+ snprintf(buf, sizeof(buf),
+ "%c%c%c%c %s-endian (0x%08x)",
+ printable_char(format & 0xff),
+ printable_char((format >> 8) & 0xff),
+ printable_char((format >> 16) & 0xff),
+ printable_char((format >> 24) & 0x7f),
+ format & DRM_FORMAT_BIG_ENDIAN ? "big" : "little",
+ format);
+
+ return buf;
+}
+EXPORT_SYMBOL(drm_get_format_name);
+
/**
* drm_mode_object_get - allocate a new modeset identifier
* @dev: DRM device
@@ -1834,7 +1857,8 @@ int drm_mode_setplane(struct drm_device *dev, void *data,
if (fb->pixel_format == plane->format_types[i])
break;
if (i == plane->format_count) {
- DRM_DEBUG_KMS("Invalid pixel format 0x%08x\n", fb->pixel_format);
+ DRM_DEBUG_KMS("Invalid pixel format %s\n",
+ drm_get_format_name(fb->pixel_format));
ret = -EINVAL;
goto out;
}
@@ -2312,7 +2336,8 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r)
ret = format_check(r);
if (ret) {
- DRM_DEBUG_KMS("bad framebuffer format 0x%08x\n", r->pixel_format);
+ DRM_DEBUG_KMS("bad framebuffer format %s\n",
+ drm_get_format_name(r->pixel_format));
return ret;
}
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index adb3f9b..2cbbfd4 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -1094,5 +1094,6 @@ extern int drm_format_num_planes(uint32_t format);
extern int drm_format_plane_cpp(uint32_t format, int plane);
extern int drm_format_horz_chroma_subsampling(uint32_t format);
extern int drm_format_vert_chroma_subsampling(uint32_t format);
+extern char *drm_get_format_name(uint32_t format);
#endif /* __DRM_CRTC_H__ */
--
1.8.1.5
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] fb: Make fb_get_options() 'name' parameter const
2013-06-07 15:43 ` ville.syrjala
@ 2013-06-10 14:22 ` Jean-Christophe PLAGNIOL-VILLARD
-1 siblings, 0 replies; 14+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-06-10 14:22 UTC (permalink / raw)
To: ville.syrjala; +Cc: intel-gfx, Tomi Valkeinen, linux-fbdev, dri-devel
On 18:43 Fri 07 Jun , ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The string isn't modified so make it const.
>
> Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Cc: linux-fbdev@vger.kernel.org
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Applied
Best Regards,
J.
> ---
> drivers/video/fbmem.c | 2 +-
> include/linux/fb.h | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
> index 098bfc6..d8d5779 100644
> --- a/drivers/video/fbmem.c
> +++ b/drivers/video/fbmem.c
> @@ -1881,7 +1881,7 @@ static int ofonly __read_mostly;
> *
> * NOTE: Needed to maintain backwards compatibility
> */
> -int fb_get_options(char *name, char **option)
> +int fb_get_options(const char *name, char **option)
> {
> char *opt, *options = NULL;
> int retval = 0;
> diff --git a/include/linux/fb.h b/include/linux/fb.h
> index d49c60f..ffac70a 100644
> --- a/include/linux/fb.h
> +++ b/include/linux/fb.h
> @@ -624,7 +624,7 @@ extern void fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, u3
> extern void fb_set_suspend(struct fb_info *info, int state);
> extern int fb_get_color_depth(struct fb_var_screeninfo *var,
> struct fb_fix_screeninfo *fix);
> -extern int fb_get_options(char *name, char **option);
> +extern int fb_get_options(const char *name, char **option);
> extern int fb_new_modelist(struct fb_info *info);
>
> extern struct fb_info *registered_fb[FB_MAX];
> --
> 1.8.1.5
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] fb: Make fb_get_options() 'name' parameter const
@ 2013-06-10 14:22 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 0 replies; 14+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-06-10 14:22 UTC (permalink / raw)
To: ville.syrjala; +Cc: intel-gfx, Tomi Valkeinen, linux-fbdev, dri-devel
On 18:43 Fri 07 Jun , ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The string isn't modified so make it const.
>
> Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Cc: linux-fbdev@vger.kernel.org
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Applied
Best Regards,
J.
> ---
> drivers/video/fbmem.c | 2 +-
> include/linux/fb.h | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
> index 098bfc6..d8d5779 100644
> --- a/drivers/video/fbmem.c
> +++ b/drivers/video/fbmem.c
> @@ -1881,7 +1881,7 @@ static int ofonly __read_mostly;
> *
> * NOTE: Needed to maintain backwards compatibility
> */
> -int fb_get_options(char *name, char **option)
> +int fb_get_options(const char *name, char **option)
> {
> char *opt, *options = NULL;
> int retval = 0;
> diff --git a/include/linux/fb.h b/include/linux/fb.h
> index d49c60f..ffac70a 100644
> --- a/include/linux/fb.h
> +++ b/include/linux/fb.h
> @@ -624,7 +624,7 @@ extern void fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, u3
> extern void fb_set_suspend(struct fb_info *info, int state);
> extern int fb_get_color_depth(struct fb_var_screeninfo *var,
> struct fb_fix_screeninfo *fix);
> -extern int fb_get_options(char *name, char **option);
> +extern int fb_get_options(const char *name, char **option);
> extern int fb_new_modelist(struct fb_info *info);
>
> extern struct fb_info *registered_fb[FB_MAX];
> --
> 1.8.1.5
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/4] drm: Constify the pretty-print functions
2013-06-07 15:43 ` [PATCH 4/4] drm: Constify the pretty-print functions ville.syrjala
2013-06-07 16:03 ` Daniel Vetter
@ 2013-06-19 0:53 ` Laurent Pinchart
2013-06-19 1:36 ` Dave Airlie
1 sibling, 1 reply; 14+ messages in thread
From: Laurent Pinchart @ 2013-06-19 0:53 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
Hi Ville,
On Friday 07 June 2013 18:43:07 ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The structures and strings involved with various pretty-print functions
> aren't meant to be modified, so make them all const. The exception is
> drm_connector_enum_list which does get modified in drm_connector_init().
>
> While at it move the drm_get_connector_status_name() prototype from
> drmP.h to drm_crtc.h where it belongs.
This breaks compilation on drm-next:
drivers/gpu/drm/drm_fb_helper.c: In function
‘drm_fb_helper_parse_command_line’:
drivers/gpu/drm/drm_fb_helper.c:127:3: warning: passing argument 1 of
‘fb_get_options’ discards ‘const’ qualifier from pointer target type [enabled
by default]
In file included from drivers/gpu/drm/drm_fb_helper.c:35:0:
include/linux/fb.h:627:12: note: expected ‘char *’ but argument is of type
‘const char
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/drm_crtc.c | 30 +++++++++++++++---------------
> include/drm/drmP.h | 1 -
> include/drm/drm_crtc.h | 17 +++++++++--------
> 3 files changed, 24 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 079996a..44c3421 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -92,7 +92,7 @@ EXPORT_SYMBOL(drm_warn_on_modeset_not_all_locked);
>
> /* Avoid boilerplate. I'm tired of typing. */
> #define DRM_ENUM_NAME_FN(fnname, list) \
> - char *fnname(int val) \
> + const char *fnname(int val) \
> { \
> int i; \
> for (i = 0; i < ARRAY_SIZE(list); i++) { \
> @@ -105,7 +105,7 @@ EXPORT_SYMBOL(drm_warn_on_modeset_not_all_locked);
> /*
> * Global properties
> */
> -static struct drm_prop_enum_list drm_dpms_enum_list[] =
> +static const struct drm_prop_enum_list drm_dpms_enum_list[] =
> { { DRM_MODE_DPMS_ON, "On" },
> { DRM_MODE_DPMS_STANDBY, "Standby" },
> { DRM_MODE_DPMS_SUSPEND, "Suspend" },
> @@ -117,7 +117,7 @@ DRM_ENUM_NAME_FN(drm_get_dpms_name, drm_dpms_enum_list)
> /*
> * Optional properties
> */
> -static struct drm_prop_enum_list drm_scaling_mode_enum_list[] =
> +static const struct drm_prop_enum_list drm_scaling_mode_enum_list[] =
> {
> { DRM_MODE_SCALE_NONE, "None" },
> { DRM_MODE_SCALE_FULLSCREEN, "Full" },
> @@ -125,7 +125,7 @@ static struct drm_prop_enum_list
> drm_scaling_mode_enum_list[] = { DRM_MODE_SCALE_ASPECT, "Full aspect" },
> };
>
> -static struct drm_prop_enum_list drm_dithering_mode_enum_list[] =
> +static const struct drm_prop_enum_list drm_dithering_mode_enum_list[] =
> {
> { DRM_MODE_DITHERING_OFF, "Off" },
> { DRM_MODE_DITHERING_ON, "On" },
> @@ -135,7 +135,7 @@ static struct drm_prop_enum_list
> drm_dithering_mode_enum_list[] = /*
> * Non-global properties, but "required" for certain connectors.
> */
> -static struct drm_prop_enum_list drm_dvi_i_select_enum_list[] =
> +static const struct drm_prop_enum_list drm_dvi_i_select_enum_list[] =
> {
> { DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */
> { DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */
> @@ -144,7 +144,7 @@ static struct drm_prop_enum_list
> drm_dvi_i_select_enum_list[] =
>
> DRM_ENUM_NAME_FN(drm_get_dvi_i_select_name, drm_dvi_i_select_enum_list)
>
> -static struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] =
> +static const struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] =
> {
> { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown" }, /* DVI-I and TV-out */
> { DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */
> @@ -154,7 +154,7 @@ static struct drm_prop_enum_list
> drm_dvi_i_subconnector_enum_list[] =
> DRM_ENUM_NAME_FN(drm_get_dvi_i_subconnector_name,
> drm_dvi_i_subconnector_enum_list)
>
> -static struct drm_prop_enum_list drm_tv_select_enum_list[] =
> +static const struct drm_prop_enum_list drm_tv_select_enum_list[] =
> {
> { DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */
> { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
> @@ -165,7 +165,7 @@ static struct drm_prop_enum_list
> drm_tv_select_enum_list[] =
>
> DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list)
>
> -static struct drm_prop_enum_list drm_tv_subconnector_enum_list[] =
> +static const struct drm_prop_enum_list drm_tv_subconnector_enum_list[] =
> {
> { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown" }, /* DVI-I and TV-out */
> { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
> @@ -177,7 +177,7 @@ static struct drm_prop_enum_list
> drm_tv_subconnector_enum_list[] =
> DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name,
> drm_tv_subconnector_enum_list)
>
> -static struct drm_prop_enum_list drm_dirty_info_enum_list[] = {
> +static const struct drm_prop_enum_list drm_dirty_info_enum_list[] = {
> { DRM_MODE_DIRTY_OFF, "Off" },
> { DRM_MODE_DIRTY_ON, "On" },
> { DRM_MODE_DIRTY_ANNOTATE, "Annotate" },
> @@ -185,7 +185,7 @@ static struct drm_prop_enum_list
> drm_dirty_info_enum_list[] = {
>
> struct drm_conn_prop_enum_list {
> int type;
> - char *name;
> + const char *name;
> int count;
> };
>
> @@ -211,7 +211,7 @@ static struct drm_conn_prop_enum_list
> drm_connector_enum_list[] = { DRM_MODE_CONNECTOR_VIRTUAL, "Virtual", 0},
> };
>
> -static struct drm_prop_enum_list drm_encoder_enum_list[] =
> +static const struct drm_prop_enum_list drm_encoder_enum_list[] =
> { { DRM_MODE_ENCODER_NONE, "None" },
> { DRM_MODE_ENCODER_DAC, "DAC" },
> { DRM_MODE_ENCODER_TMDS, "TMDS" },
> @@ -220,7 +220,7 @@ static struct drm_prop_enum_list drm_encoder_enum_list[]
> = { DRM_MODE_ENCODER_VIRTUAL, "Virtual" },
> };
>
> -char *drm_get_encoder_name(struct drm_encoder *encoder)
> +const char *drm_get_encoder_name(const struct drm_encoder *encoder)
> {
> static char buf[32];
>
> @@ -231,7 +231,7 @@ char *drm_get_encoder_name(struct drm_encoder *encoder)
> }
> EXPORT_SYMBOL(drm_get_encoder_name);
>
> -char *drm_get_connector_name(struct drm_connector *connector)
> +const char *drm_get_connector_name(const struct drm_connector *connector)
> {
> static char buf[32];
>
> @@ -242,7 +242,7 @@ char *drm_get_connector_name(struct drm_connector
> *connector) }
> EXPORT_SYMBOL(drm_get_connector_name);
>
> -char *drm_get_connector_status_name(enum drm_connector_status status)
> +const char *drm_get_connector_status_name(enum drm_connector_status status)
> {
> if (status == connector_status_connected)
> return "connected";
> @@ -258,7 +258,7 @@ static char printable_char(int c)
> return isascii(c) && isprint(c) ? c : '?';
> }
>
> -char *drm_get_format_name(uint32_t format)
> +const char *drm_get_format_name(uint32_t format)
> {
> static char buf[32];
>
> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index b06f5af..e931a65 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -1598,7 +1598,6 @@ extern void drm_sysfs_destroy(void);
> extern int drm_sysfs_device_add(struct drm_minor *minor);
> extern void drm_sysfs_hotplug_event(struct drm_device *dev);
> extern void drm_sysfs_device_remove(struct drm_minor *minor);
> -extern char *drm_get_connector_status_name(enum drm_connector_status
> status); extern int drm_sysfs_connector_add(struct drm_connector
> *connector); extern void drm_sysfs_connector_remove(struct drm_connector
> *connector);
>
> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
> index 2cbbfd4..53c33e2 100644
> --- a/include/drm/drm_crtc.h
> +++ b/include/drm/drm_crtc.h
> @@ -897,12 +897,13 @@ extern void drm_plane_cleanup(struct drm_plane
> *plane);
>
> extern void drm_encoder_cleanup(struct drm_encoder *encoder);
>
> -extern char *drm_get_connector_name(struct drm_connector *connector);
> -extern char *drm_get_dpms_name(int val);
> -extern char *drm_get_dvi_i_subconnector_name(int val);
> -extern char *drm_get_dvi_i_select_name(int val);
> -extern char *drm_get_tv_subconnector_name(int val);
> -extern char *drm_get_tv_select_name(int val);
> +extern const char *drm_get_connector_name(const struct drm_connector
> *connector); +extern const char *drm_get_connector_status_name(enum
> drm_connector_status status); +extern const char *drm_get_dpms_name(int
> val);
> +extern const char *drm_get_dvi_i_subconnector_name(int val);
> +extern const char *drm_get_dvi_i_select_name(int val);
> +extern const char *drm_get_tv_subconnector_name(int val);
> +extern const char *drm_get_tv_select_name(int val);
> extern void drm_fb_release(struct drm_file *file_priv);
> extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct
> drm_mode_group *group); extern bool drm_probe_ddc(struct i2c_adapter
> *adapter);
> @@ -994,7 +995,7 @@ extern int drm_mode_create_tv_properties(struct
> drm_device *dev, int num_formats extern int
> drm_mode_create_scaling_mode_property(struct drm_device *dev); extern int
> drm_mode_create_dithering_property(struct drm_device *dev); extern int
> drm_mode_create_dirty_info_property(struct drm_device *dev); -extern char
> *drm_get_encoder_name(struct drm_encoder *encoder);
> +extern const char *drm_get_encoder_name(const struct drm_encoder *encoder);
>
> extern int drm_mode_connector_attach_encoder(struct drm_connector
> *connector, struct drm_encoder *encoder);
> @@ -1094,6 +1095,6 @@ extern int drm_format_num_planes(uint32_t format);
> extern int drm_format_plane_cpp(uint32_t format, int plane);
> extern int drm_format_horz_chroma_subsampling(uint32_t format);
> extern int drm_format_vert_chroma_subsampling(uint32_t format);
> -extern char *drm_get_format_name(uint32_t format);
> +extern const char *drm_get_format_name(uint32_t format);
>
> #endif /* __DRM_CRTC_H__ */
--
Regards,
Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/4] drm: Constify the pretty-print functions
2013-06-19 0:53 ` Laurent Pinchart
@ 2013-06-19 1:36 ` Dave Airlie
0 siblings, 0 replies; 14+ messages in thread
From: Dave Airlie @ 2013-06-19 1:36 UTC (permalink / raw)
To: Laurent Pinchart; +Cc: intel-gfx, dri-devel
On Wed, Jun 19, 2013 at 10:53 AM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> Hi Ville,
>
> On Friday 07 June 2013 18:43:07 ville.syrjala@linux.intel.com wrote:
>> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>
>> The structures and strings involved with various pretty-print functions
>> aren't meant to be modified, so make them all const. The exception is
>> drm_connector_enum_list which does get modified in drm_connector_init().
>>
>> While at it move the drm_get_connector_status_name() prototype from
>> drmP.h to drm_crtc.h where it belongs.
>
> This breaks compilation on drm-next:
>
> drivers/gpu/drm/drm_fb_helper.c: In function
> ‘drm_fb_helper_parse_command_line’:
> drivers/gpu/drm/drm_fb_helper.c:127:3: warning: passing argument 1 of
> ‘fb_get_options’ discards ‘const’ qualifier from pointer target type [enabled
> by default]
> In file included from drivers/gpu/drm/drm_fb_helper.c:35:0:
> include/linux/fb.h:627:12: note: expected ‘char *’ but argument is of type
> ‘const char
The fix is in the fbdev tree, which appears not to be in -next, fail.
Dave.
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2013-06-19 1:36 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-07 15:43 [PATCH 1/4] drm: Print pretty names for pixel formats ville.syrjala
2013-06-07 15:43 ` [PATCH 2/4] drm/i915: " ville.syrjala
2013-06-07 15:43 ` [PATCH 3/4] fb: Make fb_get_options() 'name' parameter const ville.syrjala
2013-06-07 15:43 ` ville.syrjala
2013-06-10 14:22 ` Jean-Christophe PLAGNIOL-VILLARD
2013-06-10 14:22 ` Jean-Christophe PLAGNIOL-VILLARD
2013-06-07 15:43 ` [PATCH 4/4] drm: Constify the pretty-print functions ville.syrjala
2013-06-07 16:03 ` Daniel Vetter
2013-06-19 0:53 ` Laurent Pinchart
2013-06-19 1:36 ` Dave Airlie
2013-06-07 20:09 ` [PATCH 1/4] drm: Print pretty names for pixel formats Dave Airlie
2013-06-07 20:35 ` Ville Syrjälä
2013-06-07 21:33 ` Dave Airlie
2013-06-10 8:15 ` [PATCH v2] " ville.syrjala
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.