All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
To: linux-kernel@vger.kernel.org
Cc: linux-usb@vger.kernel.org, linux-rpi-kernel@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	bcm-kernel-feedback-list@broadcom.com, f.fainelli@gmail.com,
	gregkh@linuxfoundation.org, tim.gover@raspberrypi.org,
	linux-pci@vger.kernel.org, wahrenst@gmx.net,
	Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
	Andrew Murray <amurray@thegoodpenguin.co.uk>
Subject: [PATCH v2 0/4] Raspberry Pi 4 VL805 firmware load support
Date: Wed, 19 Feb 2020 13:39:29 +0100	[thread overview]
Message-ID: <20200219123933.2792-1-nsaenzjulienne@suse.de> (raw)

On the Raspberry Pi 4, after a PCI reset, VL805's firmware may either be
loaded directly from an EEPROM or, if not present, by the SoC's
VideCore. This series adds support for the later.

Note that there are a set of constraints we have to consider (some of
them I missed on v1):
 - We need to make sure the VideoCore firmware interface is up and
   running before running the VL805 firmware load call.

 - There is no way to discern RPi4's VL805 chip from other platforms',
   so we need the firmware load to happen *before* running
   quirk_usb_handoff_xhci(). Failure to do so results in an unwarranted
   5 second wait while the fixup code polls xHC's unexisting state.

As per Stefan Wahren's comments I tested the behaviour on outdated
firmware. Boards dependent on this will not boot if firmware is not
up-to-date. Older boards with outdated firmware will fail to execute the
VideoCore firmware call, but xHCI will perform reliably. I added a
warning printout in case of failure.

I'm aware that Florian Fianelli noted on the previous revision that
waiting on the VideoCore firmware interface during PCIe's probe is far
from ideal. But this was before taking into account the second
constraint mentioned above. Impact on non RPi4 boards is minimal.

---

Changes since v1:
 - Split things into their own patches
 - Wait for mailbox interface in pcie-brcmstb
 - Move firmware load code into RPi4 platform code
 - Move firmware load to usb/pci-quirks.c
 - Fix behaviour on outdated firmware

Nicolas Saenz Julienne (4):
  soc: bcm2835: Sync xHCI reset firmware property with downstream
  firmware: raspberrypi: Introduce vl805 init routine
  PCI: brcmstb: Wait for Raspberry Pi's firmware when present
  USB: pci-quirks: Add Raspberry Pi 4 quirk

 drivers/firmware/raspberrypi.c             | 37 ++++++++++++++++++++++
 drivers/pci/controller/pcie-brcmstb.c      | 15 +++++++++
 drivers/usb/host/pci-quirks.c              | 18 +++++++++++
 include/soc/bcm2835/raspberrypi-firmware.h |  9 +++++-
 4 files changed, 78 insertions(+), 1 deletion(-)

-- 
2.25.0


WARNING: multiple messages have this Message-ID (diff)
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
To: linux-kernel@vger.kernel.org
Cc: f.fainelli@gmail.com, gregkh@linuxfoundation.org,
	linux-usb@vger.kernel.org,
	Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
	tim.gover@raspberrypi.org, bcm-kernel-feedback-list@broadcom.com,
	linux-rpi-kernel@lists.infradead.org, linux-pci@vger.kernel.org,
	Andrew Murray <amurray@thegoodpenguin.co.uk>,
	linux-arm-kernel@lists.infradead.org, wahrenst@gmx.net
Subject: [PATCH v2 0/4] Raspberry Pi 4 VL805 firmware load support
Date: Wed, 19 Feb 2020 13:39:29 +0100	[thread overview]
Message-ID: <20200219123933.2792-1-nsaenzjulienne@suse.de> (raw)

On the Raspberry Pi 4, after a PCI reset, VL805's firmware may either be
loaded directly from an EEPROM or, if not present, by the SoC's
VideCore. This series adds support for the later.

Note that there are a set of constraints we have to consider (some of
them I missed on v1):
 - We need to make sure the VideoCore firmware interface is up and
   running before running the VL805 firmware load call.

 - There is no way to discern RPi4's VL805 chip from other platforms',
   so we need the firmware load to happen *before* running
   quirk_usb_handoff_xhci(). Failure to do so results in an unwarranted
   5 second wait while the fixup code polls xHC's unexisting state.

As per Stefan Wahren's comments I tested the behaviour on outdated
firmware. Boards dependent on this will not boot if firmware is not
up-to-date. Older boards with outdated firmware will fail to execute the
VideoCore firmware call, but xHCI will perform reliably. I added a
warning printout in case of failure.

I'm aware that Florian Fianelli noted on the previous revision that
waiting on the VideoCore firmware interface during PCIe's probe is far
from ideal. But this was before taking into account the second
constraint mentioned above. Impact on non RPi4 boards is minimal.

---

Changes since v1:
 - Split things into their own patches
 - Wait for mailbox interface in pcie-brcmstb
 - Move firmware load code into RPi4 platform code
 - Move firmware load to usb/pci-quirks.c
 - Fix behaviour on outdated firmware

Nicolas Saenz Julienne (4):
  soc: bcm2835: Sync xHCI reset firmware property with downstream
  firmware: raspberrypi: Introduce vl805 init routine
  PCI: brcmstb: Wait for Raspberry Pi's firmware when present
  USB: pci-quirks: Add Raspberry Pi 4 quirk

 drivers/firmware/raspberrypi.c             | 37 ++++++++++++++++++++++
 drivers/pci/controller/pcie-brcmstb.c      | 15 +++++++++
 drivers/usb/host/pci-quirks.c              | 18 +++++++++++
 include/soc/bcm2835/raspberrypi-firmware.h |  9 +++++-
 4 files changed, 78 insertions(+), 1 deletion(-)

-- 
2.25.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

             reply	other threads:[~2020-02-19 12:39 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-19 12:39 Nicolas Saenz Julienne [this message]
2020-02-19 12:39 ` [PATCH v2 0/4] Raspberry Pi 4 VL805 firmware load support Nicolas Saenz Julienne
2020-02-19 12:39 ` [PATCH v2 1/4] soc: bcm2835: Sync xHCI reset firmware property with downstream Nicolas Saenz Julienne
2020-02-19 12:39   ` Nicolas Saenz Julienne
2020-02-19 19:15   ` Florian Fainelli
2020-02-19 19:15     ` Florian Fainelli
2020-02-19 12:39 ` [PATCH v2 2/4] firmware: raspberrypi: Introduce vl805 init routine Nicolas Saenz Julienne
2020-02-19 12:39   ` Nicolas Saenz Julienne
2020-02-19 19:13   ` Florian Fainelli
2020-02-19 19:13     ` Florian Fainelli
2020-02-20 16:41     ` Nicolas Saenz Julienne
2020-02-20 16:41       ` Nicolas Saenz Julienne
2020-02-19 12:39 ` [PATCH v2 3/4] PCI: brcmstb: Wait for Raspberry Pi's firmware when present Nicolas Saenz Julienne
2020-02-19 12:39   ` Nicolas Saenz Julienne
2020-02-19 19:21   ` Florian Fainelli
2020-02-19 19:21     ` Florian Fainelli
2020-02-20 18:14     ` Nicolas Saenz Julienne
2020-02-20 18:14       ` Nicolas Saenz Julienne
2020-02-20 18:27       ` Florian Fainelli
2020-02-20 18:27         ` Florian Fainelli
2020-02-19 12:39 ` [PATCH v2 4/4] USB: pci-quirks: Add Raspberry Pi 4 quirk Nicolas Saenz Julienne
2020-02-19 12:39   ` Nicolas Saenz Julienne

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=20200219123933.2792-1-nsaenzjulienne@suse.de \
    --to=nsaenzjulienne@suse.de \
    --cc=amurray@thegoodpenguin.co.uk \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=f.fainelli@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=tim.gover@raspberrypi.org \
    --cc=wahrenst@gmx.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.