diff --git a/libv4l-rockchip/libv4l-encplugin-rockchip.c b/libv4l-rockchip/libv4l-encplugin-rockchip.c
index e9d2bb1743e0ad7856dc5229ff02bbc221e8ef37..2921c141e3c7c8b4de39bf6f187912b4c878c8b0 100644
--- a/libv4l-rockchip/libv4l-encplugin-rockchip.c
+++ b/libv4l-rockchip/libv4l-encplugin-rockchip.c
@@ -42,6 +42,7 @@
 #define PLUGIN_PUBLIC
 #endif
 
+#define RK3288_VPU_NAME "rk3288-vpu-enc"
 #define DEFAULT_FRAME_RATE 30
 #define DEFAULT_BITRATE 1000000
 #define PENDING_BUFFER_QUEUE_SIZE VIDEO_MAX_FRAME
@@ -144,6 +145,8 @@ static void queue_pop_front(struct pending_buffer_queue *queue);
 static struct pending_buffer *queue_front(struct pending_buffer_queue *queue);
 static struct pending_buffer *queue_back(struct pending_buffer_queue *queue);
 
+/* Returns true if the fd is Rockchip encoder device. */
+bool is_rockchip_encoder(int fd);
 /* Set encoder configuration to the driver. */
 int set_encoder_config_locked(struct encoder_context *ctx, int fd,
 	uint32_t buffer_index, size_t num_ctrls, uint32_t ctrls_ids[],
@@ -172,7 +175,9 @@ static void *plugin_init(int fd)
 	pthread_once(&g_get_log_level_once, get_log_level);
 
 	VLOG_FD(1, "");
-	/* TODO: Query the driver and verify it's a Rockchip encoder. */
+	if (!is_rockchip_encoder(fd))
+		return NULL;
+
 	struct encoder_context *ctx = (struct encoder_context *)
 		calloc(1, sizeof(struct encoder_context));
 	if (ctx == NULL) {
@@ -229,7 +234,6 @@ static void plugin_close(void *dev_ops_priv)
 static int plugin_ioctl(void *dev_ops_priv, int fd,
 			unsigned long int cmd, void *arg)
 {
-	/* TODO: Query the driver and verify it's a Rockchip encoder. */
 	int ret;
 	struct encoder_context *ctx = (struct encoder_context *)dev_ops_priv;
 
@@ -485,6 +489,15 @@ static int ioctl_reqbufs_locked(struct encoder_context *ctx, int fd,
 	return 0;
 }
 
+bool is_rockchip_encoder(int fd) {
+	struct v4l2_capability cap;
+	memset(&cap, 0, sizeof(cap));
+	int ret = SYS_IOCTL(fd, VIDIOC_QUERYCAP, &cap);
+	if (ret)
+		return false;
+	return strcmp(RK3288_VPU_NAME, cap.driver) == 0;
+}
+
 int set_encoder_config_locked(struct encoder_context *ctx, int fd,
 		uint32_t buffer_index, size_t num_ctrls, uint32_t ctrl_ids[],
 		void **payloads, uint32_t payload_sizes[])