aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2017-04-23 20:42:41 +0200
committerGerd Hoffmann <kraxel@redhat.com>2017-04-23 20:42:41 +0200
commit3b6b800d67164e86201d5b3a7cba17e8dbbb01fb (patch)
tree89064eec941c30e63a7e8d0af283008f0ad85598
parent84669281cad964d3631efc21b38e18ef1b13bf2a (diff)
downloaddrminfo-3b6b800d67164e86201d5b3a7cba17e8dbbb01fb.tar.gz
split drm_info func
-rw-r--r--drminfo.c127
1 files changed, 70 insertions, 57 deletions
diff --git a/drminfo.c b/drminfo.c
index e0ee008..83a7678 100644
--- a/drminfo.c
+++ b/drminfo.c
@@ -20,15 +20,79 @@
/* ------------------------------------------------------------------ */
-static void drm_info(int devnr)
+static void drm_info_conn(int fd, drmModeConnector *conn)
{
- drmModeConnector *conn;
drmModeEncoder *enc;
drmModeCrtc *crtc;
+ char name[64];
+ int e, c, m;
+
+ drm_conn_name(conn, name, sizeof(name));
+ fprintf(stdout, "%s, %s\n",
+ name, drm_connector_mode_name(conn->connection));
+
+ for (e = 0; e < conn->count_encoders; e++) {
+ enc = drmModeGetEncoder(fd, conn->encoders[e]);
+ if (!enc)
+ continue;
+ fprintf(stdout, " encoder: %s",
+ drm_encoder_type_name(enc->encoder_type));
+ if (enc->encoder_id == conn->encoder_id)
+ fprintf(stdout, ", active");
+ if (enc->crtc_id) {
+ crtc = drmModeGetCrtc(fd, enc->crtc_id);
+ if (crtc) {
+ if (crtc->x || crtc->y) {
+ fprintf(stdout, ", %dx%d+%d+%d",
+ crtc->width, crtc->height, crtc->x, crtc->y);
+ } else {
+ fprintf(stdout, ", %dx%d",
+ crtc->width, crtc->height);
+ }
+ }
+ }
+ fprintf(stdout, "\n");
+ drmModeFreeEncoder(enc);
+ }
+
+ c = 1;
+ for (m = 0; m < conn->count_modes; m++) {
+ if (m+1 < conn->count_modes &&
+ conn->modes[m].hdisplay == conn->modes[m+1].hdisplay &&
+ conn->modes[m].vdisplay == conn->modes[m+1].vdisplay) {
+ c++;
+ } else {
+ fprintf(stdout, " mode: %dx%d",
+ conn->modes[m].hdisplay,
+ conn->modes[m].vdisplay);
+ if (c > 1) {
+ fprintf(stdout, " (%dx)", c);
+ }
+ fprintf(stdout, "\n");
+ c = 1;
+ };
+ }
+}
+
+static void drm_info_fmts(int fd)
+{
+ int i;
+
+ fprintf(stdout, "framebuffer formats\n");
+ for (i = 0; i < fmtcnt; i++) {
+ if (!drm_probe_format(fd, &fmts[i]))
+ continue;
+ drm_print_format(stdout, &fmts[i]);
+ }
+ fprintf(stdout, "\n");
+}
+
+static void drm_info(int devnr)
+{
+ drmModeConnector *conn;
drmModeRes *res;
char dev[64], *busid;
- char name[64];
- int fd, i, m, c, e;
+ int fd, i;
snprintf(dev, sizeof(dev), DRM_DEV_NAME, DRM_DIR_NAME, devnr);
fd = open(dev, O_RDWR);
@@ -54,63 +118,12 @@ static void drm_info(int devnr)
if (!conn)
continue;
- drm_conn_name(conn, name, sizeof(name));
- fprintf(stdout, "%s, %s\n",
- name, drm_connector_mode_name(conn->connection));
-
- for (e = 0; e < conn->count_encoders; e++) {
- enc = drmModeGetEncoder(fd, conn->encoders[e]);
- if (!enc)
- continue;
- fprintf(stdout, " encoder: %s",
- drm_encoder_type_name(enc->encoder_type));
- if (enc->encoder_id == conn->encoder_id)
- fprintf(stdout, ", active");
- if (enc->crtc_id) {
- crtc = drmModeGetCrtc(fd, enc->crtc_id);
- if (crtc) {
- if (crtc->x || crtc->y) {
- fprintf(stdout, ", %dx%d+%d+%d",
- crtc->width, crtc->height, crtc->x, crtc->y);
- } else {
- fprintf(stdout, ", %dx%d",
- crtc->width, crtc->height);
- }
- }
- }
- fprintf(stdout, "\n");
- drmModeFreeEncoder(enc);
- }
-
- c = 1;
- for (m = 0; m < conn->count_modes; m++) {
- if (m+1 < conn->count_modes &&
- conn->modes[m].hdisplay == conn->modes[m+1].hdisplay &&
- conn->modes[m].vdisplay == conn->modes[m+1].vdisplay) {
- c++;
- } else {
- fprintf(stdout, " mode: %dx%d",
- conn->modes[m].hdisplay,
- conn->modes[m].vdisplay);
- if (c > 1) {
- fprintf(stdout, " (%dx)", c);
- }
- fprintf(stdout, "\n");
- c = 1;
- };
- }
-
+ drm_info_conn(fd, conn);
drmModeFreeConnector(conn);
fprintf(stdout, "\n");
}
- fprintf(stdout, "framebuffer formats\n");
- for (i = 0; i < fmtcnt; i++) {
- if (!drm_probe_format(fd, &fmts[i]))
- continue;
- drm_print_format(stdout, &fmts[i]);
- }
- fprintf(stdout, "\n");
+ drm_info_fmts(fd);
}
static void list_formats(FILE *fp)