driverdev-devel.linuxdriverproject.org archive mirror
 help / color / mirror / Atom feed
From: "Jérôme Pouiller" <jerome.pouiller@silabs.com>
To: Kalle Valo <kvalo@codeaurora.org>
Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org,
	"Ulf Hansson" <ulf.hansson@linaro.org>,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Rob Herring" <robh+dt@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	linux-mmc@vger.kernel.org, "Pali Rohár" <pali@kernel.org>,
	"David S . Miller" <davem@davemloft.net>
Subject: Re: [PATCH v3 05/24] wfx: add main.c/main.h
Date: Wed, 23 Dec 2020 13:09:01 +0100	[thread overview]
Message-ID: <4307946.LvFx2qVVIh@pc-42> (raw)
In-Reply-To: <87a6u57smy.fsf@codeaurora.org>

On Tuesday 22 December 2020 16:44:05 CET Kalle Valo wrote:
> Jerome Pouiller <Jerome.Pouiller@silabs.com> writes:
> 
> > +/* NOTE: wfx_send_pds() destroy buf */
> > +int wfx_send_pds(struct wfx_dev *wdev, u8 *buf, size_t len)
> > +{
> > +     int ret;
> > +     int start, brace_level, i;
> > +
> > +     start = 0;
> > +     brace_level = 0;
> > +     if (buf[0] != '{') {
> > + dev_err(wdev->dev, "valid PDS start with '{'. Did you forget to
> > compress it?\n");
> > +             return -EINVAL;
> > +     }
> > +     for (i = 1; i < len - 1; i++) {
> > +             if (buf[i] == '{')
> > +                     brace_level++;
> > +             if (buf[i] == '}')
> > +                     brace_level--;
> > +             if (buf[i] == '}' && !brace_level) {
> > +                     i++;
> > +                     if (i - start + 1 > WFX_PDS_MAX_SIZE)
> > +                             return -EFBIG;
> > +                     buf[start] = '{';
> > +                     buf[i] = 0;
> > +                     dev_dbg(wdev->dev, "send PDS '%s}'\n", buf + start);
> > +                     buf[i] = '}';
> > +                     ret = hif_configuration(wdev, buf + start,
> > +                                             i - start + 1);
> > +                     if (ret > 0) {
> > + dev_err(wdev->dev, "PDS bytes %d to %d: invalid data (unsupported
> > options?)\n",
> > +                                     start, i);
> > +                             return -EINVAL;
> > +                     }
> > +                     if (ret == -ETIMEDOUT) {
> > + dev_err(wdev->dev, "PDS bytes %d to %d: chip didn't reply (corrupted
> > file?)\n",
> > +                                     start, i);
> > +                             return ret;
> > +                     }
> > +                     if (ret) {
> > + dev_err(wdev->dev, "PDS bytes %d to %d: chip returned an unknown
> > error\n",
> > +                                     start, i);
> > +                             return -EIO;
> > +                     }
> > +                     buf[i] = ',';
> > +                     start = i;
> > +             }
> > +     }
> > +     return 0;
> > +}
> 
> What does this function do? Looks very strange.

I am going to add this comment:

The device need data about the antenna configuration. This information in
provided by PDS (Platform Data Set, this is the wording used in WF200
documentation) files. For hardware integrators, the full process to create
PDS files is described here:
  https://github.com/SiliconLabs/wfx-firmware/blob/master/PDS/README.md

So this function aims to send PDS to the device. However, the PDS file is
often bigger than Rx buffers of the chip, so it has to be sent in multiple
parts.

In add, the PDS data cannot be split anywhere. The PDS files contains tree
structures. Braces are used to enter/leave a level of the tree (in a JSON
fashion). PDS files can only been split between root nodes.

-- 
Jérôme Pouiller



_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

  reply	other threads:[~2020-12-23 12:09 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-04 15:51 [PATCH v3 00/24] wfx: get out from the staging area Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 01/24] mmc: sdio: add SDIO IDs for Silabs WF200 chip Jerome Pouiller
2020-12-22 15:04   ` Kalle Valo
2020-11-04 15:51 ` [PATCH v3 02/24] dt-bindings: introduce silabs,wfx.yaml Jerome Pouiller
2020-11-04 19:15   ` Rob Herring
2020-11-05  8:36     ` Jérôme Pouiller
2020-11-04 15:51 ` [PATCH v3 03/24] wfx: add Makefile/Kconfig Jerome Pouiller
2020-12-22 15:02   ` Kalle Valo
2020-12-22 21:19     ` Jérôme Pouiller
2020-12-23  5:16       ` Kalle Valo
2020-12-22 15:05   ` Kalle Valo
2020-11-04 15:51 ` [PATCH v3 04/24] wfx: add wfx.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 05/24] wfx: add main.c/main.h Jerome Pouiller
2020-12-22 15:07   ` Kalle Valo
2020-12-22 15:44   ` Kalle Valo
2020-12-23 12:09     ` Jérôme Pouiller [this message]
2020-11-04 15:51 ` [PATCH v3 06/24] wfx: add bus.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 07/24] wfx: add bus_spi.c Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 08/24] wfx: add bus_sdio.c Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 09/24] wfx: add hwio.c/hwio.h Jerome Pouiller
2020-12-22 15:10   ` Kalle Valo
2020-12-22 15:27     ` Greg Kroah-Hartman
2020-12-22 21:02       ` Jérôme Pouiller
2020-12-23  5:28         ` Kalle Valo
2021-01-04 12:34         ` Dan Carpenter
2021-01-04 12:38           ` Dan Carpenter
2021-01-04 14:48           ` Johan Hovold
2020-12-23  8:01       ` Jérôme Pouiller
2020-12-23  8:09         ` Greg Kroah-Hartman
2020-11-04 15:51 ` [PATCH v3 10/24] wfx: add fwio.c/fwio.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 11/24] wfx: add bh.c/bh.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 12/24] wfx: add hif_api_*.h Jerome Pouiller
2020-12-22 15:20   ` Kalle Valo
2020-12-22 21:05     ` Jérôme Pouiller
2020-11-04 15:51 ` [PATCH v3 13/24] wfx: add hif_tx*.c/hif_tx*.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 14/24] wfx: add key.c/key.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 15/24] wfx: add hif_rx.c/hif_rx.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 16/24] wfx: add data_rx.c/data_rx.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 17/24] wfx: add queue.c/queue.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 18/24] wfx: add data_tx.c/data_tx.h Jerome Pouiller
2020-12-22 15:27   ` Kalle Valo
2020-12-22 15:31   ` Kalle Valo
2020-11-04 15:52 ` [PATCH v3 19/24] wfx: add sta.c/sta.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 20/24] wfx: add scan.c/scan.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 21/24] wfx: add debug.c/debug.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 22/24] wfx: add traces.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 23/24] wfx: remove from the staging area Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 24/24] wfx: get out " Jerome Pouiller
2020-12-22 15:23 ` [PATCH v3 00/24] " Kalle Valo

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=4307946.LvFx2qVVIh@pc-42 \
    --to=jerome.pouiller@silabs.com \
    --cc=davem@davemloft.net \
    --cc=devel@driverdev.osuosl.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=kvalo@codeaurora.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pali@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=ulf.hansson@linaro.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).