From: Krzysztof Kozlowski <krzk@kernel.org>
To: Tzu-Hao Wei <twei@axiado.com>
Cc: Shubhangini G <shubhangini@axiado.com>,
Prasad Bolisetty <pbolisetty@axiado.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Karthikeyan Mitran <kmitran@axiado.com>,
linux-media@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, openbmc@lists.ozlabs.org
Subject: Re: [PATCH 1/2] dt-bindings: media: add axiado,ax3000-video
Date: Mon, 10 Aug 2026 09:08:54 +0200 [thread overview]
Message-ID: <0b2f43f2-5c89-481a-9472-999331aa3b3c@kernel.org> (raw)
In-Reply-To: <5d2a80ed-6c74-4ad7-8d18-c05e38bd8208@axiado.com>
On 06/08/2026 10:20, Tzu-Hao Wei wrote:
> On 8/4/2026 3:55 PM, Krzysztof Kozlowski wrote:
>> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
>>
>>
>> On Tue, Aug 04, 2026 at 07:31:25AM +0800, Tzu-Hao Wei wrote:
>>>>> There is no local register interface for this driver to program: frame
>>>>> delivery is controlled entirely by the host-side display engine and
>>>>> the PCIe endpoint mapping that feeds the shared region, both external
>>>>> to this driver. A software polling timer schedules a workqueue item at
>>>>> the configured framerate, which copies frames from the WC-mapped
>>>>> shared region into vmalloc-backed vb2 buffers. Running the copy in a
>>>>> work item rather than directly in the timer callback keeps potentially
>>>>> multi-megabyte memcpy and per-pixel conversion work out of softirq
>>>>> context.
>>>>
>>>> Then this is not a separate device. You just described a Linux driver.
>>>>
>>>> I still wait for answers of my question above. You described getting
>>>> buffers only.
>>>>
>>>
>>> Thank you for the continued review.
>>>
>>> To correctly represent this in device tree without describing a
>>> software driver as a hardware device, would moving the schema into
>>> /reserved-memory be the preferred approach for v2?
>>>
>>> Specifically, we are considering moving it to:
>>> Documentation/devicetree/bindings/reserved-memory/axiado,ax3000-video-mem.yaml
>>
>> I would rather suggest this should be part of the device handling the
>> host side of the device. Or is there none?
>>
>> Again, how do you configure the frame parameters or start capturing the
>> data?
>>
>
> Thank you for the review.
>
> Regarding frame parameters and capture:
> 1. Frame parameters: The remote host writes the active resolution and
> format into the control mailbox (the second memory region).
> 2. Starting capture: There is no hardware "start" register. The remote
> host continuously writes frames into the VRAM asynchronously. Our
> driver simply starts reading from the VRAM in software when requested.
>
> We did consider making this a child node of the PCIe Endpoint. However,
> that does not fit our architecture because this memory acts as a shared
> VRAM across multiple subsystems.
Just because you decided to split drivers into multiple subsystems does
not warrant designing bindings one or another way. IOW, number of your
drivers does not matter here.
Trivial answer to your problem is to combine the drivers so you have one
place of allocation which you pass to sub drivers.
Having this static in DTB is quite a limitation and constraint.
>
> Currently, we are preparing two other drivers for upstream: PCIe EP and
> DRM/HDMI. In our primary use case, a remote host writes frames via PCIe
> directly into this VRAM. Our DRM driver concurrently reads this same
> VRAM to drive a physical monitor, while this V4L2 driver captures the
> frames for userspace (e.g., obmc-ikvm).
>
> Because this memory is shared simultaneously by PCIe hardware,
> the DRM, and V4L2, no single software driver can simply allocate it
> dynamically. So, I think it should be defined at the system level as a
> shared reserved-memory region.
>
> Given this hardware topology, do you have a recommended devicetree
> pattern for representing this shared VRAM? We are open to your
> suggestions on the best way to model this upstream.
How does the host receive the address/size of this memory (from host
side)? How does it know where to write the frames?
Best regards,
Krzysztof
next prev parent reply other threads:[~2026-08-10 7:09 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-30 7:26 [PATCH 0/2] media: axiado: add AX3000/AX3005 V4L2 capture driver Tzu-Hao Wei
2026-07-30 7:26 ` [PATCH 1/2] dt-bindings: media: add axiado,ax3000-video Tzu-Hao Wei
2026-07-30 8:12 ` Krzysztof Kozlowski
2026-08-03 5:29 ` Tzu-Hao Wei
2026-08-03 6:28 ` Krzysztof Kozlowski
2026-08-03 23:31 ` Tzu-Hao Wei
2026-08-04 7:55 ` Krzysztof Kozlowski
2026-08-06 8:20 ` Tzu-Hao Wei
2026-08-10 7:08 ` Krzysztof Kozlowski [this message]
2026-07-30 7:26 ` [PATCH 2/2] media: axiado: add V4L2 capture driver for AX3000/AX3005 SoC Tzu-Hao Wei
2026-07-30 7:40 ` sashiko-bot
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=0b2f43f2-5c89-481a-9472-999331aa3b3c@kernel.org \
--to=krzk@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=kmitran@axiado.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=openbmc@lists.ozlabs.org \
--cc=pbolisetty@axiado.com \
--cc=robh@kernel.org \
--cc=shubhangini@axiado.com \
--cc=twei@axiado.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