From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
To: f.fainelli@gmail.com, gregkh@linuxfoundation.org,
helgaas@kernel.org, linux-kernel@vger.kernel.org
Cc: Rob Herring <robh@kernel.org>,
tim.gover@raspberrypi.org, linux-pci@vger.kernel.org,
linux-usb@vger.kernel.org,
Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
bcm-kernel-feedback-list@broadcom.com,
linux-rpi-kernel@lists.infradead.org,
linux-arm-kernel@lists.infradead.org, wahrenst@gmx.net
Subject: [PATCH v7 0/4] USB: pci-quirks: Add Raspberry Pi 4 quirk
Date: Wed, 29 Apr 2020 18:47:30 +0200 [thread overview]
Message-ID: <20200429164734.21506-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
co-processor, VideoCore. 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.
By Florian's suggestion I've been spending some time exploring the device
link[1] API in order to see if that could save us from explicitly creating
probe dependencies between pcie-brcmstb and firmware/raspberrypi (patch #3).
Technically these dependencies could be inferred from DT. It turns out Saravana
Kannan has been looking at this already. A new boot mechanism, activated with
fw_devlink=on takes care of the device probe ordering on devices with
consumer/supplier relationships. For now this relationship is created based on
the usage of generic DT properties, but has no support for vendor-specifc DT
properties, which we'd be forced to use in order to create a relationship
between our two devices since our setup is highly non generic. There will
probably be at some point support for such properties, and we will then be able
to revisit some of this code.
All this is based on the work by Tim Gover in RPi's downstream
kernel[2].
[1] https://www.kernel.org/doc/html/v4.13/driver-api/device_link.html
[2] https://github.com/raspberrypi/linux/commit/9935b4c7e360b4494b4cb6e3ce797238a1ab78bd
---
Changes since v6:
- Make rpi_firmware_init_vl805() more robust
- Rewrite comments and patch descriptions to be more accessible to non RPi
fluent people
- Removed Florian's Reviewed-by in patch #2 as function changed
substantially
- Tested with/witout u-boot
Changes since v5:
- Fix issues reported by Kbuild test robot
Changes since v4:
- Addressed Sergei's comments
- Fix potential warning in patch #2
Changes since v3:
- Addressed Greg's comments
There was no v2, my bad.
Changes since v1:
- Addressed Floarians comments
Nicolas Saenz Julienne (4):
soc: bcm2835: Add notify xHCI reset property
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/Kconfig | 3 +-
drivers/firmware/raspberrypi.c | 52 ++++++++++++++++++++++
drivers/pci/controller/pcie-brcmstb.c | 17 +++++++
drivers/usb/host/pci-quirks.c | 16 +++++++
include/soc/bcm2835/raspberrypi-firmware.h | 9 +++-
5 files changed, 95 insertions(+), 2 deletions(-)
--
2.26.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2020-04-29 16:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-29 16:47 Nicolas Saenz Julienne [this message]
2020-04-29 16:47 ` [PATCH v7 1/4] soc: bcm2835: Add notify xHCI reset property Nicolas Saenz Julienne
2020-04-29 16:47 ` [PATCH v7 2/4] firmware: raspberrypi: Introduce vl805 init routine Nicolas Saenz Julienne
2020-05-02 9:05 ` Stefan Wahren
2020-05-04 8:59 ` Nicolas Saenz Julienne
2020-05-04 19:06 ` Stefan Wahren
2020-05-04 22:52 ` Bjorn Helgaas
2020-04-29 16:47 ` [PATCH v7 3/4] PCI: brcmstb: Wait for Raspberry Pi's firmware when present Nicolas Saenz Julienne
2020-04-29 16:47 ` [PATCH v7 4/4] USB: pci-quirks: Add Raspberry Pi 4 quirk 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=20200429164734.21506-1-nsaenzjulienne@suse.de \
--to=nsaenzjulienne@suse.de \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=f.fainelli@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=helgaas@kernel.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=robh@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox