From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-media@vger.kernel.org
Cc: laurent.pinchart@ideasonboard.com, hdegoede@redhat.com
Subject: [PATCH 4/6] media: ccs: Generate V4L2 CCI compliant register definitions
Date: Fri, 10 Nov 2023 11:47:03 +0200 [thread overview]
Message-ID: <20231110094705.1367083-5-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <20231110094705.1367083-1-sakari.ailus@linux.intel.com>
Generate register definitions that are fit for use with V4L2 CCI.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
.../driver-api/media/drivers/ccs/mk-ccs-regs | 61 +++++++++++++------
1 file changed, 41 insertions(+), 20 deletions(-)
diff --git a/Documentation/driver-api/media/drivers/ccs/mk-ccs-regs b/Documentation/driver-api/media/drivers/ccs/mk-ccs-regs
index 2a4edc7e051a..5f5bb740ceda 100755
--- a/Documentation/driver-api/media/drivers/ccs/mk-ccs-regs
+++ b/Documentation/driver-api/media/drivers/ccs/mk-ccs-regs
@@ -85,9 +85,11 @@ for my $fh ($H, $LH) {
sub bit_def($) {
my $bit = shift @_;
- return "BIT($bit)" if defined $kernel;
- return "(1U << $bit)" if $bit =~ /^[a-zA-Z0-9_]+$/;
- return "(1U << ($bit))";
+ if (defined $kernel) {
+ return "BIT$bit" if $bit =~ /^\(.*\)$/;
+ return "BIT($bit)";
+ }
+ return "(1U << $bit)";
}
print $H <<EOF
@@ -97,23 +99,39 @@ print $H <<EOF
EOF
;
-print $H "#include <linux/bits.h>\n\n" if defined $kernel;
-
print $H <<EOF
-#define CCS_FL_BASE 16
+#include <linux/bits.h>
+
+#include <media/v4l2-cci.h>
+
EOF
- ;
+ if defined $kernel;
+
+print $H "#define CCS_FL_BASE " .
+ (defined $kernel ? "CCI_REG_FLAG_PRIVATE_START" : 16) . "\n";
+
+my $flag = -1;
+
+sub flag_str() {
+ $flag++;
-print $H "#define CCS_FL_16BIT " . bit_def("CCS_FL_BASE") . "\n";
-print $H "#define CCS_FL_32BIT " . bit_def("CCS_FL_BASE + 1") . "\n";
-print $H "#define CCS_FL_FLOAT_IREAL " . bit_def("CCS_FL_BASE + 2") . "\n";
-print $H "#define CCS_FL_IREAL " . bit_def("CCS_FL_BASE + 3") . "\n";
+ return "CCS_FL_BASE" if !$flag;
+
+ return "(CCS_FL_BASE + $flag)";
+}
+
+if (! defined $kernel) {
+ print $H "#define CCS_FL_16BIT " . bit_def(flag_str) . "\n";
+ print $H "#define CCS_FL_32BIT " . bit_def(flag_str) . "\n";
+}
+print $H "#define CCS_FL_FLOAT_IREAL " . bit_def(flag_str) . "\n";
+print $H "#define CCS_FL_IREAL " . bit_def(flag_str) . "\n";
print $H <<EOF
#define CCS_R_ADDR(r) ((r) & 0xffff)
EOF
- ;
+ if ! defined $kernel;
print $A <<EOF
#include <stdint.h>
@@ -189,12 +207,12 @@ sub tabconv($) {
return (join "\n", @l) . "\n";
}
-sub elem_size(@) {
+sub elem_bits(@) {
my @flags = @_;
- return 2 if grep /^16$/, @flags;
- return 4 if grep /^32$/, @flags;
- return 1;
+ return 16 if grep /^16$/, @flags;
+ return 32 if grep /^32$/, @flags;
+ return 8;
}
sub arr_size($) {
@@ -369,15 +387,18 @@ while (<$R>) {
$name =~ s/[,\.-]/_/g;
my $flagstring = "";
- my $size = elem_size(@flags);
- $flagstring .= "| CCS_FL_16BIT " if $size eq "2";
- $flagstring .= "| CCS_FL_32BIT " if $size eq "4";
+ my $bits = elem_bits(@flags);
+ if (! defined $kernel) {
+ $flagstring .= "| CCS_FL_16BIT " if $bits == 16;
+ $flagstring .= "| CCS_FL_32BIT " if $bits == 32;
+ }
$flagstring .= "| CCS_FL_FLOAT_IREAL " if grep /^float_ireal$/, @flags;
$flagstring .= "| CCS_FL_IREAL " if grep /^ireal$/, @flags;
$flagstring =~ s/^\| //;
$flagstring =~ s/ $//;
$flagstring = "($flagstring)" if $flagstring =~ /\|/;
my $base_addr = $addr;
+ $addr = "CCI_REG$bits($addr)" if defined $kernel;
$addr = "($addr | $flagstring)" if $flagstring ne "";
my $arglist = @$args ? "(" . (join ", ", @$args) . ")" : "";
@@ -392,7 +413,7 @@ while (<$R>) {
argparams => {},
args => $args,
arglist => $arglist,
- elsize => $size,
+ elsize => $bits / 8,
);
if (!@$args) {
--
2.39.2
next prev parent reply other threads:[~2023-11-10 17:49 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-10 9:46 [PATCH 0/6] Use V4L2 CCI in CCS driver Sakari Ailus
2023-11-10 9:47 ` [PATCH 1/6] media: v4l: cci: Include linux/bits.h Sakari Ailus
2023-11-10 11:11 ` Hans de Goede
2023-11-10 14:44 ` Laurent Pinchart
2023-11-10 9:47 ` [PATCH 2/6] media: v4l: cci: Add driver-private bit definitions Sakari Ailus
2023-11-10 11:11 ` Hans de Goede
2023-11-10 14:44 ` Laurent Pinchart
2023-11-10 21:21 ` Sakari Ailus
2023-11-10 9:47 ` [PATCH 3/6] media: v4l: cci: Add macros to obtain register width Sakari Ailus
2023-11-10 11:14 ` Hans de Goede
2023-11-10 11:17 ` Sakari Ailus
2023-11-10 14:44 ` Laurent Pinchart
2023-11-10 14:49 ` Laurent Pinchart
2023-11-10 14:52 ` Hans de Goede
2023-11-10 21:21 ` Sakari Ailus
2023-11-10 9:47 ` Sakari Ailus [this message]
2023-11-10 9:47 ` [PATCH 5/6] media: ccs: Better separate CCS static data access Sakari Ailus
2023-11-10 14:46 ` Laurent Pinchart
2023-11-10 21:24 ` Sakari Ailus
2023-11-10 9:47 ` [PATCH 6/6] media: ccs: Use V4L2 CCI for accessing sensor registers Sakari Ailus
2023-11-10 15:21 ` Laurent Pinchart
2023-11-10 21:38 ` Sakari Ailus
2023-11-10 22:53 ` Laurent Pinchart
2023-11-10 23:03 ` Sakari Ailus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231110094705.1367083-5-sakari.ailus@linux.intel.com \
--to=sakari.ailus@linux.intel.com \
--cc=hdegoede@redhat.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox