Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp709315ybb; Wed, 1 Apr 2020 08:14:12 -0700 (PDT) X-Google-Smtp-Source: APiQypLpP9LOMifJz4Ap9oxnXBzLWHetdA/RuUW5uuveMxDheDRSzQBufwIivWZftykfJa6W2MAB X-Received: by 2002:a54:4416:: with SMTP id k22mr3248702oiw.34.1585754051876; Wed, 01 Apr 2020 08:14:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585754051; cv=none; d=google.com; s=arc-20160816; b=O5ytMmIYLN9tU+TCYjASdPLPJUf/0URSfEHrIZClVgnvVUT5Syqi8WWjGb3YvydY3j S5jWBLYufndZzqLL3HRciHW+w9sktcExzjg9ZG2GmmB4EdxulTpP3o/60UBNF+RRhcT+ uCswPi3F5V2RygLdT4yDEr9pFLFqIpCyrLwDzjgx0hQKyOKbXA65QS/4p1dpHSrTTILX x06zKWLHsWKfo08IV0Yg6Bnm8/LgZ5yz1go1bBsKvNozLMOXpL2JIj5PSdU1U1zlRtsX U82A/sknRfsDx6LhOcIQEgJ58nGzDDqkyAxrT31SjhYHjFHSYxAAgJvyeWu/GQt09iqP CL2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:organization:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:ironport-sdr:ironport-sdr; bh=11OUqAXeQ8sfcz6n9ZjJi6bApxy98e3pLkpQT2We7zQ=; b=ENqtUZP7HGTwlCc7tWS1SHVILuAmJoIy6qT55cuTCIzMFEvW96KzxDSXRsc8QMdHDr vot0C2lWft4ycPcwShdNHLMlHxqys7QahY/50G7Lu7MS0qN9kupQF2//wZSIndH0CQak oBEq9xt8URdjQWpSuFw5SN+W+fm7bRrrPxoWyYEVi/MfBBNiDoBl+xka+1cA1MY7TN+L HxBN0JpHpKWhyTuvXgIez49MLYn3PxDe6y+yk7NA8cG98Vctg+Qo6F8uHtLdauUDlC2p KM6VXKqpYxR1dgnrunfcOokHBNw3MukqRUqMEBUmTt9f1ArH92iELSvn+Ay7JMz2w+Zl coVA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j8si987937oib.260.2020.04.01.08.13.57; Wed, 01 Apr 2020 08:14:11 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732715AbgDAPNe (ORCPT + 99 others); Wed, 1 Apr 2020 11:13:34 -0400 Received: from mga12.intel.com ([192.55.52.136]:1169 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732442AbgDAPNd (ORCPT ); Wed, 1 Apr 2020 11:13:33 -0400 IronPort-SDR: 1pwoghMHYqAbMXajfJATqSVGYaZr6c5lpuchun8NdxLyShAbjW4VDe4E3OLoI6JoclzvPsJXje AVNPAF3u2iNw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Apr 2020 08:13:33 -0700 IronPort-SDR: YdIz9SKhq6Hwq1ov06ZyGbjHuyqz0OlLpBt/QfMWW6VuAqId83hMv2MKGqzhKLj4cNtl6B1XhT qktd/Zm41bMw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,332,1580803200"; d="scan'208";a="273210606" Received: from smile.fi.intel.com (HELO smile) ([10.237.68.40]) by fmsmga004.fm.intel.com with ESMTP; 01 Apr 2020 08:13:30 -0700 Received: from andy by smile with local (Exim 4.93) (envelope-from ) id 1jJf3c-00EvkP-Ro; Wed, 01 Apr 2020 18:13:32 +0300 Date: Wed, 1 Apr 2020 18:13:32 +0300 From: Andy Shevchenko To: Hans Verkuil Cc: Sakari Ailus , Petr Mladek , linux-media@vger.kernel.org, Dave Stevenson , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, laurent.pinchart@ideasonboard.com, mchehab@kernel.org, Sergey Senozhatsky , Steven Rostedt Subject: Re: [PATCH 1/1] lib/vsprintf: Add support for printing V4L2 and DRM fourccs Message-ID: <20200401151332.GU1922688@smile.fi.intel.com> References: <20200401140522.966-1-sakari.ailus@linux.intel.com> <080ddddf-717e-61dc-8522-fbdbe52da94a@xs4all.nl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <080ddddf-717e-61dc-8522-fbdbe52da94a@xs4all.nl> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 01, 2020 at 04:13:51PM +0200, Hans Verkuil wrote: > On 4/1/20 4:05 PM, Sakari Ailus wrote: > > Add a printk modifier %ppf (for pixel format) for printing V4L2 and DRM > > pixel formats denoted by 4ccs. The 4cc encoding is the same for both so > > the same implementation can be used. %p4cc ? > > + char ch[2] = { 0 }; > > This can just be '{ };' The latter is GCC extension, while above is C standard. Former is slightly better I think. Though see below. > > + unsigned int i; > > + > > + if (check_pointer(&buf, end, fourcc, spec)) > > + return buf; > > + > > + switch (fmt[1]) { > > + case 'f': > > + for (i = 0; i < sizeof(*fourcc); i++) { > > + ch[0] = *fourcc >> (i << 3); > > You need to AND with 0x7f, otherwise a big endian fourcc (bit 31 is set) > will look wrong. Also, each character is standard 7 bit ascii, bit 7 isn't > used except to indicate a BE variant. Why not to do it once by a flag and do reset it once? u32 tmp = *fourcc; bool be4cc = tmp & BIT(31); tmp &= BIT(31); On top of that, as promised above, why not simple do it in a simpler way, i.e. using standard idiom: for (i = 0; i < sizeof(*fourcc); i++) { if (buf < end) *buf = tmp >> (i * 8); buf++; } ? > > + buf = string(buf, end, ch, spec); > > + } > > + > > + if (*fourcc & BIT(31)) > > + buf = string(buf, end, "-BE", spec); Another possibility u8 ch[8]; if (*fourcc & BIT(31)) { put_unaligned_be32(tmp, &ch[0]); strcpy(&ch[4], "-BE"); } else { put_unaligned_le32(tmp, &ch[0]); strcpy(&ch[4], "-LE"); } return string(buf, end, &ch[0], spec); > > + return buf; > > + default: > > + return error_string(buf, end, "(%pp?)", spec); > > + } > > +} -- With Best Regards, Andy Shevchenko