From: johannes.goede@oss.qualcomm.com
To: Stefan Klug <stefan.klug@ideasonboard.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
libcamera-devel@lists.libcamera.org, linux-media@vger.kernel.org
Cc: Loic Poulain <lpoulain@qti.qualcomm.com>,
Michael Riesch <michael.riesch@collabora.com>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>
Subject: Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference
Date: Thu, 1 Oct 2026 17:15:05 +0200 [thread overview]
Message-ID: <ff4290aa-8edd-4135-9260-3bcd0361fa06@oss.qualcomm.com> (raw)
In-Reply-To: <93b0e5fd-5570-4418-8bbc-4b18ef5e419f@ideasonboard.com>
Hi Stefan,
Thank you for the write-up.
On 30-Sep-26 13:18, Stefan Klug wrote:
<snip>
> ## Diving into the examples
>
> Lets look at the example I listed to see how these would be solved.
>
> ### 1. Laptop with camera module from various manufacturers
>
> I believe this can be solved by either integrating the detection logic
> in libcamera and/or adding rules to udev/hwdb. But we are lacking real
> examples. So if you're able to provide identification strategies for
> real, existing hardware, I'd be glad to know about it. One strategy
> might be to use the machine identifier provided by DMI. This is however
> quite coarse and can not handle cases where the manufacturer used
> different camera modules from different vendors (using the same sensor
> model). ARe there for example ACPI properties that we could query for
> additional information?
>
> Q: Does anyone in this group have more details on which information to
> query and where to get more details from the system?
> A: ...
For the Intel IPU6/IPU7 methods there is an ACPI call which the kernel
can do on the sensor fwnode object which will return a string identifying
the modules. These strings don't really have any fixed format, typically
they contain something which look like how some laptop serials look
just a random bunch of numbers + capital letters.
Userspace cannot get to this without the kernel exporting it.
Given all the udev talk, I think a sysfs attribute would make sense
for this. We can make the kernel do the ACPI call and if it is present
add a camera_module sysfs attribute to the v4l2-subdev for the sensor,
which will only be visible when there actually is a module-name.
On laptops using devicetree we could then fill this from a devicetree
property.
>
> ### 2. Camera modules with an embedded EEPROM
>
> To make use of the EEPROM data from user space we need to carry two
> elements: The EEPROM data itself and some identifier telling which
> format the data in the EEPROM has. This seems relatively straightforward
> and we could model it like this in dts:
>
> dts-snippet:
> imx283_0: sensor@1a {
> compatible = "sony,imx283";
> ...
> eeprom = <&eeprom>;
> eeprom-format = "vendor-a-eeprom-fmt";
> };
>
> Getting the link to the EEPROM from user space is something to
> investigate. Ideas are either sysfs or media-controller.
> The eeprom-format must be specified as well, to tell user space how to
> interpret the EEPROM data, as it is typically not self-contained.
>
> Q: On a first discussion on that topic we were unsure if it would be
> preferred to expose the data directly in sysfs,
> or to symlink to the corresponding sysfs entry for the EEPROM. Any
> preferences?
> A: ...
>
> Q: Any input/things to consider from ACPI side?
> A:
For IPU6/IPU7 eeprom data is not used for camera-module identification
(AFAIK), it is all done through the (custom, Intel specific) ACPI call
I mentioned above.
> Q: What happens if the EEPROM driver is not loaded yet or is just not
> available? Should it block/defer probing of the sensor?
> A:
>
> Q: We are missing real-life examples for these cases. So input from
> vendors would be welcome.
> A:
<snip>
Regards,
Hans
next prev parent reply other threads:[~2026-10-01 15:15 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <UzpC1s2YnBtZIaRCab_Y8AbCecyauDUO4OC7Nhd1-h4TE21aLSghbwDuOKgdwJQugvPMjM4foPHuL-UKnBLD6A==@protonmail.internalid>
2026-09-14 23:38 ` [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference Laurent Pinchart
2026-09-17 13:47 ` Bryan O'Donoghue
2026-09-18 8:08 ` johannes.goede
2026-09-18 9:18 ` Laurent Pinchart
2026-09-19 21:45 ` Bryan O'Donoghue
2026-09-19 22:29 ` Laurent Pinchart
2026-09-21 11:52 ` Bryan O'Donoghue
2026-09-21 16:02 ` Nicolas Dufresne
2026-09-27 9:01 ` johannes.goede
2026-09-27 9:04 ` johannes.goede
2026-09-30 11:18 ` Stefan Klug
2026-09-30 22:01 ` Conor Dooley
2026-10-02 16:14 ` Stefan Klug
2026-10-03 14:56 ` Loic Poulain
2026-10-01 15:15 ` johannes.goede [this message]
2026-10-01 20:55 ` Laurent Pinchart
2026-10-02 6:56 ` Sakari Ailus
2026-10-02 18:31 ` Laurent Pinchart
2026-10-06 10:03 ` Sakari Ailus
[not found] ` <2e1d628f-8183-4446-9500-9886561f320b@mm-sol.com>
2026-09-30 23:23 ` Laurent Pinchart
2026-10-06 6:30 ` Gjorgji Rosikopulos
2026-10-01 6:19 ` Rishikesh Donadkar
2026-10-01 21:08 ` Laurent Pinchart
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=ff4290aa-8edd-4135-9260-3bcd0361fa06@oss.qualcomm.com \
--to=johannes.goede@oss.qualcomm.com \
--cc=conor+dt@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=libcamera-devel@lists.libcamera.org \
--cc=linux-media@vger.kernel.org \
--cc=lpoulain@qti.qualcomm.com \
--cc=michael.riesch@collabora.com \
--cc=robh@kernel.org \
--cc=stefan.klug@ideasonboard.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