APPLIED: [SRU][X/raspi2] Support for the RaspberryPi 3 B Plus board

Kleber Souza kleber.souza at canonical.com
Fri Aug 24 11:06:49 UTC 2018


On 08/01/18 16:49, Paolo Pisati wrote:
> BugLink: http://bugs.launchpad.net/bugs/1784025
> 
> Impact:
> 
> The RaspberryPi 3 B Plus[1] is the latest addition in the family of RaspberryPi
> boards, and this patchset includes all the necessary bits (dts, lan driver and
> wifi driver) to enable this board in our 4.4 Xenial raspi2 kernel.
> 
> How to test:
> 
> Build this kernel and boot a rpi3bplus with it: the board should boot fine, and
> ethernet lan and wifi should work.
> 
> Regression potential:
> 
> To ease the regression analysis, we can logically split the patchset in 3
> different set of patches.
> 
> 1) the dts files (patches 0001 to 0006)
> 
> Patch 0001 contains the pi3bplus board dts files + the lan dts fragment - these
> are new files, and don't modify any other dts in the tree.
> Patches 0002 to 0005 are the fixup modifcation to make the above dts file work
> in our 4.4 kernel.
> Patch 006 is a fix for the bcm2708_common, a device tree used in every rpi board
> dtb - it's a small fix, and the same modification is present in the 4.9+
> Raspberry respository too (see
> https://github.com/raspberrypi/linux/blob/rpi-4.9.y/arch/arm/boot/dts/bcm283x.dtsi
> aroud lines 353-354) - unfortunately they squashed that fix, so i couldn't pick
> the specific commit.
> 
> The only regression potential here is patch 0006, but since it's a small fix,
> and it's even carried upstream, i mark it as low.
> 
> 2) the lan driver (patches 0008 to 0018)
> 
> The rpi3bplus comes with a brand new gigabit capable ethernet adapter, driven by
> the lan 7515 chip, a chip mainly used in usb to ethernet dongle. Unfortunately,
> the lan7515 driver shipped in our Xenial tree was not working: the driver would
> attach, the interface shows up, packets could be sent, but the host os never
> received any input packets - sniffing the cable confirmed that the chip was
> generating traffic and receiving reply packets too.
> 
> After some debugging i found that no interrupt was generated once packet
> arrived, and that was due to upstream 23374573a899528a4b10d76276646f69b7ae1572
> "lan78xx: Correctly indicate invalid OTP", reverting this would bring my
> ethernet back to life (patch 0008).
> 
> "lan78xx: Correctly indicate invalid OTP" originated around 4.17, way after a
> complete overhaul of the phy code wad done for all the usbnet driver - after
> more debugging i found that the 4.4 driver ships a workaround to enable phy
> interrupts (see lan78xx_open()), so i'm thinking there's some correlation
> between the phy overhaul and this commit, but without the datasheet i can't tell
> what those bits in that register are actually doing - for now i just reverted
> this patch locally and made the driver work again.
> 
> All the other patches (0009 to 0018) are backports of features added to the
> driver by the Raspberry Foundation to make the driver better integrate in a dts
> environment.
> 
> There's literally no regression potential here, since the driver was not working
> in the first place, (and i actually made it work again).
> 
> 3) the wifi driver (patches 0019 to 0026)
> 
> The wifi chip used in the rpi3bplus is very different from the one used in the
> original rpi3 board (Broadcom BCM43438 vs Cypress CYW43455), but it uses the
> same driver and i had to backport several fixes from upstream to make it work:
> all the commits fix isolated bugs, and can be easily reviewed.
> 
> There's some regression potential here, but all code comes from upstream fixes,
> so i mark it as low.
> 
> When possible i picked up the upstream version of the same patch (instead of the
> one carried in the RaspberryPi branch - https://github.com/raspberrypi/linux
> rpi-4.9.y), and except for these 6 commits:
> 
> "BCM270X_DT: Add Pi 3+ dts files"
> "lan78xx: Enable LEDs if no valid EEPROM or OTP"
> "lan78xx: Read initial EEE status from DT"
> "lan78xx: Change LEDs to include 10Mb activity"
> "lan78xx: Ignore DT MAC address if already valid"
> "lan78xx: Move enabling of EEE into PHY init code"
> 
> all the remaining patches (20 out of 26) came from upstream - patches marked
> with 'cherry-picked...' are clean cherry picks, while the one with
> 'backported...' required a varying degree of rework to make it apply (and
> work).
> 
> I'm proposing this for inclusion in the Xenial raspi2 kernel.
> 
> 1: https://www.raspberrypi.org/blog/raspberry-pi-3-model-bplus-sale-now-35/
> 
> ------------------------------------------------------------------------------
> 
> The following changes since commit a9108920671adf3c81eb1cf5f35586c831b4b94a:
> 
>   UBUNTU: Ubuntu-raspi2-4.4.0-1092.100 (2018-06-12 21:35:39 +0000)
> 
> are available in the git repository at:
> 
>   git://git.launchpad.net/~p-pisati/ubuntu/+source/linux x-raspi2-3bplus
> 
> for you to fetch changes up to b2af40a9594d86d39206e7c909de0134cc516933:
> 
>   brcmfmac: sdio: Increase the default timeouts a bit (2018-08-01 12:43:49 +0200)
> 
> ----------------------------------------------------------------
> Alexander Graf (1):
>       lan78xx: Connect phy early
> 
> Dave Stevenson (1):
>       net: lan78xx: Allow for VLAN headers in timeout.
> 
> Hante Meuleman (2):
>       brcmfmac: Disable runtime pm for USB.
>       brcmfmac: Return actual error by fwil.
> 
> Paolo Pisati (12):
>       UBUNTU: SAUCE: dts: remove i2c_dsi reference (4.9+ only)
>       UBUNTU: SAUCE: dts: use 0 instead of GPIO_ACTIVE_LOW
>       UBUNTU: SAUCE: dts: remove the hdmi node since it's part of the vc4 overlay
>       UBUNTU: SAUCE: dts: use the virtgpio driver
>       UBUNTU: SAUCE: fix address & size of reg cell for usb1
>       UBUNTU: modules: remove lan78xx and microchip phy check
>       UBUNTU: SAUCE: Revert "lan78xx: Correctly indicate invalid OTP"
>       brcmfmac: Fix double free on exception at module load.
>       brcmfmac: only lock and unlock fws if fws is not null
>       brcmfmac: Fix warn trace on module unload while in ibss mode
>       brcmfmac: fix p2p scan abort null pointer exception
>       brcmf: Fix null pointer exception in bcdc_hdrpull
> 
> Phil Elwell (9):
>       BCM270X_DT: Add Pi 3+ dts files
>       lan78xx: Read MAC address from DT if present
>       lan78xx: Enable LEDs if no valid EEPROM or OTP
>       lan78xx: Read initial EEE status from DT
>       lan78xx: Change LEDs to include 10Mb activity
>       lan78xx: Read LED states from Device Tree
>       lan78xx: Ignore DT MAC address if already valid
>       lan78xx: Don't reset the interface on open
>       lan78xx: Move enabling of EEE into PHY init code
> 
> Sjoerd Simons (1):
>       brcmfmac: sdio: Increase the default timeouts a bit
> 
>  arch/arm/boot/dts/Makefile                         |   1 +
>  arch/arm/boot/dts/bcm2708_common.dtsi              |   2 +
>  arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts         | 210 +++++++++++++++++++++
>  arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi         |  36 ++++
>  arch/arm/boot/dts/overlays/README                  |   8 +
>  .../abi/4.4.0-1091.99/armhf/raspi2.modules         |   2 -
>  drivers/net/usb/lan78xx.c                          | 108 ++++++++---
>  drivers/net/wireless/brcm80211/brcmfmac/bcdc.c     |   3 +-
>  drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c |   9 +-
>  drivers/net/wireless/brcm80211/brcmfmac/core.c     |   2 +
>  drivers/net/wireless/brcm80211/brcmfmac/fwil.c     |   3 +-
>  drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c |   7 +-
>  drivers/net/wireless/brcm80211/brcmfmac/p2p.c      |   2 +-
>  drivers/net/wireless/brcm80211/brcmfmac/sdio.c     |   4 +-
>  drivers/net/wireless/brcm80211/brcmfmac/usb.c      |   1 -
>  15 files changed, 360 insertions(+), 38 deletions(-)
>  create mode 100644 arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
>  create mode 100644 arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi
> 

Applied to xenial/raspi2 branch.

Thanks,
Kleber




More information about the kernel-team mailing list