devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: Ayush Singh <ayushsingh1325@gmail.com>, devicetree@vger.kernel.org
Cc: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org,
	conor+dt@kernel.org, kernelnewbies@kernelnewbies.org
Subject: Re: [Question] dt bindings for BeagleConnect
Date: Sat, 23 Sep 2023 18:08:30 +0200	[thread overview]
Message-ID: <de6c83ca-ddda-4c74-d9ea-e7c388f60b88@linaro.org> (raw)
In-Reply-To: <e0565d97-e67a-2f71-7454-cd95b9ab081d@gmail.com>

On 23/09/2023 18:04, Ayush Singh wrote:
> Hello everyone, I am working on writing a BeagleConnect driver for 
> Beagleplay board. Let me first go over some terminology:
> 
> BeagleConnect is both a technology concept and a line of board designs 
> that implement the technology. Born from Greybus, a mechanism for 
> dynamically extending a Linux system with embedded peripherals, 
> BeagleConnect adds two key elements: a 6LoWPAN transport and mikroBUS 
> manifests. The 6LoWPAN transport provides for arbitrary connections, 
> including the IEEE802.15.4g long-range wireless transport supported 
> between BeaglePlay and BeagleConnect Freedom (the first BeagleConnect 
> board design). The mikroBUS manifests provide for rapid prototyping and 
> low-node-count production with sensor boards following the mikroBUS 
> freely-licensable embedded bus standard, such that existing Linux 
> drivers can be loaded upon Greybus discovery of the nodes.
> 
> BeaglePlay consists of a main AM62 processor and a CC1352 co-processor 
> which is responsible for providing 6LoWPAN support along with Greybus 
> node discovery. The AM62 processor and CC1352 are internally connected 
> over UART. The CC1352 coprocessor is supposed to run a specific firmware 
> as a part BeagleConnect setup. It looks as follows:
> 
> AM62 (Linux Driver) <--UART--> CC1352 (Zephyr Firmware) <--6LoWPAN--> 
> BeagleConnect Freedom
> 
> I need a way to access this bridge UART. The most straightforward method 
> is adding a `compatible` property to the device tree of this UART. But I 
> am not sure how to go about adding a DT binding for it that can be 
> merged upstream.
> 
> Here are a few comments I have encountered:
> 
> 1. DT bindings need to be hardware
> 
> I am not sure which hardware the bindings need to target in my case. 
> Should the bindings be serial in nature, since I need to use the UART 
> device? Or they should be about SoC since CC1352 is the device I am 
> actually communicating with? Or maybe there is a 3rd category for an SoC 
> running a specialized firmware for a technology/protocol?
> 
> 2. DON'T create nodes just for the sake of instantiating drivers.
> 
> I guess this means that adding a child node just to add a `compatible` 
> property is not allowed? For some reason, the driver probe is not called 
> if I simply try to override the top level `compatible` property of the 
> serial device. But maybe that is just an issue with my approach?
> 
> 3. DO attempt to make bindings complete even if a driver doesn't support 
> some features.
> 
> This is only relevant if the answer to 1) is the SoC. Since the CC1352 
> device cannot be directly controlled by, the capability of this device 
> is defined by the firmware running on top of it rather than the 
> hardware. So I am not quite sure what a complete binding for such a 
> device even mean. The only property I can make required would be the 
> `compatible` property and everything else will be optional I guess?

Referring to some comments without the context - patch and the comments
given - makes any discussion difficult. We do not work like this in
upstream communities. Please respond inline, not top posting, to the
comments you received.


> I understand that strict guidelines are required since once a property 
> is added to the Kernel device tree, it will almost be impossible to 
> remove without breaking compatibility. So I would like some guidance or 
> maybe some similar devices that are already a part of the kernel which I 
> can look to for guidance.

There are plenty of other serial-attached MCUs. Just look for "mcu {"
(for serial) or mcu@ (for other buses).

Best regards,
Krzysztof


  reply	other threads:[~2023-09-23 16:08 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-23 16:04 [Question] dt bindings for BeagleConnect Ayush Singh
2023-09-23 16:08 ` Krzysztof Kozlowski [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-09-23 16:08 Ayush Singh
2023-09-23 16:09 ` Krzysztof Kozlowski
2023-09-23 16:10   ` Ayush Singh
2023-09-23 16:38     ` Krzysztof Kozlowski

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=de6c83ca-ddda-4c74-d9ea-e7c388f60b88@linaro.org \
    --to=krzysztof.kozlowski@linaro.org \
    --cc=ayushsingh1325@gmail.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=kernelnewbies@kernelnewbies.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=robh+dt@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;
as well as URLs for NNTP newsgroup(s).