From patchwork Wed Jul 1 13:29:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaaira Gupta X-Patchwork-Id: 11636391 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 8A51914B7 for ; Wed, 1 Jul 2020 13:29:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6E6A0207F5 for ; Wed, 1 Jul 2020 13:29:54 +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="QBcptKTv" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731032AbgGAN3x (ORCPT ); Wed, 1 Jul 2020 09:29:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41490 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731009AbgGAN3v (ORCPT ); Wed, 1 Jul 2020 09:29:51 -0400 Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 433EDC08C5C1 for ; Wed, 1 Jul 2020 06:29:51 -0700 (PDT) Received: by mail-pg1-x543.google.com with SMTP id e8so11735085pgc.5 for ; Wed, 01 Jul 2020 06:29:51 -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=45mvoeQBux3MWSaz6RzR2PRZkBysjO6mMNQF+8/LBaQ=; b=QBcptKTvxEQN+V/Do4Qokuk1wXiQmIso8OCQ3nTgj0q0MIIPYmUwPCemDz8nR59JDy RCA3mjY79KrlqCY7qzWWNpzODm93bbsavVdESkYepz43+rgcm6PulCOus37a0fUMz4Rq Y6FzG73J8+UjhNRgrvWvHblFiv2cRrubquxCC8q2xqdVp2kaY3m3oCoQMMut7KP/rSev 6Eb7sBI+AM8Yb4bNu2yKbffciDmX/aYUPKL7qUSroUcYTE80g76F6zMRMe/3zC+rk9ap 4DFKRhmiDdrNLShGSvbVTTCV6DBczyvpHLxuFyD4h4FGXfC1HNXujLAQm2FQuqexWQI5 Jijg== 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=45mvoeQBux3MWSaz6RzR2PRZkBysjO6mMNQF+8/LBaQ=; b=pVYAIl2Fx+zJYFp7QmkIND6FNxNHEuUpgaLPQkfSDHp04ocTc7hX2n/mVCVZTPeusZ RtgfMaI0FB957hfsAIauCp8yV171Ojgrbx3bie0xFjCO1bEU3DsP1o6zhb58emf+V2UY iwCzQKWx3Z8yLfZ0Nt0LdTwVLAdXmdi0oYZ71dwAvek6JBaCx2iXI4d8NYNeHg0UaikJ +XtA9kcNw39Sayfk3cYRlIHDdvU/HpmZ7lLxBj0vl3Hio1ZkUqBgRdeXdeKqvBBT15OC FHXwLR6fcdzDWa2uVEBQDjOyChTYfgsgoMwosHXt/WykrsMyTRQrRw+xjyfUEsKLq5Aq rZUg== X-Gm-Message-State: AOAM530IjpDXQIaNk1aaAX3+eo2bpQUjYPW4CFjG4KXhVJdkJbmJp/Ez kqjM1Rjm/mjn0KAQ0Bj8rtdgNA== X-Google-Smtp-Source: ABdhPJxEX6dejXzdDajn5bAmq0FPEu2Br4cDaz67y/xHqFQDrCCzbRF0BrtUR/Ca7Kf3LdqFC5IYKA== X-Received: by 2002:a63:d944:: with SMTP id e4mr19775924pgj.376.1593610190696; Wed, 01 Jul 2020 06:29:50 -0700 (PDT) Received: from kaaira-HP-Pavilion-Notebook ([103.113.213.178]) by smtp.gmail.com with ESMTPSA id p12sm6036493pgk.40.2020.07.01.06.29.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jul 2020 06:29:49 -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 , hverkuil@xs4all.nl Cc: Kaaira Gupta Subject: [PATCH v9 1/3] media: tpg: change char argument to const char Date: Wed, 1 Jul 2020 18:59:38 +0530 Message-Id: <20200701132940.21257-2-kgupta@es.iitr.ac.in> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200701132940.21257-1-kgupta@es.iitr.ac.in> References: <20200701132940.21257-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 pointer as opposed to a char * as there is no modification. 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 Wed Jul 1 13:29:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaaira Gupta X-Patchwork-Id: 11636393 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 C237513B4 for ; Wed, 1 Jul 2020 13:30:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A7B83207F5 for ; Wed, 1 Jul 2020 13:30:01 +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="B4pEaSay" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731068AbgGAN34 (ORCPT ); Wed, 1 Jul 2020 09:29:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41504 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731064AbgGAN3z (ORCPT ); Wed, 1 Jul 2020 09:29:55 -0400 Received: from mail-pj1-x1043.google.com (mail-pj1-x1043.google.com [IPv6:2607:f8b0:4864:20::1043]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36E26C08C5DB for ; Wed, 1 Jul 2020 06:29:55 -0700 (PDT) Received: by mail-pj1-x1043.google.com with SMTP id k5so1481516pjg.3 for ; Wed, 01 Jul 2020 06:29:55 -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=B4pEaSayd8mYWdN+od8lcucTv6XEOZMnM1CJ9CTdKxpRYtZ81//xZLs0WIE/ZipTTT 7ioDkVp299DfixguuLpn2jP2Zusx5f1lDACuGYIY2wV2RhU2Xnr851u07mqfWT1iEICt hpc2NtwUMmVVIJOOxYdvjuFVvGD70FiIZYpQEr7AAAuDkfdn7cZCT7xJwjUUL8lkvGNL i3LCKq5RMd5tv2Tt29TiMBOfOW57vOF7fysOo2XrWLKlMoKZY33EykF+5RyDPp6itc3m BB+cjvo/LQc4bo0L1NZhcakC5yCpF+Po3LC6pLLQhUOMHFd/cZ+BlkzVBJAurondzOl5 1z2A== 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=KUl0kdTvMpLYNDqUsGHuEIvgH2FZHyOi3jp+6nJ8L4Nwzprf6JksZpBfvQGZQmoDkj vM+E7k/F8TQC9Opz0UISkCT+FzUkbhTDo1lF92Smt3cPkFM96NR54KjhL3jGuj63c7+f O7Il9Np/JbXErwcYvrQDE1PlFiisNZIXUpdl4EfZMnqOoFdId1cAvZg3TAQrFaZyXq9I KKPutoJDX2k1bYHIlI5hBzj2Hns3x3eH4111AY8h2ycyDKgLRr28bPNWe0KtdTVo8jhN VQ6/ULEcX0+Q9lZyE8zKC3ChdFZCKcVk4dmfXfx4qwOk3XKO6hfG3+nFwNrznYS2SDYK j1Rw== X-Gm-Message-State: AOAM532QsYWwytnlnnTQnEjda0hnr6myYeeB4JbQa9Ojy/Ajmx+ZgPGn wL3u5Sbw8OUewSKVbYNlyQei2A== X-Google-Smtp-Source: ABdhPJy8tMcLsooUW4oNittTDcqYtO8mPql+bLGTctDTXxb+IYs3D3IkZlPggf0pAharRBGhYA0/3w== X-Received: by 2002:a17:90b:120a:: with SMTP id gl10mr9638252pjb.44.1593610194650; Wed, 01 Jul 2020 06:29:54 -0700 (PDT) Received: from kaaira-HP-Pavilion-Notebook ([103.113.213.178]) by smtp.gmail.com with ESMTPSA id o42sm5464435pje.10.2020.07.01.06.29.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jul 2020 06:29:54 -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 , hverkuil@xs4all.nl Cc: Kaaira Gupta Subject: [PATCH v9 2/3] media: tpg: Add function to return colors' order of test image Date: Wed, 1 Jul 2020 18:59:39 +0530 Message-Id: <20200701132940.21257-3-kgupta@es.iitr.ac.in> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200701132940.21257-1-kgupta@es.iitr.ac.in> References: <20200701132940.21257-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 Wed Jul 1 13:29:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaaira Gupta X-Patchwork-Id: 11636395 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 C50BB92A for ; Wed, 1 Jul 2020 13:30:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A396B207F9 for ; Wed, 1 Jul 2020 13:30:02 +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="Cg0G/zPr" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731094AbgGANaB (ORCPT ); Wed, 1 Jul 2020 09:30:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41518 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731089AbgGAN37 (ORCPT ); Wed, 1 Jul 2020 09:29:59 -0400 Received: from mail-pj1-x1043.google.com (mail-pj1-x1043.google.com [IPv6:2607:f8b0:4864:20::1043]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F66FC08C5C1 for ; Wed, 1 Jul 2020 06:29:59 -0700 (PDT) Received: by mail-pj1-x1043.google.com with SMTP id l6so7894345pjq.1 for ; Wed, 01 Jul 2020 06:29:59 -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=wPPMHuCFSNq3vI5fbU09j97+lQwfVk/50byeoEAAcKw=; b=Cg0G/zPrNIzYsssQfJtHsQlk3bVNNLTpUdBNmgHJ221whII+N3UR6OcBUKDLQylIvy uj9cwjsAS1Euvi35V7DUFIZ2/cKT5RvVkfPBE9ktXasFNyWKEzLuPDdHRaRniuaB3sve n+cTn4Z7GtGIGenIInCqV5dHZJXK4eGZZd/DRe2U8Oq2JIF/5zV/K/+LJp+SA/mqFbDj +J2ZamI+gkHaTnlnowdDPKTjdAd7wQP4iTchVjnqyoURyWQaKtf4myDLUl3U3lR1S+YU i568b2vl0m2Q5O5E947jFZNYPapDsNVmaIllr1WzwUFi/9B/z/i+JUnPBigYZAoQXsWR 7hSA== 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=wPPMHuCFSNq3vI5fbU09j97+lQwfVk/50byeoEAAcKw=; b=EKinALY2MlUhIin9J7vgzSFUTUVVM7rKzdvPW+DJ+eVVIxb22QizAvkL1PUx2BUtoz UwqJ8BCpREdXerQPJQG2qwtAYseCJg9NU4icfUt7zNcO6JKB4rEA4cSRE8sCQCuDVEy7 zUUinCnyxgYGtQsiYiQu/MF6RE+MuIodKtyCPb334u/JioQF6ef8qp41EdiJogXTYQ0v i9/+dx24OsbBbMlebxJDGy/PR16N/CUaEEsTM7u9esRDcjnjjKCJCgMkZdzNYoDdYAd1 rdp6+nSUB8kJpouMg/o1gSGK6fyyWSNho/glgbYnwmF3ZIhbZy85JH7cJ81Y8oy5/jzZ W5hA== X-Gm-Message-State: AOAM532ByRgqPDwAaXhdArbL0GU64ckLLjGMYAajwWwnfHQ7QKXczNgJ ERKJpDtqJ5uONyc8nC3S0kGJ5w== X-Google-Smtp-Source: ABdhPJwAAUI1x/3BFDIyAnuKC4+2SMmWkok3pnrQ/hLROC1Qu3rLKMmdP/+6vCyWW+lbHVWiNWZIJA== X-Received: by 2002:a17:90b:1997:: with SMTP id mv23mr28266631pjb.194.1593610198679; Wed, 01 Jul 2020 06:29:58 -0700 (PDT) Received: from kaaira-HP-Pavilion-Notebook ([103.113.213.178]) by smtp.gmail.com with ESMTPSA id j13sm5322045pjz.8.2020.07.01.06.29.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jul 2020 06:29:58 -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 , hverkuil@xs4all.nl Cc: Kaaira Gupta Subject: [PATCH v9 3/3] media: vimc: Add a control to display info on test image Date: Wed, 1 Jul 2020 18:59:40 +0530 Message-Id: <20200701132940.21257-4-kgupta@es.iitr.ac.in> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200701132940.21257-1-kgupta@es.iitr.ac.in> References: <20200701132940.21257-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 Reported-by: kernel test robot --- 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..f5674b9b757e 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 = (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,