From: Mauro Carvalho Chehab <mchehab@kernel.org>
To: Tsuchiya Yuto <kitakar@gmail.com>
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
linux-kernel@vger.kernel.org,
Nable <nable.maininbox@googlemail.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Fabio Aiuto <fabioaiuto83@gmail.com>,
"andrey.i.trufanov" <andrey.i.trufanov@gmail.com>,
Patrik Gfeller <patrik.gfeller@gmail.com>
Subject: Re: [PATCH 04/17] media: atomisp: pci: do not use err var when checking port validity for ISP2400
Date: Thu, 28 Oct 2021 12:39:44 +0100 [thread overview]
Message-ID: <20211028123944.66c212c1@sal.lan> (raw)
In-Reply-To: <1a295721fd1f1e512cd54a659a250aef162bfb6f.camel@gmail.com>
Em Thu, 28 Oct 2021 13:12:45 +0900
Tsuchiya Yuto <kitakar@gmail.com> escreveu:
> <Adding back people/list to Cc>
>
> On Tue, 2021-10-26 at 09:26 +0100, Mauro Carvalho Chehab wrote:
> > Em Mon, 18 Oct 2021 01:19:44 +0900
> > Tsuchiya Yuto <kitakar@gmail.com> escreveu:
> >
> > > Currently, the `port >= N_CSI_PORTS || err` checks for ISP2400 are always
> > > evaluated as true because the err variable is set to `-EINVAL` on
> > > declaration but the variable is never used until the evaluation.
> > >
> > > Looking at the diff of commit 3c0538fbad9f ("media: atomisp: get rid of
> > > most checks for ISP2401 version"), the `port >= N_CSI_PORTS` check is
> > > for ISP2400 and the err variable check is for ISP2401. Fix this issue
> > > by adding ISP version test there accordingly.
> > >
> > > Yes, there are other better ways to fix this issue, like adding support
> > > for ISP2400 to ia_css_mipi_is_source_port_valid(). In this way, we can
> > > unify the following test:
> > >
> > > if (!IS_ISP2401)
> > > port = (unsigned int)pipe->stream->config.source.port.port;
> > > else
> > > err = ia_css_mipi_is_source_port_valid(pipe, &port);
> > >
> > > However, the IS_ISP2401 test here (formerly `ifdef ISP2401`) is not
> > > a result of real hardware difference, but just a result of the following
> > > two different versions of driver merged by tools [1]:
> > >
> > > - ISP2400: irci_stable_candrpv_0415_20150521_0458
> > > - ISP2401: irci_ecr-master_20150911_0724
> >
> > No.
> >
> > While I don't have any internal information from the hardware manufacturer,
> > I guess you misinterpreted things here. 2400 and 2401 are different
> > hardware versions. See atomisp_pci_probe() logic.
> >
> > Basically, Cherrytail and Anniedale comes with 2401. Older Atom CPUs
> > (Merrifield and Baytrail) comes with 2400.
>
> Yes, indeed, 2400 and 2401 are different hardware. When they (I mean who
> originally wrote atomisp driver non-upstream) needed to distinguish
> between ISP2400 and ISP2401, they used the ifdefs like the following:
>
> - USE_INPUT_SYSTEM_VERSION_2 (for both ISP2400/ISP2401)
> - USE_INPUT_SYSTEM_VERSION_2401 (for ISP2401)
> ...
>
> I think this is a sign that the atomisp driver supports both
> ISP2400/ISP2401 in a single version.
Actually, supporting both on a single version is part of Alan's work.
It seems he used the generation tool to produce a version for 2400, and
then re-used it to generate for 2401. It then used some scripting tool
to convert the differences on #ifdef ISP2401. See:
a49d25364dfb ("staging/atomisp: Add support for the Intel IPU v2")
There are things there like:
+#ifdef ISP2401
+
+#endif
I did a large cleanup work to get rid of those ifdefs, replacing them
by runtime logic.
The end goal is to have a single compile-time driver that works for
both 2400 and 2401.
This is not possible yet, as there are some registers that are mapped
on different addresses, depending on the hardware version, and making
it generic requires a lot of work and tests. So, for now, we need to
have a compile-time option to select between both.
> Indeed, the upstreamed atomisp uses irci_stable_candrpv_0415_20150521_0458
> for ISP2400 and IIUC it was working on Bay Trail. On the other hand,
> intel-aero is a kernel for Cherry Trail and uses the same version
> irci_stable_candrpv_0415_20150521_0458.
>
> So, both ISP version ISP2400/ISP2401 can be supported by a single
> driver version.
I See. OK!
> > > We should eventually remove (not unify) such tests caused by just a
> > > driver version difference and use just one version of driver. So, for
> > > now, let's avoid further unification.
> > >
> > > [1] The function ia_css_mipi_is_source_port_valid() and its usage is
> > > added on updating css version to irci_master_20150701_0213
> > > https://raw.githubusercontent.com/intel/ProductionKernelQuilts/cht-m1stable-2016_ww31/uefi/cht-m1stable/patches/cam-0439-atomisp2-css2401-and-2401_legacy-irci_master_2015070.patch
> > > ("atomisp2: css2401 and 2401_legacy-irci_master_20150701_0213")
> >
> > What happens is that there is a 2401 and a 2401 "legacy". It sounds
> > that this due to some different software stacks that are reflected both
> > at the firmware and at the driver.
>
> Yeah, I'm not sure what the "legacy" is. It might be a reference of
> `ISP2401_NEW_INPUT_SYSTEM` (css_2401_csi2p_system) and
> non-`ISP2401_NEW_INPUT_SYSTEM` (css_2401_system).
>
> > -
> >
> > On other words, this patch requires some rework, as otherwise it will break
> > support for Baytrail.
>
> You mean "this patch"? then, I intended this patch is rather a fix for
> ISP2400 case! The err variable for ISP2400 case is always true because
> it is not used before the error check:
>
> int
> allocate_mipi_frames(struct ia_css_pipe *pipe,
> struct ia_css_stream_info *info)
> {
> int err = -EINVAL;
> [...]
> if (!IS_ISP2401)
> port = (unsigned int)pipe->stream->config.source.port.port;
> else
> err = ia_css_mipi_is_source_port_valid(pipe, &port);
>
> assert(port < N_CSI_PORTS);
>
> if (port >= N_CSI_PORTS || err) {
> ia_css_debug_dtrace(IA_CSS_DEBUG_TRACE_PRIVATE,
> "allocate_mipi_frames(%p) exit: error: port is not correct (port=%d).\n",
> pipe, port);
> return -EINVAL;
> }
>
> The first usage of err variable is ia_css_mipi_is_source_port_valid()
> for IS_ISP2401 case, but it's not used for ISP2400 case. This causes
> the evaluation `port >= N_CSI_PORTS || err` always true for ISP2400 case,
> meaning it will be always treated as a error.
Ok. Had you test the driver with Baytrail?
>
> > Also, patch 13 should be dropped, as the firmware versions for 2400 are
> > different
>
> The firmware version for 2400 on the upstreamed atomisp is
> irci_stable_candrpv_0415_20150521_0458 :-)
>
> static const char *isp2400_release_version = STR(irci_stable_candrpv_0415_20150521_0458);
> static const char *isp2401_release_version = STR(irci_ecr - master_20150911_0724);
>
> The intention of that patch is rather, it clarifies ISP2401 is now using
> the same driver (css) version as ISP2400.
Ok.
> > - and maybe patches 8 to 12 may need more work in order to not
> > touch 2400.
>
> Those patches do not break ISP2400, because what they do for ISP2400
> is that, they remove members from `struct`s which were initially inside
> of `ifdef ISP2401`. And because these removed members were initially
> inside of the ifdefs, the usage was also inside the ifdefs.
Did you test on Baytrail (ISP2400), and with the compile-time option
enabled/disabled?
Regards,
Mauro
next prev parent reply other threads:[~2021-10-28 11:39 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-17 16:19 [PATCH 00/17] various fixes for atomisp to make it work Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 01/17] media: atomisp: pci: add missing media_device_cleanup() in atomisp_unregister_entities() Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 02/17] media: atomisp: pci: fix punit_ddr_dvfs_enable() argument for mrfld_power up case Tsuchiya Yuto
2021-10-18 11:07 ` Andy Shevchenko
2021-10-20 13:25 ` Tsuchiya Yuto
2021-12-01 12:07 ` Tsuchiya Yuto
2021-11-02 11:26 ` Dan Carpenter
2021-11-08 14:48 ` Tsuchiya Yuto
2021-11-08 15:10 ` Dan Carpenter
2021-10-17 16:19 ` [PATCH 03/17] media: atomisp: pci: fix inverted logic in buffers_needed() Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 04/17] media: atomisp: pci: do not use err var when checking port validity for ISP2400 Tsuchiya Yuto
[not found] ` <20211026092637.196447aa@sal.lan>
2021-10-28 4:12 ` Tsuchiya Yuto
2021-10-28 6:52 ` Mauro Carvalho Chehab
2021-10-28 11:39 ` Mauro Carvalho Chehab [this message]
2021-11-01 13:38 ` Tsuchiya Yuto
2021-11-01 14:10 ` Mauro Carvalho Chehab
2021-11-01 19:06 ` Hans de Goede
2021-11-01 19:27 ` Andy Shevchenko
2021-11-01 19:52 ` Hans de Goede
2021-11-01 20:03 ` Mauro Carvalho Chehab
2021-11-01 21:06 ` Hans de Goede
2021-11-01 21:33 ` Mauro Carvalho Chehab
2021-11-11 14:34 ` Tsuchiya Yuto
2021-11-11 16:09 ` Andy Shevchenko
2021-11-11 19:37 ` Mauro Carvalho Chehab
2021-11-11 20:39 ` Andy Shevchenko
2021-11-11 18:38 ` Mauro Carvalho Chehab
2021-11-17 22:24 ` Mauro Carvalho Chehab
2021-12-01 11:30 ` Tsuchiya Yuto
2021-12-01 11:35 ` Tsuchiya Yuto
2021-12-01 12:00 ` Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 05/17] media: atomisp: pci: fix inverted error check for ia_css_mipi_is_source_port_valid() Tsuchiya Yuto
2021-11-02 11:33 ` Dan Carpenter
2021-11-08 15:00 ` Tsuchiya Yuto
2021-11-08 15:14 ` Dan Carpenter
2021-11-08 15:25 ` Tsuchiya Yuto
2021-11-08 15:33 ` Dan Carpenter
2021-11-08 16:35 ` Mauro Carvalho Chehab
2021-12-01 12:15 ` Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 06/17] media: atomisp: pci: use IA_CSS_ERROR() for error messages in sh_css_mipi.c Tsuchiya Yuto
2021-11-02 11:35 ` Dan Carpenter
2021-11-08 15:39 ` Tsuchiya Yuto
2021-11-08 16:39 ` Mauro Carvalho Chehab
2021-10-17 16:19 ` [PATCH 07/17] media: atomisp: pci: fix ifdefs in sh_css.c Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 08/17] media: atomisp: pci: make fw ver irci_stable_candrpv_0415_20150521_0458 work - 1/5 Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 09/17] media: atomisp: pci: make fw ver irci_stable_candrpv_0415_20150521_0458 work - 2/5 Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 10/17] media: atomisp: pci: make fw ver irci_stable_candrpv_0415_20150521_0458 work - 3/5 Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 11/17] media: atomisp: pci: make fw ver irci_stable_candrpv_0415_20150521_0458 work - 4/5 Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 12/17] media: atomisp: pci: make fw ver irci_stable_candrpv_0415_20150521_0458 work - 5/5 Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 13/17] media: atomisp: pci: release_version is now irci_stable_candrpv_0415_20150521_0458 Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 14/17] media: atomisp: pci: Remove remaining instance of call to trace_printk Tsuchiya Yuto
[not found] ` <20211026093224.6c7f7fbf@sal.lan>
2021-10-28 9:34 ` Tsuchiya Yuto
2021-10-28 11:42 ` Mauro Carvalho Chehab
2021-11-01 14:22 ` Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 15/17] media: atomsip: pci: add Microsoft Surface 3 ACPI vars Tsuchiya Yuto
2021-10-17 16:19 ` [PATCH 16/17] [NOT-FOR-MERGE] media: atomsip: pci: add DMI match for Microsoft Surface 3 with broken DMI (OEMB) Tsuchiya Yuto
2021-10-18 7:56 ` Hans de Goede
2021-10-21 9:46 ` Tsuchiya Yuto
2021-10-21 18:46 ` Hans de Goede
2021-10-27 14:47 ` Tsuchiya Yuto
2021-10-27 15:30 ` Hans de Goede
2021-10-18 7:56 ` Hans de Goede
2021-10-17 16:19 ` [PATCH 17/17] [NOT-FOR-MERGE] atomisp: Fix up the open v load race Tsuchiya Yuto
2021-10-18 7:48 ` [PATCH 00/17] various fixes for atomisp to make it work Hans de Goede
2021-10-19 13:50 ` Tsuchiya Yuto
2021-10-19 16:36 ` Andy Shevchenko
2021-10-20 13:17 ` Tsuchiya Yuto
2021-10-18 7:56 ` Andy Shevchenko
2021-10-20 6:50 ` Mauro Carvalho Chehab
2021-10-20 12:44 ` Tsuchiya Yuto
2021-10-18 11:04 ` Andy Shevchenko
2021-10-20 12:48 ` Tsuchiya Yuto
2021-10-28 4:32 ` Tsuchiya Yuto
2021-10-28 10:58 ` Mauro Carvalho Chehab
2021-10-30 9:50 ` Tsuchiya Yuto
2021-10-30 10:49 ` Mauro Carvalho Chehab
2021-10-30 11:01 ` Andy Shevchenko
2021-10-30 18:30 ` Mauro Carvalho Chehab
2021-10-28 12:51 ` Mauro Carvalho Chehab
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=20211028123944.66c212c1@sal.lan \
--to=mchehab@kernel.org \
--cc=andrey.i.trufanov@gmail.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=fabioaiuto83@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=kitakar@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=nable.maininbox@googlemail.com \
--cc=patrik.gfeller@gmail.com \
--cc=sakari.ailus@linux.intel.com \
/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