lkml.org 
[lkml]   [2023]   [Mar]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v2 0/7] PolarFire SoC Auto Update Support
    Date
    Hey all,

    This patchset adds support for the "Auto Update" feature on PolarFire
    SoC that allows for writing an FPGA bistream to the SPI flash connected
    to the system controller.
    On powercycle (or reboot depending on how the firmware implements the
    openSBI SRST extension) "Auto Update" will take place, and program the
    FPGA with the contents of the SPI flash - provided that that image is
    valid and an actual upgrade from that already programmed!

    Unfortunately, this series is not really testable yet - the Engineering
    Sample silicon on most dev boards has a bug in the QSPI controller
    connected to the system controller's flash and cannot access it.
    Pre-production and later silicon has this bug fixed.

    I previously posted an RFC about my approach in this driver, since as a
    flash-based FPGA we are somewhat different to the existing
    self-reprogramming drivers here. That RFC is here:
    https://lore.kernel.org/linux-fpga/20221121225748.124900-1-conor@kernel.org/

    This series depends on the following fixes:
    https://lore.kernel.org/all/d7c3ec51-8493-444a-bdec-2a30b0a15bdc@spud/

    The patch adding the driver depends on the soc patches earlier in the
    series, so taking both through the same tree makes sense. Depending on
    sequencing with the dependencies, me taking it through the soc tree
    (with Acks etc of course) may make the most sense.

    Cheers,
    Conor.

    Changes in v2:
    - per Russ' suggestion, the driver has been switched to using the
    firmware-upload API rather than the fpga one
    - as a result of that change, the structure of the driver has changed
    significantly, although most of that is reshuffling existing code
    around
    - check if the upgrade is possible in probe and fail if it isn't
    - only write the image index if it is not already set
    - delete the now unneeded debugfs bits

    CC: Conor Dooley <conor.dooley@microchip.com>
    CC: Daire McNamara <daire.mcnamara@microchip.com>
    CC: Rob Herring <robh+dt@kernel.org>
    CC: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
    CC: Moritz Fischer <mdf@kernel.org>
    CC: Wu Hao <hao.wu@intel.com>
    CC: Xu Yilun <yilun.xu@intel.com>
    CC: Tom Rix <trix@redhat.com>
    CC; Russ Weight <russell.h.weight@intel.com>
    CC: linux-riscv@lists.infradead.org
    CC: devicetree@vger.kernel.org
    CC: linux-kernel@vger.kernel.org
    CC: linux-fpga@vger.kernel.org

    Conor Dooley (7):
    soc: microchip: mpfs: add a prefix to rx_callback()
    dt-bindings: soc: microchip: add a property for system controller
    flash
    soc: microchip: mpfs: enable access to the system controller's flash
    soc: microchip: mpfs: print service status in warning message
    soc: microchip: mpfs: add auto-update subdev to system controller
    fpga: add PolarFire SoC Auto Update support
    riscv: dts: microchip: add the mpfs' system controller qspi &
    associated flash

    .../microchip,mpfs-sys-controller.yaml | 10 +
    .../boot/dts/microchip/mpfs-icicle-kit.dts | 21 +
    arch/riscv/boot/dts/microchip/mpfs.dtsi | 24 +-
    drivers/fpga/Kconfig | 11 +
    drivers/fpga/Makefile | 3 +-
    drivers/fpga/microchip-auto-update.c | 494 ++++++++++++++++++
    drivers/soc/microchip/Kconfig | 1 +
    drivers/soc/microchip/mpfs-sys-controller.c | 37 +-
    include/soc/microchip/mpfs.h | 2 +
    9 files changed, 591 insertions(+), 12 deletions(-)
    create mode 100644 drivers/fpga/microchip-auto-update.c

    --
    2.39.2

    \
     
     \ /
      Last update: 2023-03-31 09:19    [W:4.050 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site