tbm_bufmgr_sprd: clean up _tbm_sprd_open_drm() 48/97448/1
authorYoungJun Cho <yj44.cho@samsung.com>
Mon, 14 Nov 2016 06:53:19 +0000 (15:53 +0900)
committerYoungJun Cho <yj44.cho@samsung.com>
Mon, 14 Nov 2016 07:03:20 +0000 (16:03 +0900)
This patch cleans up _tbm_sprd_open_drm().

Change-Id: Ic55b1b347f1c09e698da21fb10e10e2977fbac5f
Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
src/tbm_bufmgr_sprd.c

index 46c1372aadb4836314a676e48407c792f334d77b..bf2366e10ebb009815909cffc1b15eb6fedb43b7 100644 (file)
@@ -362,92 +362,87 @@ _tgl_get_data(int fd, unsigned int key, unsigned int *locked)
 #endif
 
 static int
-_tbm_sprd_open_drm()
+_tbm_sprd_open_drm(void)
 {
-       int fd = -1;
+#ifdef HAVE_UDEV
+       struct udev_device *drm_device = NULL;
+       struct udev_list_entry *entry = NULL;
+       struct udev_enumerate *e;
+       const char *filepath;
+       struct udev *udev;
+       struct stat s;
+#endif
+       int fd;
 
        fd = drmOpen(SPRD_DRM_NAME, NULL);
-       if (fd < 0) {
-               TBM_SPRD_LOG("[libtbm-sprd:%d] "
-                             "warning %s:%d fail to open drm\n",
-                             getpid(), __FUNCTION__, __LINE__);
-       }
+       if (fd != -1)
+               return fd;
 
 #ifdef HAVE_UDEV
-       if (fd < 0) {
-               struct udev *udev = NULL;
-               struct udev_enumerate *e = NULL;
-               struct udev_list_entry *entry = NULL;
-               struct udev_device *device = NULL, *drm_device = NULL, *device_parent = NULL;
-               const char *filepath;
-               struct stat s;
-               int ret;
-
-               TBM_SPRD_LOG("[libtbm-sprd:%d] "
-                             "%s:%d search drm-device by udev\n",
-                             getpid(), __FUNCTION__, __LINE__);
-
-               udev = udev_new();
-               if (!udev) {
-                       TBM_SPRD_LOG("udev_new() failed.\n");
-                       return -1;
-               }
+       TBM_SPRD_LOG("[libtbm-sprd:%d] warning %s:%d fail to open drm, "
+                       "so search drm-device by udev\n",
+                       getpid(), __FUNCTION__, __LINE__);
+
+       udev = udev_new();
+       if (!udev) {
+               TBM_SPRD_LOG("udev_new() failed.\n");
+               return -1;
+       }
 
-               e = udev_enumerate_new(udev);
-               udev_enumerate_add_match_subsystem(e, "drm");
-               udev_enumerate_add_match_sysname(e, "card[0-9]*");
-               udev_enumerate_scan_devices(e);
-
-               udev_list_entry_foreach(entry, udev_enumerate_get_list_entry(e)) {
-                       device = udev_device_new_from_syspath(udev_enumerate_get_udev(e),
-                                                             udev_list_entry_get_name(entry));
-                       device_parent = udev_device_get_parent(device);
-                       /* Not need unref device_parent. device_parent and device have same refcnt */
-                       if (device_parent) {
-                               if (strcmp(udev_device_get_sysname(device_parent), "sprd-drm") == 0) {
-                                       drm_device = device;
-                                       DBG("[%s] Found render device: '%s' (%s)\n",
-                                           _target_name(),
-                                           udev_device_get_syspath(drm_device),
-                                           udev_device_get_sysname(device_parent));
-                                       break;
-                               }
+       e = udev_enumerate_new(udev);
+       udev_enumerate_add_match_subsystem(e, "drm");
+       udev_enumerate_add_match_sysname(e, "card[0-9]*");
+       udev_enumerate_scan_devices(e);
+
+       udev_list_entry_foreach(entry, udev_enumerate_get_list_entry(e)) {
+               struct udev_device *device, *device_parent;
+
+               device = udev_device_new_from_syspath(udev_enumerate_get_udev(e),
+                                                       udev_list_entry_get_name(entry));
+               device_parent = udev_device_get_parent(device);
+               /* Not need unref device_parent. device_parent and device have same refcnt */
+               if (device_parent) {
+                       if (strcmp(udev_device_get_sysname(device_parent), "sprd-drm") == 0) {
+                               drm_device = device;
+                               DBG("[%s] Found render device: '%s' (%s)\n",
+                                   _target_name(),
+                                   udev_device_get_syspath(drm_device),
+                                   udev_device_get_sysname(device_parent));
+                               break;
                        }
-                       udev_device_unref(device);
                }
+               udev_device_unref(device);
+       }
 
-               udev_enumerate_unref(e);
+       udev_enumerate_unref(e);
 
-               /* Get device file path. */
-               filepath = udev_device_get_devnode(drm_device);
-               if (!filepath) {
-                       TBM_SPRD_LOG("udev_device_get_devnode() failed.\n");
-                       udev_device_unref(drm_device);
-                       udev_unref(udev);
-                       return -1;
-               }
+       /* Get device file path. */
+       filepath = udev_device_get_devnode(drm_device);
+       if (!filepath) {
+               TBM_SPRD_LOG("udev_device_get_devnode() failed.\n");
+               udev_device_unref(drm_device);
+               udev_unref(udev);
+               return -1;
+       }
 
-               /* Open DRM device file and check validity. */
-               fd = open(filepath, O_RDWR | O_CLOEXEC);
-               if (fd < 0) {
-                       TBM_SPRD_LOG("open(%s, O_RDWR | O_CLOEXEC) failed.\n");
-                       udev_device_unref(drm_device);
-                       udev_unref(udev);
-                       return -1;
-               }
+       udev_device_unref(drm_device);
+       udev_unref(udev);
 
-               ret = fstat(fd, &s);
-               if (ret) {
-                       TBM_SPRD_LOG("fstat() failed %s.\n");
-                       close(fd);
-                       udev_device_unref(drm_device);
-                       udev_unref(udev);
-                       return -1;
-               }
+       /* Open DRM device file and check validity. */
+       fd = open(filepath, O_RDWR | O_CLOEXEC);
+       if (fd < 0) {
+               TBM_SPRD_LOG("open(%s, O_RDWR | O_CLOEXEC) failed.\n");
+               return -1;
+       }
 
-               udev_device_unref(drm_device);
-               udev_unref(udev);
+       if (fstat(fd, &s)) {
+               TBM_SPRD_LOG("fstat() failed %s.\n");
+               close(fd);
+               return -1;
        }
+#else
+       TBM_SPRD_LOG("[libtbm-sprd:%d] warning %s:%d fail to open drm\n",
+                     getpid(), __FUNCTION__, __LINE__);
 #endif
 
        return fd;