From patchwork Sun Jul 5 13:53:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaaira Gupta X-Patchwork-Id: 11644425 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 51DE9618 for ; Sun, 5 Jul 2020 13:53:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3876A2075D for ; Sun, 5 Jul 2020 13:53:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=es-iitr-ac-in.20150623.gappssmtp.com header.i=@es-iitr-ac-in.20150623.gappssmtp.com header.b="PhvEqgFl" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727121AbgGENxh (ORCPT ); Sun, 5 Jul 2020 09:53:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55528 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727108AbgGENxd (ORCPT ); Sun, 5 Jul 2020 09:53:33 -0400 Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05259C08C5DE for ; Sun, 5 Jul 2020 06:53:32 -0700 (PDT) Received: by mail-pf1-x442.google.com with SMTP id u185so13856571pfu.1 for ; Sun, 05 Jul 2020 06:53:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=es-iitr-ac-in.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=o5iFRkrCIo6DiUdwVs+/iA+6+88UWJnG9yA214oBxik=; b=PhvEqgFljQfscqFDtcVnFBkOhTeGHmnaj6rhcekXRv4uTcRtks0jMOdQt+crhW+xAw AEqga/SbkPMj5MrZl21FdeV3LVRB0weZA+GItv+SbpEfKB6DIVGJ72yiBI1+Y4zbcrtu TZq5JOcDQTXt2cHqCurFCr4GHKRp1hPwRBtzNll2Nv9/ZElOV8E/4/GzjdQUzfszUK/D 0qf/Ibl3w0ftg8DGpI9sXxKeYH/0/r8KBPgdgearrBrXVzkn+1e7hfrpPCqT3QYodIwj s2raIrbn1rmrfQLiADew1yLqZtU8mpgoMweza0ZRvQVbVtR+6WurspJITfOu810ZV3ux s9bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=o5iFRkrCIo6DiUdwVs+/iA+6+88UWJnG9yA214oBxik=; b=p323drZtc2olNnErVcSJUvHsDd/LMZuoCc6Qz0hfbajBifsSDt/v8W5KCFbo5EXIMe 0dOo60HgVa27eP3VtzOl+C/l+Ui12E8rV6l5+zX4l6fHlcYHZ68BZ0rGQYb48I3oD22y MTHCZJGXKSHUUIBcfeZfDNGUBlIGjN1I0uN5Mc6l6zLVVmmAJJmU8s+Akd+y+rT4Woyb VzOHHvztG67J7t9i9YpULLB9+VJPzHbCTCeX0KqLSaQZ/NyZz1QaGJnJGbY6zyFOvKB8 pH2xiqtf7PPv7hzuPeL8rxnjkG4vyw6UVn6XClAv9P5UlJStZvRtU0AjA71VKEx3iiQ6 MWHA== X-Gm-Message-State: AOAM533kVlOw4cST+ZRK0qkIt7+3PA5CwvlIj6pP3Ms1Equ1utGGMX6M 1ZUR8SwxPAwBwFUJgl2sR0gQBA== X-Google-Smtp-Source: ABdhPJw73AQ5XU0rvuolk+skiGszUyUoXZUHhNLIK+h7b/m67SIOgzn5obks5BtfTK2oRB6qWsWUeA== X-Received: by 2002:a62:e119:: with SMTP id q25mr23131573pfh.300.1593957211499; Sun, 05 Jul 2020 06:53:31 -0700 (PDT) Received: from kaaira-HP-Pavilion-Notebook ([103.113.213.178]) by smtp.gmail.com with ESMTPSA id c188sm16661793pfc.143.2020.07.05.06.53.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2020 06:53:31 -0700 (PDT) From: Kaaira Gupta To: Helen Koike , Shuah Khan , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Kieran Bingham Cc: Kaaira Gupta Subject: [PATCH v10 1/3] media: tpg: change char argument to const char Date: Sun, 5 Jul 2020 19:23:04 +0530 Message-Id: <20200705135307.27564-2-kgupta@es.iitr.ac.in> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200705135307.27564-1-kgupta@es.iitr.ac.in> References: <20200705135307.27564-1-kgupta@es.iitr.ac.in> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Change the argument of type char * to const char * for function tpg_gen_text(). This function should take in a const char * as opposed to char * as it does not make changes to the text. This issue was found while passing the order of colors of tpg generated test image (which is a const char *) to this function. Signed-off-by: Kaaira Gupta Reviewed-by: Helen Koike Reviewed-by: Kieran Bingham --- drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 10 +++++----- include/media/tpg/v4l2-tpg.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c index 50f1e0b28b25..dde22a4cbd6c 100644 --- a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c +++ b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c @@ -1927,34 +1927,34 @@ typedef struct { u16 __; u8 _; } __packed x24; static noinline void tpg_print_str_2(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2], unsigned p, unsigned first, unsigned div, unsigned step, - int y, int x, char *text, unsigned len) + int y, int x, const char *text, unsigned len) { PRINTSTR(u8); } static noinline void tpg_print_str_4(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2], unsigned p, unsigned first, unsigned div, unsigned step, - int y, int x, char *text, unsigned len) + int y, int x, const char *text, unsigned len) { PRINTSTR(u16); } static noinline void tpg_print_str_6(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2], unsigned p, unsigned first, unsigned div, unsigned step, - int y, int x, char *text, unsigned len) + int y, int x, const char *text, unsigned len) { PRINTSTR(x24); } static noinline void tpg_print_str_8(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2], unsigned p, unsigned first, unsigned div, unsigned step, - int y, int x, char *text, unsigned len) + int y, int x, const char *text, unsigned len) { PRINTSTR(u32); } void tpg_gen_text(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2], - int y, int x, char *text) + int y, int x, const char *text) { unsigned step = V4L2_FIELD_HAS_T_OR_B(tpg->field) ? 2 : 1; unsigned div = step; diff --git a/include/media/tpg/v4l2-tpg.h b/include/media/tpg/v4l2-tpg.h index eb191e85d363..9749ed409856 100644 --- a/include/media/tpg/v4l2-tpg.h +++ b/include/media/tpg/v4l2-tpg.h @@ -241,7 +241,7 @@ void tpg_log_status(struct tpg_data *tpg); void tpg_set_font(const u8 *f); void tpg_gen_text(const struct tpg_data *tpg, - u8 *basep[TPG_MAX_PLANES][2], int y, int x, char *text); + u8 *basep[TPG_MAX_PLANES][2], int y, int x, const char *text); void tpg_calc_text_basep(struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2], unsigned p, u8 *vbuf); unsigned tpg_g_interleaved_plane(const struct tpg_data *tpg, unsigned buf_line); From patchwork Sun Jul 5 13:53:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaaira Gupta X-Patchwork-Id: 11644427 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 51EA860D for ; Sun, 5 Jul 2020 13:53:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 34F2B20739 for ; Sun, 5 Jul 2020 13:53:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=es-iitr-ac-in.20150623.gappssmtp.com header.i=@es-iitr-ac-in.20150623.gappssmtp.com header.b="h+bnN+T6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727777AbgGENxk (ORCPT ); Sun, 5 Jul 2020 09:53:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727115AbgGENxh (ORCPT ); Sun, 5 Jul 2020 09:53:37 -0400 Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36FEFC061794 for ; Sun, 5 Jul 2020 06:53:37 -0700 (PDT) Received: by mail-pf1-x442.google.com with SMTP id u18so585287pfk.10 for ; Sun, 05 Jul 2020 06:53:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=es-iitr-ac-in.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=4HXkSJihp3Fc8dO1xehGtp3D9ixK4/XcOCc354oqDWM=; b=h+bnN+T6CgGsjWS0xqT0n8/gcWS0GjeSAV4LpQanYmXP2CLjXcUNNIVBMgFbFdhKJ9 BE4z9iLfMln8m3EG6sLCkCFSVgwU+dmFKMLNdK6PhPvpTXo8JPVw2WAwNVRv1TTTENvC ZgGWdJlcg3g76ZWJJTx9aLUBkGNOzwEt47xE6/UuI3zkaN0N+S35E97WAPj4bgz0N+LR bEDHZVAtNanJGPgtp5Pfvu+n8fxS9U9xdnnKPUTKW0CsGYriSIYNKU4c9Sc5wP1cZ/pU cKrztFDmBDhU+/t22cMSlisJmZehDNDFgZHRqzpqD/6TIXZBQCsRW4O14LyMyDouvZ/h uvjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=4HXkSJihp3Fc8dO1xehGtp3D9ixK4/XcOCc354oqDWM=; b=So12vJukVIr2UoT0vo2VMW4BZdoGTJPkn4gsmiJvWBBo1vE4LTufELzkiQ9bO+ldYP kwo02n0+AAeP+5JqifzbI5nLFnj6Y5Pago+IquDCUp3UbsypFN51igCJPKIqpfy170L1 7KPcUUSmPyvPQcXR/N5c6eR3FIYfcyCPsoD2OAZSj7Qvnmye/95luv9PSFsxfHcqGNo+ f8i3YJYIZOofkAtVCPKdmZIxycAPgJKSbwEjUVB2hZNJMQVYOLKlrJWC8hyCmobAKnjY 0w/6qdGYppCJdnTm7T5EuM3AOJSHMKxs4KwN+lh0TVUZCxJSxNqJSR7dkSh5OBvk3qOW z/Fg== X-Gm-Message-State: AOAM530P6I7Kmghu2dsWJIFxIIneBE02EkahLo9mY70bHcWltMNfdigF TuWpy/+QRvVsCMv7c7UdkFSQSg== X-Google-Smtp-Source: ABdhPJx7KVR6varaKQT0qkIgeSgsOzZcQ3rX7lxyjEICKPlgvRTYqruNmeA1Mv+FGoFAzCWghJiGZg== X-Received: by 2002:a63:dc50:: with SMTP id f16mr34556977pgj.19.1593957216717; Sun, 05 Jul 2020 06:53:36 -0700 (PDT) Received: from kaaira-HP-Pavilion-Notebook ([103.113.213.178]) by smtp.gmail.com with ESMTPSA id j2sm15758039pjf.4.2020.07.05.06.53.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2020 06:53:36 -0700 (PDT) From: Kaaira Gupta To: Helen Koike , Shuah Khan , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Kieran Bingham Cc: Kaaira Gupta Subject: [PATCH v10 2/3] media: tpg: Add function to return colors' order of test image Date: Sun, 5 Jul 2020 19:23:05 +0530 Message-Id: <20200705135307.27564-3-kgupta@es.iitr.ac.in> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200705135307.27564-1-kgupta@es.iitr.ac.in> References: <20200705135307.27564-1-kgupta@es.iitr.ac.in> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Currently there is no method to know the correct order of the colors for a test image generated by tpg. Write a function that returns a string of colors' order given a tpg. It returns a NULL pointer in case of test patterns which do not have a well defined colors' order. Hence add a NULL check for text in tpg_gen_text(). Signed-off-by: Kaaira Gupta Reviewed-by: Kieran Bingham Reviewed-by: Helen Koike --- drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 30 +++++++++++++++++-- include/media/tpg/v4l2-tpg.h | 1 + 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c index dde22a4cbd6c..c46ddd902675 100644 --- a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c +++ b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c @@ -1959,12 +1959,14 @@ void tpg_gen_text(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2], unsigned step = V4L2_FIELD_HAS_T_OR_B(tpg->field) ? 2 : 1; unsigned div = step; unsigned first = 0; - unsigned len = strlen(text); + unsigned len; unsigned p; - if (font8x16 == NULL || basep == NULL) + if (font8x16 == NULL || basep == NULL || text == NULL) return; + len = strlen(text); + /* Checks if it is possible to show string */ if (y + 16 >= tpg->compose.height || x + 8 >= tpg->compose.width) return; @@ -2006,6 +2008,30 @@ void tpg_gen_text(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2], } EXPORT_SYMBOL_GPL(tpg_gen_text); +const char *tpg_g_color_order(const struct tpg_data *tpg) +{ + switch (tpg->pattern) { + case TPG_PAT_75_COLORBAR: + case TPG_PAT_100_COLORBAR: + case TPG_PAT_CSC_COLORBAR: + case TPG_PAT_100_HCOLORBAR: + return "white, yellow, cyan, green, magenta, red, blue, black"; + case TPG_PAT_BLACK: + return "Black"; + case TPG_PAT_WHITE: + return "White"; + case TPG_PAT_RED: + return "Red"; + case TPG_PAT_GREEN: + return "Green"; + case TPG_PAT_BLUE: + return "Blue"; + default: + return NULL; + } +} +EXPORT_SYMBOL_GPL(tpg_g_color_order); + void tpg_update_mv_step(struct tpg_data *tpg) { int factor = tpg->mv_hor_mode > TPG_MOVE_NONE ? -1 : 1; diff --git a/include/media/tpg/v4l2-tpg.h b/include/media/tpg/v4l2-tpg.h index 9749ed409856..0b0ddb87380e 100644 --- a/include/media/tpg/v4l2-tpg.h +++ b/include/media/tpg/v4l2-tpg.h @@ -252,6 +252,7 @@ void tpg_fillbuffer(struct tpg_data *tpg, v4l2_std_id std, bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc); void tpg_s_crop_compose(struct tpg_data *tpg, const struct v4l2_rect *crop, const struct v4l2_rect *compose); +const char *tpg_g_color_order(const struct tpg_data *tpg); static inline void tpg_s_pattern(struct tpg_data *tpg, enum tpg_pattern pattern) { From patchwork Sun Jul 5 13:53:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaaira Gupta X-Patchwork-Id: 11644429 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7FAC260D for ; Sun, 5 Jul 2020 13:53:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 603302084C for ; Sun, 5 Jul 2020 13:53:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=es-iitr-ac-in.20150623.gappssmtp.com header.i=@es-iitr-ac-in.20150623.gappssmtp.com header.b="wPnxBFu8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727818AbgGENxr (ORCPT ); Sun, 5 Jul 2020 09:53:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55560 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727792AbgGENxm (ORCPT ); Sun, 5 Jul 2020 09:53:42 -0400 Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3A1EC061794 for ; Sun, 5 Jul 2020 06:53:41 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id d4so17196231pgk.4 for ; Sun, 05 Jul 2020 06:53:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=es-iitr-ac-in.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=cDQNWhcI/e1v3vk+NoYzpwlMYuLP+RxCwQ9YKBokcKw=; b=wPnxBFu8jctjjerhwXZb/6LJwOi2a17FGzgRoixRgGRfgnvIeTNCPqikXKlAZ9a2q3 ALdfb6L2m35WrCCO6/QtNgHmLBuYhEYahDJ5LS8EC7wlFLVbvCW94SnVH44GeI04c4zH HELr3zVwC/0BFOTO9Dq7R48elg24Anb/GIGjhdALEfY/SVPXVnNYiHZEGMeYda+JGKYB 27Z+ZguV0j7vuF9J++X+86kXu+3MqPEB2rg1++15SRNOxjnzCZOlGirewqenKfVvY9/g wVoDaeeKAxYVkNlHF+1XNKXHAGXzdXM0RYf3NjLST6w8yEYFFbpFtl2XR3FTHvCFax7R DVgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=cDQNWhcI/e1v3vk+NoYzpwlMYuLP+RxCwQ9YKBokcKw=; b=jVhgDxWEkOkgD4fYF0jyMYbkO+k1yuWdWrtyGXVqL6Lv53CpvCEjSjxk/A5GxjMaMT RLUxr4k2aKxUUwRmZM/KqUSvC9+JEqiVU9L3c8jrEW/eGRsap+jYToO4M+n+j7pU4/OV 3Hqj3ZGzkIfWRqFrgUtUzU7ggg/BhkI/JV5l61GFdIYMNKyAEDCjIRkez9BpdJM8Ozn0 4XG7TCmPciLLpo/Nle81fw10sUfpO+XFdUr4a/8qi304pCg1if0ItuP8CP0eYwnK05oT ly4Z7xYcpY3yjW954/tJhizDOBKiYG+IOGklomUvxpMqAuT3BoWuVmsH1+PbogS/F1WB wYlg== X-Gm-Message-State: AOAM532FV2A2AwI3EExD/cuhLdWZFsasWdU7s/n0NoNudDvEjKAjmzMj QeHbXPO2vhx70HyfrkvRmGpr6g== X-Google-Smtp-Source: ABdhPJyaennsI1zbK01oUQ3G9wHEaNzfM0rlVAGGe69XfzlpuDpjMXVq4qAxV15YMHfySqZmYe2ciw== X-Received: by 2002:aa7:871a:: with SMTP id b26mr34194647pfo.294.1593957221246; Sun, 05 Jul 2020 06:53:41 -0700 (PDT) Received: from kaaira-HP-Pavilion-Notebook ([103.113.213.178]) by smtp.gmail.com with ESMTPSA id t126sm16371147pfd.214.2020.07.05.06.53.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2020 06:53:40 -0700 (PDT) From: Kaaira Gupta To: Helen Koike , Shuah Khan , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Kieran Bingham Cc: Kaaira Gupta Subject: [PATCH v10 3/3] media: vimc: Add a control to display info on test image Date: Sun, 5 Jul 2020 19:23:06 +0530 Message-Id: <20200705135307.27564-4-kgupta@es.iitr.ac.in> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200705135307.27564-1-kgupta@es.iitr.ac.in> References: <20200705135307.27564-1-kgupta@es.iitr.ac.in> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Add a control in VIMC to display information such as the correct order of colors for a given test pattern, counter, brightness, hue, saturation, contrast, width and height at sensor over test image. Signed-off-by: Kaaira Gupta Acked-by: Helen Koike Reviewed-by: Kieran Bingham --- drivers/media/test-drivers/vimc/Kconfig | 2 + drivers/media/test-drivers/vimc/vimc-common.h | 1 + drivers/media/test-drivers/vimc/vimc-core.c | 10 +++ drivers/media/test-drivers/vimc/vimc-sensor.c | 71 +++++++++++++++++++ 4 files changed, 84 insertions(+) diff --git a/drivers/media/test-drivers/vimc/Kconfig b/drivers/media/test-drivers/vimc/Kconfig index 4068a67585f9..da4b2ad6e40c 100644 --- a/drivers/media/test-drivers/vimc/Kconfig +++ b/drivers/media/test-drivers/vimc/Kconfig @@ -2,6 +2,8 @@ config VIDEO_VIMC tristate "Virtual Media Controller Driver (VIMC)" depends on VIDEO_DEV && VIDEO_V4L2 + select FONT_SUPPORT + select FONT_8x16 select MEDIA_CONTROLLER select VIDEO_V4L2_SUBDEV_API select VIDEOBUF2_VMALLOC diff --git a/drivers/media/test-drivers/vimc/vimc-common.h b/drivers/media/test-drivers/vimc/vimc-common.h index ae163dec2459..a289434e75ba 100644 --- a/drivers/media/test-drivers/vimc/vimc-common.h +++ b/drivers/media/test-drivers/vimc/vimc-common.h @@ -20,6 +20,7 @@ #define VIMC_CID_VIMC_CLASS (0x00f00000 | 1) #define VIMC_CID_TEST_PATTERN (VIMC_CID_VIMC_BASE + 0) #define VIMC_CID_MEAN_WIN_SIZE (VIMC_CID_VIMC_BASE + 1) +#define VIMC_CID_OSD_TEXT_MODE (VIMC_CID_VIMC_BASE + 2) #define VIMC_FRAME_MAX_WIDTH 4096 #define VIMC_FRAME_MAX_HEIGHT 2160 diff --git a/drivers/media/test-drivers/vimc/vimc-core.c b/drivers/media/test-drivers/vimc/vimc-core.c index 11210aaa2551..4b0ae6f51d76 100644 --- a/drivers/media/test-drivers/vimc/vimc-core.c +++ b/drivers/media/test-drivers/vimc/vimc-core.c @@ -5,10 +5,12 @@ * Copyright (C) 2015-2017 Helen Koike */ +#include #include #include #include #include +#include #include #include "vimc-common.h" @@ -263,11 +265,19 @@ static int vimc_register_devices(struct vimc_device *vimc) static int vimc_probe(struct platform_device *pdev) { + const struct font_desc *font = find_font("VGA8x16"); struct vimc_device *vimc; int ret; dev_dbg(&pdev->dev, "probe"); + if (!font) { + dev_err(&pdev->dev, "could not find font\n"); + return -ENODEV; + } + + tpg_set_font(font->data); + vimc = kzalloc(sizeof(*vimc), GFP_KERNEL); if (!vimc) return -ENOMEM; diff --git a/drivers/media/test-drivers/vimc/vimc-sensor.c b/drivers/media/test-drivers/vimc/vimc-sensor.c index a2f09ac9a360..ba5db5a150b4 100644 --- a/drivers/media/test-drivers/vimc/vimc-sensor.c +++ b/drivers/media/test-drivers/vimc/vimc-sensor.c @@ -14,11 +14,19 @@ #include "vimc-common.h" +enum vimc_sen_osd_mode { + VIMC_SEN_OSD_SHOW_ALL = 0, + VIMC_SEN_OSD_SHOW_COUNTERS = 1, + VIMC_SEN_OSD_SHOW_NONE = 2 +}; + struct vimc_sen_device { struct vimc_ent_device ved; struct v4l2_subdev sd; struct tpg_data tpg; u8 *frame; + enum vimc_sen_osd_mode osd_value; + u64 start_stream_ts; /* The active format */ struct v4l2_mbus_framefmt mbus_format; struct v4l2_ctrl_handler hdl; @@ -187,8 +195,49 @@ static void *vimc_sen_process_frame(struct vimc_ent_device *ved, { struct vimc_sen_device *vsen = container_of(ved, struct vimc_sen_device, ved); + const unsigned int line_height = 16; + u8 *basep[TPG_MAX_PLANES][2]; + unsigned int line = 1; + char str[100]; tpg_fill_plane_buffer(&vsen->tpg, 0, 0, vsen->frame); + tpg_calc_text_basep(&vsen->tpg, basep, 0, vsen->frame); + switch (vsen->osd_value) { + case VIMC_SEN_OSD_SHOW_ALL: { + const char *order = tpg_g_color_order(&vsen->tpg); + + tpg_gen_text(&vsen->tpg, basep, line++ * line_height, + 16, order); + snprintf(str, sizeof(str), + "brightness %3d, contrast %3d, saturation %3d, hue %d ", + vsen->tpg.brightness, + vsen->tpg.contrast, + vsen->tpg.saturation, + vsen->tpg.hue); + tpg_gen_text(&vsen->tpg, basep, line++ * line_height, 16, str); + snprintf(str, sizeof(str), "sensor size: %dx%d", + vsen->mbus_format.width, + vsen->mbus_format.height); + tpg_gen_text(&vsen->tpg, basep, line++ * line_height, 16, str); + fallthrough; + } + case VIMC_SEN_OSD_SHOW_COUNTERS: { + unsigned int ms; + + ms = div_u64(ktime_get_ns() - vsen->start_stream_ts, 1000000); + snprintf(str, sizeof(str), "%02d:%02d:%02d:%03d", + (ms / (60 * 60 * 1000)) % 24, + (ms / (60 * 1000)) % 60, + (ms / 1000) % 60, + ms % 1000); + tpg_gen_text(&vsen->tpg, basep, line++ * line_height, 16, str); + break; + } + case VIMC_SEN_OSD_SHOW_NONE: + default: + break; + } + return vsen->frame; } @@ -201,6 +250,8 @@ static int vimc_sen_s_stream(struct v4l2_subdev *sd, int enable) const struct vimc_pix_map *vpix; unsigned int frame_size; + vsen->start_stream_ts = ktime_get_ns(); + /* Calculate the frame size */ vpix = vimc_pix_map_by_code(vsen->mbus_format.code); frame_size = vsen->mbus_format.width * vpix->bpp * @@ -269,6 +320,9 @@ static int vimc_sen_s_ctrl(struct v4l2_ctrl *ctrl) case V4L2_CID_SATURATION: tpg_s_saturation(&vsen->tpg, ctrl->val); break; + case VIMC_CID_OSD_TEXT_MODE: + vsen->osd_value = ctrl->val; + break; default: return -EINVAL; } @@ -307,6 +361,22 @@ static const struct v4l2_ctrl_config vimc_sen_ctrl_test_pattern = { .qmenu = tpg_pattern_strings, }; +static const char * const vimc_ctrl_osd_mode_strings[] = { + "All", + "Counters Only", + "None", + NULL, +}; + +static const struct v4l2_ctrl_config vimc_sen_ctrl_osd_mode = { + .ops = &vimc_sen_ctrl_ops, + .id = VIMC_CID_OSD_TEXT_MODE, + .name = "Show Information", + .type = V4L2_CTRL_TYPE_MENU, + .max = ARRAY_SIZE(vimc_ctrl_osd_mode_strings) - 2, + .qmenu = vimc_ctrl_osd_mode_strings, +}; + static struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc, const char *vcfg_name) { @@ -323,6 +393,7 @@ static struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc, v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_class, NULL); v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_test_pattern, NULL); + v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_osd_mode, NULL); v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops, V4L2_CID_VFLIP, 0, 1, 1, 0); v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,