Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp1770612ybe; Tue, 3 Sep 2019 03:16:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqx0Gudl16jUOh8gUSbLJVwAhU28ei55NfGveZnjm5AxbEV3hEgl3vETwbjGS0FXT9DncNOF X-Received: by 2002:a17:90a:be07:: with SMTP id a7mr17832191pjs.88.1567505780097; Tue, 03 Sep 2019 03:16:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567505780; cv=none; d=google.com; s=arc-20160816; b=JdgkizV3kuEsVcop4K7kyOb48L0R3qFapqoiPKDVmRTch8Drj6RCCSy7j7cs4vcpmu nDnr6WWSXqib5jVZWa9FkWwnHFXw/TxYyRuPJilOh7VgYaeNth2lgXfIgDwtF2Vj9qIF 63oqzwy6TnzEJXesssz78QDdpWdXT3Q8+mXS2ojB96yT0k3jQSAEqk9BjGTWQD8quQCN Fy6U4DSqpAbVsVLyNdNptksVHU/Lgm2JS21jsPquwUa77++9akSBeF0aGkL/BRjmr7op Bp24Tit3TlxTSaf9cZtx1RCZWSDM1BplFSVS0uYaA+9siMHBnnMOJJhQ9F4ghb6pg5jZ bLrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=wov3r+Qmg67OWjq6JBFuE0Ogw4WgDA1VVeI4oZIkIsU=; b=ncWXQ1tmYqHznDNda8/U3V8Ukak4n7nlJ2dw3aEQFg0SaypD/FGGwYvVtauNwpoFqR +omKDr61ES9PIelLOU/bIN55GnbPidhRlFrbu74IE+fgpsZadcmZnKVACmiCFA4woxcx 3msE5gJcPGu2UQwxF3BjIC4OBAGhxbtFb1r79sXXcZPLOT0B76ndUnWF5WNw55NJR07Y 6YeGLkYtAbPeU3VcXVhMo6FNPwXkS1a3hKYh1elkX2c700u56xGUOxUgGCpwUX8Bvgfj DWinnMJba0tduTLM1rBwj93BrktfJtOaPMzMWXh0fyrGs8pPIrW7200y5j+27Vfy9hZ4 Ti3w== 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=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t25si14705801pgn.160.2019.09.03.03.16.04; Tue, 03 Sep 2019 03:16:20 -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=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728270AbfICKMx (ORCPT + 99 others); Tue, 3 Sep 2019 06:12:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:15620 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726840AbfICKMx (ORCPT ); Tue, 3 Sep 2019 06:12:53 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E07B67EB89; Tue, 3 Sep 2019 10:12:52 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-117-72.ams2.redhat.com [10.36.117.72]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1DE26196AE; Tue, 3 Sep 2019 10:12:49 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 164CD31F38; Tue, 3 Sep 2019 12:12:49 +0200 (CEST) From: Gerd Hoffmann To: dri-devel@lists.freedesktop.org Cc: Gerd Hoffmann , Maarten Lankhorst , Maxime Ripard , Sean Paul , David Airlie , Daniel Vetter , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v2 1/6] drm: add drm_print_bits Date: Tue, 3 Sep 2019 12:12:43 +0200 Message-Id: <20190903101248.12879-2-kraxel@redhat.com> In-Reply-To: <20190903101248.12879-1-kraxel@redhat.com> References: <20190903101248.12879-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.71]); Tue, 03 Sep 2019 10:12:53 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org New helper to print named bits of some value (think flags fields). Signed-off-by: Gerd Hoffmann --- include/drm/drm_print.h | 3 +++ drivers/gpu/drm/drm_print.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h index a5d6f2f3e430..8658c1da1c7d 100644 --- a/include/drm/drm_print.h +++ b/include/drm/drm_print.h @@ -88,6 +88,9 @@ __printf(2, 3) void drm_printf(struct drm_printer *p, const char *f, ...); void drm_puts(struct drm_printer *p, const char *str); void drm_print_regset32(struct drm_printer *p, struct debugfs_regset32 *regset); +void drm_print_bits(struct drm_printer *p, unsigned int indent, + const char *label, unsigned int value, + const char *bits[], unsigned int nbits); __printf(2, 0) /** diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c index a17c8a14dba4..7f7aba920f51 100644 --- a/drivers/gpu/drm/drm_print.c +++ b/drivers/gpu/drm/drm_print.c @@ -179,6 +179,42 @@ void drm_printf(struct drm_printer *p, const char *f, ...) } EXPORT_SYMBOL(drm_printf); +/** + * drm_print_bits - print bits to a &drm_printer stream + * + * Print bits (in flag fields for example) in human readable form. + * + * @p: the &drm_printer + * @indent: Tab indentation level (max 5) + * @label: field label. + * @value: field value. + * @bits: Array with bit names. + * @nbits: bit name array size. + */ +void drm_print_bits(struct drm_printer *p, unsigned int indent, + const char *label, unsigned int value, + const char *bits[], unsigned int nbits) +{ + bool first = true; + unsigned int i; + + for (i = 0; i < nbits; i++) { + if (!(value & (1 << i))) + continue; + if (!bits[i]) + continue; + if (first) { + first = false; + drm_printf_indent(p, indent, "%s=%s", + label, bits[i]); + } else + drm_printf(p, ",%s", bits[i]); + } + if (!first) + drm_printf(p, "\n"); +} +EXPORT_SYMBOL(drm_print_bits); + void drm_dev_printk(const struct device *dev, const char *level, const char *format, ...) { -- 2.18.1