aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2017-04-24 13:36:44 +0200
committerGerd Hoffmann <kraxel@redhat.com>2017-04-24 13:36:44 +0200
commit2ae3951ee349dc668ddb325e60d3d49e33dd2045 (patch)
tree644ea0e73de6793acf184402cd025db4413d8d64
parente3a310645942234cbeb9052dc0af63cdc587cc00 (diff)
downloaddrminfo-2ae3951ee349dc668ddb325e60d3d49e33dd2045.tar.gz
drminfo: split info functions
-rw-r--r--drminfo.c103
1 files changed, 61 insertions, 42 deletions
diff --git a/drminfo.c b/drminfo.c
index 95a9ed4..b35d346 100644
--- a/drminfo.c
+++ b/drminfo.c
@@ -75,6 +75,29 @@ static void drm_info_conn(int fd, drmModeConnector *conn)
}
}
+static void drm_info_conns(int fd)
+{
+ drmModeConnector *conn;
+ drmModeRes *res;
+ int i;
+
+ res = drmModeGetResources(fd);
+ if (res == NULL) {
+ fprintf(stderr, "drmModeGetResources() failed\n");
+ exit(1);
+ }
+
+ for (i = 0; i < res->count_connectors; i++) {
+ conn = drmModeGetConnector(fd, res->connectors[i]);
+ if (!conn)
+ continue;
+
+ drm_info_conn(fd, conn);
+ drmModeFreeConnector(conn);
+ fprintf(stdout, "\n");
+ }
+}
+
static void drm_info_plane(int fd, drmModePlane *plane)
{
int i;
@@ -92,6 +115,30 @@ static void drm_info_plane(int fd, drmModePlane *plane)
fprintf(stdout, "\n");
}
+static void drm_info_planes(int fd)
+{
+ drmModePlaneRes *pres;
+ drmModePlane *plane;
+ int i;
+
+ drmSetClientCap(fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
+ pres = drmModeGetPlaneResources(fd);
+ if (pres == NULL) {
+ fprintf(stderr, "drmModeGetPlaneResources() failed\n");
+ exit(1);
+ }
+
+ for (i = 0; i < pres->count_planes; i++) {
+ plane = drmModeGetPlane(fd, pres->planes[i]);
+ if (!plane)
+ continue;
+
+ drm_info_plane(fd, plane);
+ drmModeFreePlane(plane);
+ fprintf(stdout, "\n");
+ }
+}
+
static void drm_info_fmts(int fd)
{
int i;
@@ -105,14 +152,10 @@ static void drm_info_fmts(int fd)
fprintf(stdout, "\n");
}
-static void drm_info(int devnr)
+static int drm_open(int devnr)
{
- drmModeConnector *conn;
- drmModePlaneRes *pres;
- drmModePlane *plane;
- drmModeRes *res;
- char dev[64], *busid;
- int fd, i;
+ char dev[64];
+ int fd;
snprintf(dev, sizeof(dev), DRM_DEV_NAME, DRM_DIR_NAME, devnr);
fd = open(dev, O_RDWR);
@@ -120,6 +163,12 @@ static void drm_info(int devnr)
fprintf(stderr, "open %s: %s\n", dev, strerror(errno));
exit(1);
}
+ return fd;
+}
+
+static void drm_info_all(int fd)
+{
+ char *busid;
busid = drmGetBusid(fd);
if (busid) {
@@ -127,39 +176,8 @@ static void drm_info(int devnr)
}
fprintf(stdout, "\n");
- res = drmModeGetResources(fd);
- if (res == NULL) {
- fprintf(stderr, "drmModeGetResources() failed\n");
- exit(1);
- }
-
- for (i = 0; i < res->count_connectors; i++) {
- conn = drmModeGetConnector(fd, res->connectors[i]);
- if (!conn)
- continue;
-
- drm_info_conn(fd, conn);
- drmModeFreeConnector(conn);
- fprintf(stdout, "\n");
- }
-
- drmSetClientCap(fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
- pres = drmModeGetPlaneResources(fd);
- if (pres == NULL) {
- fprintf(stderr, "drmModeGetPlaneResources() failed\n");
- exit(1);
- }
-
- for (i = 0; i < pres->count_planes; i++) {
- plane = drmModeGetPlane(fd, pres->planes[i]);
- if (!plane)
- continue;
-
- drm_info_plane(fd, plane);
- drmModeFreePlane(plane);
- fprintf(stdout, "\n");
- }
-
+ drm_info_conns(fd);
+ drm_info_planes(fd);
drm_info_fmts(fd);
}
@@ -193,7 +211,7 @@ static void usage(FILE *fp)
int main(int argc, char **argv)
{
int card = 0;
- int c;
+ int c, fd;
for (;;) {
c = getopt(argc, argv, "hlc:");
@@ -215,6 +233,7 @@ int main(int argc, char **argv)
}
}
- drm_info(card);
+ fd = drm_open(card);
+ drm_info_all(fd);
return 0;
}