From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Daniel Kestrel <kestrelseventyfour@gmail.com>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>,
Rob Herring <robh+dt@kernel.org>,
linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 0/3] Add support for WASP SoC on AVM router boards
Date: Mon, 24 Oct 2022 10:38:58 -0600 [thread overview]
Message-ID: <20221024163858.GB626419@p14s> (raw)
In-Reply-To: <20220804210806.4053-1-kestrelseventyfour@gmail.com>
Hi Daniel,
I have started to review this patchset. I expect the process to take several
days and will clearly let you know when I am done.
Thanks,
Mathieu
On Thu, Aug 04, 2022 at 11:08:03PM +0200, Daniel Kestrel wrote:
> There is a popular set of Lantiq xrx200 router boards by AVM in
> Germany (AVM Fritzbox 3390, 3490, 5490, 5491 and 7490) which
> have the strange implementation of having the wifi cards
> connected to a separate memory only ATH79 based SoC. It has no
> persistent storage and no access to any resource on the Lantiq
> host, but is connect to the Lantiq GSWIP switch on an additional
> fixed internal network port.
> This kernel module is to support booting the secondary SoC called
> Wireless Assistant Support Processor (WASP).
> After turning it on, a small network boot firmware is sent to
> the SoC by using mdio and when it is started, an initramfs
> linux image is sent to the SoC using raw ethernet frames.
>
> The whole procedure takes about 6 seconds, if there is no error.
> So far tested on 3490, 5490 and 7490 devices based on OpenWrt, 3390
> takes about 20 seconds.
>
> Patch 1/3 adds the vendor name
> Patch 2/3 adds the dt-bindings
> Patch 3/3 adds the remoteproc driver
>
> To build and run, there is OpenWrt PR 5075.
>
> Please review.
>
> Changes in v5:
> - Replace names for properties and descriptions as requested in the
> device tree documentation and change the driver to accept them
> - Change example in the device tree documentation
> - Restructure constants and defines in the beginning of the driver
> source for better readability
> - Combine m_start_addr and m_exec_addr into a single constant and
> change avm_wasp_netboot_write_header to use only this one constant
> - Change variable startup_gpio to power_gpio in driver
>
> Changes in v4:
> - Fix compiler warnings with W=2 option
>
> Changes in v3:
> - Replace generic avm,fritzboxx490-wasp with actual device names for
> device tree documentation and change the driver to accept them
> - Add maxItems to device tree documentation
> - Change example in the device tree documentation
> - Fix wait time to make the Wasp upload work for 3390 more reliable
> - Enable the SOC on driver load, use reset instead of disable/enable
> while driver is loaded and disable on unloading the driver
> - Change some messages printed to adhere to standards (e.g. remove !)
>
> Changes in v2:
> - Remove firmware names from dt-binding and add as kmod parameters
> - Rename other bindings with vender prefix and fix gpios suffix
> - Change descriptions in dt-binding
> - Replace/Remove asynch load of firmware with request_firmware_direct
> - Fix comments to use the errno define instead of the number
> - Implement wait loops with read_poll_timeout() macro
> - Wrap read_poll_timeout() macro in function saving 6k module size
> - Return -ETIMEDOUT for all errors returned by read_poll_timeout
> - Replace mdio writes/reads with mdiobus_write and mdiobus_read and add
> return codes and their handling
> - Remove mutex for mdiobus_lock and add return code checking for mdio ops
> - Replaced the mdio register array with directly specifying registers
> - As a result of the previous 3 changes remove the functions for mdio
> - Consolidate error messages for mdio writes into a single one saved 1k
> for module size
> - Replaced mdelay with usleep_range saved 0,7k module size
> - Remove unneeded include <linux/interrupt.h> and <linux/error.h>
> - Wrap all blocks with {} and fix some indentation errors
> - Change const len in to size_t in avm_wasp_netboot_write_chunk
> - Make all methods static to fix kernel bot warning
> - Change read variable name in avm_wasp_load_initramfs_image
> - Change ssize_t variables to size_t in avm_wasp_load_initramfs_image
> - avm_wasp_netboot_write_chunk change for loop for 2 byte divisibility
> - Change uint32_t to u32
> - Change int count = -1 to u32 with U32_MAX initialisation
> - Add check for firmware len divisable by 4
> - Replace big endian bit shift operations with be32_to_cpu
> - Change loop to write 14 byte firmware chuncks like suggested
> - Change WASP_CHUNK_SIZE to ARRAY_SIZE(mac_data) for readability
> - Change int done to boolean
> - Change unsigned ints to u32
> - Change int to size_t for send_len
> - Use int for numbytes because kernel_recvmsg returns error or number
> - Two sockets are not needed, so reduce to one socket usage
> - Remove struct timeval definition, replace with __kernel_old_timeval
> - __kernel_old_timeval is depracated, but arch mips is 32bit platform
> - Replace &avmwasp->pdev->dev with local dev
> - Check if wasp network interface is up and fail if not in start method
> - Remove setsockopt for SO_REUSEADDR and SO_BINDTODEVICE
> - Remove packet_counter
> - Move firmware and firmware_end out of RESP_DISCOVER to make sure that
> they are initialized if RESP_DISCOVER is not happening first
> - indend break;
> - Move second half of the send/receive paket while loop to RESP_OK and
> let RESP_DISCOVER fall through
> - Remove bringing up the wasp network interface
> - Check if wasp network interface is up in probe and defer if not
> - Remove the check for the root device and replace it with match data
> for WASP device identification
> - Move of_read and find of mdio bus to rproc_start but delete reference
> after using it in the rproc_start method
> - Replace dev_set_drvdata with platform_set_drvdata
> - Remove avm_wasp_rproc_boot_addr because its not needed and move
> setting the fw struct pointer to avm_wasp_rproc_load
> - Move avm_wasp.h definitions to kernel module
>
> Reported-by: kernel test robot <lkp@intel.com>
>
> Daniel Kestrel (3):
> dt-bindings: vendor-prefixes: Add AVM
> dt-bindings: remoteproc: Add AVM WASP
> remoteproc: Add AVM WASP driver
>
> .../bindings/remoteproc/avm,wasp-rproc.yaml | 61 +
> .../devicetree/bindings/vendor-prefixes.yaml | 2 +
> drivers/remoteproc/Kconfig | 10 +
> drivers/remoteproc/Makefile | 1 +
> drivers/remoteproc/avm_wasp.c | 1051 +++++++++++++++++
> 5 files changed, 1125 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/remoteproc/avm,wasp-rproc.yaml
> create mode 100644 drivers/remoteproc/avm_wasp.c
>
> --
> 2.17.1
>
prev parent reply other threads:[~2022-10-24 18:32 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-04 21:08 [PATCH v5 0/3] Add support for WASP SoC on AVM router boards Daniel Kestrel
2022-08-04 21:08 ` [PATCH v5 1/3] dt-bindings: vendor-prefixes: Add AVM Daniel Kestrel
2022-08-04 21:08 ` [PATCH v5 2/3] dt-bindings: remoteproc: Add AVM WASP Daniel Kestrel
2022-08-09 19:33 ` Rob Herring
2022-08-04 21:08 ` [PATCH v5 3/3] remoteproc: Add AVM WASP driver Daniel Kestrel
2022-10-25 17:59 ` Mathieu Poirier
2022-10-26 17:54 ` Mathieu Poirier
2022-10-30 17:58 ` Tanmay Shah
2022-10-24 16:38 ` Mathieu Poirier [this message]
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=20221024163858.GB626419@p14s \
--to=mathieu.poirier@linaro.org \
--cc=bjorn.andersson@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=kestrelseventyfour@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.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