platform/kernel/linux-rpi.git
4 years agousb: xhci: Raspberry Pi FW loader for VIA VL805
Tim Gover [Wed, 15 Jan 2020 11:26:19 +0000 (11:26 +0000)]
usb: xhci: Raspberry Pi FW loader for VIA VL805

The VL805 FW may either be loaded from an SPI EEPROM or alternatively
loaded directly by the VideoCore firmware. A PCI reset will reset
the VL805 XHCI controller on the Raspberry Pi4 requiring the firmware
to be reloaded if an SPI EEPROM is not present.

Use a VideoCore mailbox to trigger the loading of the VL805
firmware (if necessary) after a PCI reset.

Signed-off-by: Tim Gover <tim.gover@raspberrypi.org>
4 years agotty: amba-pl011: Avoid rare write-when-full error
Phil Elwell [Wed, 29 Jan 2020 09:35:19 +0000 (09:35 +0000)]
tty: amba-pl011: Avoid rare write-when-full error

Under some circumstances on BCM283x processors data loss can be
observed - a single byte missing from the TX output stream. These bytes
are always the last byte of a batch of 8 written from pl011_tx_chars
when from_irq is true, meaning that the FIFO full flag is not checked
before writing.

The transmit optimisation relies on the FIFO being half-empty when the
TX interrupt is raised. Instrumenting the driver further showed that
the failure case correlated with the TX FIFO full flag being set at the
point where the last byte was written to the data register, which
explains the data loss but not how the FIFO appeared to be prematurely
full. A possible explanation is that a FIFO write was in flight at the
time the interrupt was raised, but as yet there is no hypothesis as to
how this might occur.

In the absence of a clear understanding of the failure mechanism, avoid
the problem by checking the FIFO levels before writing the last byte of
the group, which will have minimal performance impact.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoARM: dts: Remove bcm2838-rpi-4-b.dts
Phil Elwell [Wed, 29 Jan 2020 11:29:06 +0000 (11:29 +0000)]
ARM: dts: Remove bcm2838-rpi-4-b.dts

Upstream are not going to use the bcm2838 identifier, so begin the
cleanup by removing the suggested upstream Pi 4 .dts file.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agobcm2838.dtsi: Use BCM2711 PCIe compatible string
Phil Elwell [Fri, 12 Jul 2019 10:43:03 +0000 (11:43 +0100)]
bcm2838.dtsi: Use BCM2711 PCIe compatible string

The BCM2711 PCIe controller has a limited address range in the B0
silicon, and the driver uses a compatible string to identify the
limitation. The current Pi 4 firmware will override the compatible
string if it detects a downstream DTB and it is running on a newer
revision but set the default value to enable the workaround for
backwards-compatibility with old firmware.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agopcie-brcmstb: Bounce buffer support is for BCM2711B0
Phil Elwell [Fri, 12 Jul 2019 10:41:25 +0000 (11:41 +0100)]
pcie-brcmstb: Bounce buffer support is for BCM2711B0

Add a new compatible string to identify BCM2711B0, as later revisions
don't require the bounce buffer support.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoARM: dts: Declare RPi 4B SD card power regulator
Phil Elwell [Tue, 30 Jul 2019 11:37:02 +0000 (12:37 +0100)]
ARM: dts: Declare RPi 4B SD card power regulator

Later revisions of the Raspberry Pi 4B have a separate control over the
SD card power. Expose that control to Linux as a fixed regulator with
a GPIO enable.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agommc: sdhci-iproc: Fix vmmc regulators on iProc
Phil Elwell [Fri, 2 Aug 2019 14:20:11 +0000 (15:20 +0100)]
mmc: sdhci-iproc: Fix vmmc regulators on iProc

The Linux support for controlling card power via regulators appears to
be contentious. I would argue that the default behaviour is contrary to
the SDHCI spec - turning off the power writes a reserved value to the
SD Bus Voltage Select field of the Power Control Register, which
seems to kill the Arasan/iProc controller - but fortunately there is a
hook in sdhci_ops to override the behaviour. Borrow the implementation
from sdhci_arasan_set_power.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agopisound: Added reading Pisound board hardware revision and exposing it (#3425)
gtrainavicius [Tue, 28 Jan 2020 12:16:37 +0000 (14:16 +0200)]
pisound: Added reading Pisound board hardware revision and exposing it (#3425)

pisound: Added reading Pisound board hardware revision and exposing it in kernel log and sysfs file:

/sys/kernel/pisound/hw_version

Signed-off-by: Giedrius <giedrius@blokas.io>
4 years agoadds LED OFF feature to HiFiBerry DAC+/DAC+PRO sound cards
j-schambacher [Mon, 27 Jan 2020 19:58:24 +0000 (20:58 +0100)]
adds LED OFF feature to HiFiBerry DAC+/DAC+PRO sound cards

This adds a DT overlay parameter 'leds_off' which allows
to switch off the onboard activity LEDs at all times
which has been requested by some users.

Signed-off-by: Joerg Schambacher <joerg@i2audio.com>
4 years agoadds LED OFF feature to HiFiBerry DAC+ADC sound card
j-schambacher [Mon, 27 Jan 2020 19:37:34 +0000 (20:37 +0100)]
adds LED OFF feature to HiFiBerry DAC+ADC sound card

This adds a DT overlay parameter 'leds_off' which allows
to switch off the onboard activity LEDs at all times
which has been requested by some users.

Signed-off-by: Joerg Schambacher <joerg@i2audio.com>
4 years agoadds LED OFF feature to HiFiBerry DAC+ADC PRO sound card
j-schambacher [Mon, 27 Jan 2020 16:45:51 +0000 (17:45 +0100)]
adds LED OFF feature to HiFiBerry DAC+ADC PRO sound card

This adds a DT overlay parameter 'leds_off' which allows
to switch off the onboard activity LEDs at all times
which has been requested by some users.

Signed-off-by: Joerg Schambacher <joerg@i2audio.com>
4 years agoFix i2c-pwm-pca9685a overlay
MikeDK [Sun, 26 Jan 2020 22:33:54 +0000 (23:33 +0100)]
Fix i2c-pwm-pca9685a overlay

4 years agotty: amba-pl011: Add un/throttle support
Phil Elwell [Fri, 24 Jan 2020 11:38:28 +0000 (11:38 +0000)]
tty: amba-pl011: Add un/throttle support

The PL011 driver lacks throttle and unthrottle methods. As a result,
sending more data to the Pi than it can immediately sink while CRTSCTS
is enabled causes a NULL pointer to be followed.

Add a throttle handler that disables the RX interrupts, and an
unthrottle handler that reenables them.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agooverlays: Use preferred compatible strings
Phil Elwell [Fri, 24 Jan 2020 09:02:37 +0000 (09:02 +0000)]
overlays: Use preferred compatible strings

Make sure all overlays have correct compatible strings before enabling
the automated checking.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoFix master mode settings of HiFiBerry DAC+ADC PRO card (#3424)
Jörg Schambacher [Thu, 23 Jan 2020 12:32:13 +0000 (13:32 +0100)]
Fix master mode settings of HiFiBerry DAC+ADC PRO card (#3424)

This patch fixes the board DAI setting when in master-mode.
Wrong setting could have caused random pop noise.

Signed-off-by: Joerg Schambacher <joerg@i2audio.com>
4 years agoInitialise rpi-firmware before clk-bcm2835
Luke Hinds [Wed, 22 Jan 2020 16:03:00 +0000 (16:03 +0000)]
Initialise rpi-firmware before clk-bcm2835

The IMA (Integrity Measurement Architecture) looks for a TPM (Trusted
Platform Module) having been registered when it initialises; otherwise
it assumes there is no TPM. It has been observed on BCM2835 that IMA
is initialised before TPM, and that initialising the BCM2835 clock
driver before the firmware driver has the effect of reversing this
order.

Change the firmware driver to initialise at core_initcall, delaying the
BCM2835 clock driver to postcore_initcall.

See: https://github.com/raspberrypi/linux/issues/3291
     https://github.com/raspberrypi/linux/pull/3297

Signed-off-by: Luke Hinds <lhinds@redhat.com>
Co-authored-by: Phil Elwell <phil@raspberrypi.org>
4 years agoconfigs: Add missing HIFIBERRYs to bcmrpi3_defconfig
Phil Elwell [Tue, 21 Jan 2020 15:02:05 +0000 (15:02 +0000)]
configs: Add missing HIFIBERRYs to bcmrpi3_defconfig

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agosound: Add the HiFiBerry DAC+HD version
Jörg Schambacher [Tue, 21 Jan 2020 14:58:39 +0000 (15:58 +0100)]
sound: Add the HiFiBerry DAC+HD version

This adds the driver for the DAC+HD version supporting HiFiBerry's
PCM179x based DACs. It also adds PLL control for clock generation.

Signed-off-by: Joerg Schambacher <joerg@i2audio.com>
4 years agoAdd universal device tree overlay for SPI devices
Ed Spiridonov [Tue, 10 Dec 2019 19:45:04 +0000 (22:45 +0300)]
Add universal device tree overlay for SPI devices

Just specify the SPI address and device name ("compatible" property).
This overlay lacks any device-specific parameter support!
(some of them could be added later)

Examples:
1. SPI NOR flash on spi0.1, maximum SPI clock frequency 45MHz:
    dtoverlay=anyspi:spi0-1,dev="jedec,spi-nor",speed=45000000
2. MCP3204 ADC on spi1.2, maximum SPI clock frequency 500kHz:
    dtoverlay=anyspi:spi1-2,dev="microchip,mcp3204"

Signed-off-by: Ed Spiridonov <edo.rus@gmail.com>
4 years agodwc_otg: fiq_fsm: add a barrier on entry into FIQ handler(s)
Jonathan Bell [Mon, 13 Jan 2020 15:54:55 +0000 (15:54 +0000)]
dwc_otg: fiq_fsm: add a barrier on entry into FIQ handler(s)

On BCM2835, there is no hardware guarantee that multiple outstanding
reads to different peripherals will complete in-order. The FIQ code
uses peripheral reads without barriers for performance, so in the case
where a read to a slow peripheral was issued immediately prior to FIQ
entry, the first peripheral read that the FIQ did could end up with
wrong read data returned.

Add dsb(sy) on entry so that all outstanding reads are retired.

The FIQ only issues reads to the dwc_otg core, so per-read barriers
in the handler itself are not required.

On BCM2836 and BCM2837 the barrier is not strictly required due to
differences in how the peripheral bus is implemented, but having
arch-specific handlers that introduce different latencies is risky.

Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
4 years agodwc_otg: fiq_fsm: pause when cancelling split transactions
Jonathan Bell [Wed, 8 Jan 2020 12:48:09 +0000 (12:48 +0000)]
dwc_otg: fiq_fsm: pause when cancelling split transactions

Non-periodic splits will DMA to/from the driver-provided transfer_buffer,
which may be freed immediately after the dequeue call returns. Block until
we know the transfer is complete.

A similar delay is needed when cleaning up disconnects, as the FIQ could
have started a periodic transfer in the previous microframe to the one
that triggered a disconnect.

Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
4 years agodwc_otg: constrain endpoint max packet and transfer size on split IN
Jonathan Bell [Tue, 7 Jan 2020 10:08:19 +0000 (10:08 +0000)]
dwc_otg: constrain endpoint max packet and transfer size on split IN

The hcd would unconditionally set the transfer length to the endpoint
packet size for non-isoc IN transfers. If the remaining buffer length
was less than the length of returned data, random memory would get
scribbled over, with bad effects if it crossed a page boundary.

Force a babble error if this happens by limiting the max transfer size
to the available buffer space. DMA will stop writing to memory on a
babble condition.

The hardware expects xfersize to be an integer multiple of maxpacket
size, so override hcchar.b.mps as well.

Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
4 years agoconfigs: Add BME680
Willem Remie [Thu, 9 Jan 2020 20:54:11 +0000 (21:54 +0100)]
configs: Add BME680

4 years agoadd BME680 to i2c-sensor overlay
Willem Remie [Thu, 9 Jan 2020 20:16:49 +0000 (21:16 +0100)]
add BME680 to i2c-sensor overlay

4 years agodriver: char: rpivid: Fix access to freed memory
Dave Stevenson [Tue, 21 Jan 2020 16:44:14 +0000 (16:44 +0000)]
driver: char: rpivid: Fix access to freed memory

The error path during probe frees the private memory block, and
then promptly dereferences it to log an error message.

Use the base device instead of the pointer to it in the private
structure.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agodriver: char: rpimem: Add SPDX licence header.
Dave Stevenson [Wed, 15 Jan 2020 14:07:16 +0000 (14:07 +0000)]
driver: char: rpimem: Add SPDX licence header.

Stops checkpatch complaining.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agodriver: char: rpivid: Fix coding style whitespace issues.
Dave Stevenson [Wed, 15 Jan 2020 14:05:45 +0000 (14:05 +0000)]
driver: char: rpivid: Fix coding style whitespace issues.

Makes checkpatch happier.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agodriver: char: rpivid: Add error handling to the legacy device load
Dave Stevenson [Wed, 15 Jan 2020 14:02:43 +0000 (14:02 +0000)]
driver: char: rpivid: Add error handling to the legacy device load

The return value from device_create for the legacy device was never
checked or handled. Add the required error handling.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agodriver: char: rpivid: Clean up error handling use of ERR_PTR/IS_ERR
Dave Stevenson [Tue, 21 Jan 2020 16:24:45 +0000 (16:24 +0000)]
driver: char: rpivid: Clean up error handling use of ERR_PTR/IS_ERR

The driver used an unnecessary intermediate void* variable so it
only called ERR_PTR once to convert to the error value.

Switch to converting as the error arises to remove these intermediate
variables.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agodriver: char: rpivid: Destroy the legacy device on remove
Dave Stevenson [Wed, 15 Jan 2020 13:59:57 +0000 (13:59 +0000)]
driver: char: rpivid: Destroy the legacy device on remove

The legacy name support created a new device that was never destroyed.
If the driver was unloaded and reloaded, it failed due to the
device already existing.

Fixes: "75f1d14 driver: char: rpivid - also support legacy name"
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agoARM: dts: bcm2838: Add upstream RNG compatible
Stefan Wahren [Fri, 27 Dec 2019 11:01:17 +0000 (12:01 +0100)]
ARM: dts: bcm2838: Add upstream RNG compatible

This adds the ability to use the RNG with an upstream kernel.
Keep the old one for backward compatibility.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agohwrng: iproc-rng200 - Add support for BCM2711
Stefan Wahren [Fri, 27 Dec 2019 10:55:59 +0000 (11:55 +0100)]
hwrng: iproc-rng200 - Add support for BCM2711

commit 0f95b09a5f624964d520c8f6a2674090fb98ae25 upstream.

BCM2711 features a RNG200 hardware random number generator block.
So make the driver available.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Signed-off-by: Stephen Brennan <stephen@brennan.io>
Reviewed-by: Matthias Brugger <mbrugger@suse.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
4 years agoARM: bcm: Backport BCM2711 support from upstream
Stefan Wahren [Fri, 27 Dec 2019 10:40:56 +0000 (11:40 +0100)]
ARM: bcm: Backport BCM2711 support from upstream

Make the BCM2711 a different machine, but keep it in board_bcm2835.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agoARM: dts: bcm2838: Backport genet from upstream
Stefan Wahren [Wed, 25 Dec 2019 15:40:47 +0000 (16:40 +0100)]
ARM: dts: bcm2838: Backport genet from upstream

This backport all genet differences (different compatible, right PHY mode,
board specific stuff) from upstream.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agonet: bcmgenet: Add RGMII_RXID support
Stefan Wahren [Wed, 25 Dec 2019 15:35:54 +0000 (16:35 +0100)]
net: bcmgenet: Add RGMII_RXID support

This adds the missing support for the PHY mode RGMII_RXID.
It's necessary for the Raspberry Pi 4.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agoRevert "phy: broadcom: split out the BCM54213PE from the BCM54210E IDs"
Stefan Wahren [Fri, 27 Dec 2019 12:48:32 +0000 (13:48 +0100)]
Revert "phy: broadcom: split out the BCM54213PE from the BCM54210E IDs"

This reverts commit a377688aa4f69ebfe75c9dfc986e7d19605eb39f.

4 years agoRevert "phy: bcm54213pe: configure the LED outputs to be more user-friendly"
Stefan Wahren [Fri, 27 Dec 2019 12:48:08 +0000 (13:48 +0100)]
Revert "phy: bcm54213pe: configure the LED outputs to be more user-friendly"

This reverts commit 0f6693225eee62ee01c479c86fff76442979f906.

4 years agoARM: dts: bcm2838: Remove always-on from armv7-timer
Stefan Wahren [Wed, 25 Dec 2019 17:19:28 +0000 (18:19 +0100)]
ARM: dts: bcm2838: Remove always-on from armv7-timer

After moving bcm2835-system-timer to bcm283x.dtsi there is no need for
the always-on for armv7-timer anymore.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agoARM: dts: bcm283x: Move intc label to bcm2835-common.dtsi
Stefan Wahren [Wed, 25 Dec 2019 17:01:57 +0000 (18:01 +0100)]
ARM: dts: bcm283x: Move intc label to bcm2835-common.dtsi

The intc label isn't defined in bcm283x.dtsi, so we cannot use it there.
So move it to bcm2835-common.dtsi.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agoARM: dts: bcm2838: Backport node names from upstream
Stefan Wahren [Wed, 25 Dec 2019 14:55:29 +0000 (15:55 +0100)]
ARM: dts: bcm2838: Backport node names from upstream

According to devicetree specification the node name should describe
the general class of device like ethernet or interrupt-controller.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agoARM: dts: bcm2838-rpi-4-b: Backport BT part from upstream
Stefan Wahren [Wed, 25 Dec 2019 14:43:41 +0000 (15:43 +0100)]
ARM: dts: bcm2838-rpi-4-b: Backport BT part from upstream

The CYW43455 on the Raspberry Pi 4 doesn't use an external pin as lower
power clock anymore. So drop the GPIO clock from pinctrl. While we are at
this add the missing declaration of hardware flow control.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agoARM: dts: bcm2838-rpi-4-b: Fix memory node
Stefan Wahren [Wed, 25 Dec 2019 14:32:29 +0000 (15:32 +0100)]
ARM: dts: bcm2838-rpi-4-b: Fix memory node

We need to declare the proper device type, otherwise U-Boot won't boot
with this devicetree. While we are this let the bootloader set the actual
memory size.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agoARM: dts: bcm283x: Move pixelvalve to bcm2835-common.dtsi
Stefan Wahren [Fri, 27 Dec 2019 15:06:13 +0000 (16:06 +0100)]
ARM: dts: bcm283x: Move pixelvalve to bcm2835-common.dtsi

According to Eric Anholt the pixelvalves doesn't exists on BCM2711.
So move it to bcm2835-common.dtsi.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agoARM: dts: bcm283x: Move system timer back to bcm283x.dtsi
Stefan Wahren [Fri, 27 Dec 2019 10:15:00 +0000 (11:15 +0100)]
ARM: dts: bcm283x: Move system timer back to bcm283x.dtsi

During Raspberry Pi 4 upstream discussion Tim Gover confirmed that the
system timer also exists on BCM2711. So move it back to bcm283x.dtsi and
overwrite the interrupt definition in bcm2838.dtsi.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agoARM: dts: bcm283x: Remove simple-bus from fixed clocks
Stefan Wahren [Fri, 16 Aug 2019 20:32:02 +0000 (22:32 +0200)]
ARM: dts: bcm283x: Remove simple-bus from fixed clocks

commit 4b2d24662126b1e2a6b95c9dfe9e9044e105e5bd upstream.

The fixed clocks doesn't form some kind of bus. So let's remove it.
This fixes the follow DT schema warnings:

clocks: clock@3:reg:0: [3] is too short
clocks: clock@4:reg:0: [4] is too short
clocks: $nodename:0: 'clocks' does not match '^(bus|soc|axi|ahb|apb)(@[0-9a-f]+)?$'
clocks: #size-cells:0:0: 0 is not one of [1, 2]
clocks: 'ranges' is a required property
clock@3: 'reg' does not match any of the regexes: 'pinctrl-[0-9]+'
clock@4: 'reg' does not match any of the regexes: 'pinctrl-[0-9]+'

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agoRevert "mmc: sdhci: Mask "spurious" interrupts"
Stefan Wahren [Sun, 8 Dec 2019 13:45:14 +0000 (14:45 +0100)]
Revert "mmc: sdhci: Mask "spurious" interrupts"

This reverts commit adac895210b88770190e9a501462f2100ab40ac8, because this
issue is already addressed by commit 19ec6bb80290e496021488084944b77f03a87dd7.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
4 years agobrcmfmac: Disable power management
Phil Elwell [Thu, 9 Jan 2020 14:15:39 +0000 (14:15 +0000)]
brcmfmac: Disable power management

Disable power management in the brcmfmac driver again as it is still
causing problems for some users.

4 years agopcie-brcmstb: Eliminate arch_dma_ops error message
Phil Elwell [Wed, 8 Jan 2020 17:21:09 +0000 (17:21 +0000)]
pcie-brcmstb: Eliminate arch_dma_ops error message

The driver attempts to set the dma_ops for the root complex, but doing
so causes an error message and only the end points need it. Fix the
error by making the code specific to the end point case.

Also copy some cosmetic tidy-ups from 5.5.y.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoPisound: MIDI communication fixes for scaled down CPU.
Giedrius [Tue, 7 Jan 2020 09:04:21 +0000 (11:04 +0200)]
Pisound: MIDI communication fixes for scaled down CPU.

* Increased maximum SPI communication speed to avoid running too slow
  when the CPU is scaled down and losing MIDI data.

* Keep track of buffer usage in millibytes for higher precision.

Signed-off-by: Giedrius Trainavičius <giedrius@blokas.io>
4 years agopinctrl: bcm2835: Change init order for gpio hogs
Phil Elwell [Mon, 6 Jan 2020 14:05:42 +0000 (14:05 +0000)]
pinctrl: bcm2835: Change init order for gpio hogs

pinctrl-bcm2835 is a combined pinctrl/gpio driver. Currently the gpio
side is registered first, but this breaks gpio hogs (which are
configured during gpiochip_add_data). Part of the hog initialisation
is a call to pinctrl_gpio_request, and since the pinctrl driver hasn't
yet been registered this results in an -EPROBE_DEFER from which it can
never recover.

Change the initialisation sequence to register the pinctrl driver
first.

See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=260600

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agopinctrl: bcm2835: Remove gpiochip on error
Phil Elwell [Mon, 6 Jan 2020 16:04:30 +0000 (16:04 +0000)]
pinctrl: bcm2835: Remove gpiochip on error

A failure in gpiochip_irqchip_add leads to a leak of a gpiochip. Fix
the leak with the use of devm_gpiochip_add_data.

Fixes: 85ae9e512f43 ("pinctrl: bcm2835: switch to GPIOLIB_IRQCHIP")
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agooverlays: i2c-rtc: Add pcf85363 support
Phil Elwell [Sun, 22 Dec 2019 15:29:40 +0000 (15:29 +0000)]
overlays: i2c-rtc: Add pcf85363 support

See: https://github.com/raspberrypi/firmware/issues/1309

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoconfigs: Add RTS_DRV_PCF85363
Phil Elwell [Sun, 22 Dec 2019 15:13:37 +0000 (15:13 +0000)]
configs: Add RTS_DRV_PCF85363

See: https://github.com/raspberrypi/firmware/issues/1309

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoconfigs: Add CONFIG_NET_SCH_CAKE=m
Phil Elwell [Fri, 20 Dec 2019 15:50:19 +0000 (15:50 +0000)]
configs: Add CONFIG_NET_SCH_CAKE=m

See: https://github.com/raspberrypi/linux/issues/3180

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agooverlays: dht11: Allow multiple instantiation
Phil Elwell [Wed, 18 Dec 2019 10:41:33 +0000 (10:41 +0000)]
overlays: dht11: Allow multiple instantiation

Add addresses to the dht11 and dht11_pins nodes to allow unique names
to be generated by assigning to the "reg" property.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoAllow simultaneous use of JustBoom DAC and Digi
Johannes Krude [Sat, 16 Nov 2019 12:14:43 +0000 (13:14 +0100)]
Allow simultaneous use of JustBoom DAC and Digi

Signed-off-by: Johannes Krude <johannes@krude.de>
4 years agosound/soc: only first codec is master in multicodec setup
Johannes Krude [Sat, 16 Nov 2019 11:41:06 +0000 (12:41 +0100)]
sound/soc: only first codec is master in multicodec setup

When using multiple codecs, at most one codec should generate the master
clock. All codecs except the first are therefore configured for slave
mode.

Signed-off-by: Johannes Krude <johannes@krude.de>
4 years agorpi-cirrus-wm5102-overlay: use reset-gpios instead of wlf,reset
Matthias Reichl [Mon, 16 Dec 2019 22:25:44 +0000 (23:25 +0100)]
rpi-cirrus-wm5102-overlay: use reset-gpios instead of wlf,reset

wlf,reset has been deprecated in favour of the standard reset-gpios
DT property in commit fced2963d84b44990f4aa99ed7268223c294c0df so
let's use that instead of the old property.

Signed-off-by: Matthias Reichl <hias@horus.com>
4 years agoconfig: arm64: Switch to upstream cpufreq driver
popcornmix [Fri, 29 Nov 2019 16:37:26 +0000 (16:37 +0000)]
config: arm64: Switch to upstream cpufreq driver

Signed-off-by: popcornmix <popcornmix@gmail.com>
4 years agooverlays: Make mcp342x run-time compatible
Phil Elwell [Mon, 9 Dec 2019 12:32:20 +0000 (12:32 +0000)]
overlays: Make mcp342x run-time compatible

The order of processing of run-time overlays differs from that done by
the firmware. This means that certain parameter processing techniques
are not compatible with run-time use.  The mcp342x overlay is one such
overlay, but it is easy to change the implementation without changing
the interface.

See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=258294

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agodwc_otg: checking the urb->transfer_buffer too early (#3332)
Hui Wang [Sun, 17 Nov 2019 02:31:46 +0000 (10:31 +0800)]
dwc_otg: checking the urb->transfer_buffer too early (#3332)

After enable the HIGHMEM and VMSPLIT_3G, the dwc_otg driver doesn't
work well on Pi2/3 boards with 1G physical ram. Users experience
the failure when copying a file of 600M size to the USB stick. And
at the same time, the dmesg shows:
usb 1-1.1.2: reset high-speed USB device number 8 using dwc_otg
sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
blk_update_request: I/O error, dev sda, sector 3024048 op 0x1:(WRITE) flags 0x4000 phys_seg 15 prio class 0

When this happens, the sg_buf sent to the driver is located in the
highmem region, the usb_sg_init() in the core/message.c will leave
transfer_buffer to NULL if the sg_buf is in highmem, but in the
dwc_otg driver, it returns -EINVAL unconditionally if transfer_buffer
is NULL.

The driver can handle the situation of buffer to be NULL, if it is in
DMA mode, it will convert an address from transfer_dma.

But if the conversion fails or it is in the PIO mode, we should check
buffer and return -EINVAL if it is NULL.

BugLink: https://bugs.launchpad.net/bugs/1852510
Signed-off-by: Hui Wang <hui.wang@canonical.com>
4 years agoRevert "staging: bcm2835_camera: Ensure all buffers are returned on disable"
Dave Stevenson [Thu, 5 Dec 2019 16:34:39 +0000 (16:34 +0000)]
Revert "staging: bcm2835_camera: Ensure all buffers are returned on disable"

This reverts commit d70c57a7c6a069977a0d827e1d5e2de53fb87e6d.

The patch has mutated beyond recognition and created merge errors
against 37c35be "staging: mmal-vchiq: Add support for event callbacks."

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agostaging: vchiq: Use the old dma controller for OF config on platform devices
Dave Stevenson [Tue, 18 Jun 2019 11:15:50 +0000 (12:15 +0100)]
staging: vchiq: Use the old dma controller for OF config on platform devices

vchiq on Pi4 is no longer under the soc node, therefore it
doesn't get the dma-ranges for the VPU.

Switch to using the configuration of the old dma controller as
that will set the dma-ranges correctly.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
4 years agostaging: vchiq_arm: Set up dma ranges on child devices
Dave Stevenson [Tue, 29 Jan 2019 16:13:25 +0000 (16:13 +0000)]
staging: vchiq_arm: Set up dma ranges on child devices

The VCHIQ driver now loads the audio, camera, codec, and vc-sm
drivers as platform drivers. However they were not being given
the correct DMA configuration.

Call of_dma_configure with the parent (VCHIQ) parameters to be
inherited by the child.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
4 years agorpi-cirrus-wm5102-overlay: fix pinctrl configuration
Matthias Reichl [Sat, 30 Nov 2019 22:10:26 +0000 (23:10 +0100)]
rpi-cirrus-wm5102-overlay: fix pinctrl configuration

Separate GPIOs connected to wm5102 and wm8804 into 2 pinctrl
blocks and properly reference them from the DT nodes to have
correct pinmux owners.

Setup spi0 to use only one CS line on GPIO7 so that GPIO8 is
no longer claimed by spi0 but can be used by wm8804.

Signed-off-by: Matthias Reichl <hias@horus.com>
4 years agoRevert "drm/vc4: Add support for H & V flips"
Dave Stevenson [Thu, 28 Nov 2019 15:51:58 +0000 (15:51 +0000)]
Revert "drm/vc4: Add support for H & V flips"

This reverts commit 3293cb5284bf7c80217cba8e7c3f67fba1953e1d.
This functionality has already been added via
"7cd3cf3 drm/vc4: Add support for X/Y reflection"
Calling drm_plane_create_rotation_property corrupts the
plane properties list.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agoarm/dts: 2711: Add 'pcie0' alias
Phil Elwell [Thu, 28 Nov 2019 15:49:08 +0000 (15:49 +0000)]
arm/dts: 2711: Add 'pcie0' alias

It is useful for the firmware to be able to locate the pcie DT node,
so add an alias pointing to it in the same way that "ethernet0"
points to the genet.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agodrm/v3d: Set dma_mask as well as coherent_dma_mask
Phil Elwell [Fri, 22 Nov 2019 16:23:32 +0000 (16:23 +0000)]
drm/v3d: Set dma_mask as well as coherent_dma_mask

Both coherent_dma_mask and dma_mask act as constraints on allocations
and bounce buffer usage, so be sure to set dma_mask to the appropriate
value otherwise the effective mask could be incorrect.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoarm/dts: Correct Pi 4B LED values
Phil Elwell [Fri, 22 Nov 2019 15:08:25 +0000 (15:08 +0000)]
arm/dts: Correct Pi 4B LED values

The initial PHY LED settings are wrong Pi 4B (the correct values got
dropped somewhere along the way). The PHY declaration should arguably
go in a separate file included by bcm2711-rpi-4-b.dts, but we can
fix that as we switch over to using more of the upstream BCM2711
support in 5.4 and later.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoconfigs:2711: Add V3D clock support on arm64
Phil Elwell [Fri, 22 Nov 2019 11:44:30 +0000 (11:44 +0000)]
configs:2711: Add V3D clock support on arm64

The V3D driver now depends on the CLK_RASPBERRYPI and
ARM_RASPBERRYPI_CPUFREQ drivers for dynamic clock control. Without
them the driver fails to load and the system reverts to software
rendering.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoconfigs: Regenerate defconfigs
Phil Elwell [Fri, 22 Nov 2019 11:38:09 +0000 (11:38 +0000)]
configs: Regenerate defconfigs

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoraspberrypi-cpufreq: Only report integer pll divisor frequencies
popcornmix [Fri, 13 Sep 2019 12:45:11 +0000 (13:45 +0100)]
raspberrypi-cpufreq: Only report integer pll divisor frequencies

4 years agoconfig: Switch to upstream cpufreq driver
popcornmix [Tue, 20 Aug 2019 16:53:47 +0000 (17:53 +0100)]
config: Switch to upstream cpufreq driver

Signed-off-by: popcornmix <popcornmix@gmail.com>
4 years agoclk-bcm2835: Disable v3d clock
popcornmix [Tue, 3 Sep 2019 19:28:00 +0000 (20:28 +0100)]
clk-bcm2835: Disable v3d clock

This is controlled by firmware, see clk-raspberrypi.c

Signed-off-by: popcornmix <popcornmix@gmail.com>
4 years agoclk-raspberrypi: Also support v3d clock
popcornmix [Wed, 21 Aug 2019 13:55:56 +0000 (14:55 +0100)]
clk-raspberrypi: Also support v3d clock

Signed-off-by: popcornmix <popcornmix@gmail.com>
4 years agoclk-raspberrypi: Allow cpufreq driver to also adjust gpu clocks
popcornmix [Mon, 9 Sep 2019 14:49:56 +0000 (15:49 +0100)]
clk-raspberrypi: Allow cpufreq driver to also adjust gpu clocks

For performance/power it is beneficial to adjust gpu clocks with arm clock.
This is how the downstream cpufreq driver works

Signed-off-by: popcornmix <popcornmix@gmail.com>
4 years agov3d_gem: Kick the clock so firmware knows we are using firmware clock interface
popcornmix [Thu, 5 Sep 2019 16:59:14 +0000 (17:59 +0100)]
v3d_gem: Kick the clock so firmware knows we are using firmware clock interface

Setting the v3d clock to low value allows firmware to handle dvfs in case
where v3d hardware is not being actively used (e.g. console use).

Signed-off-by: popcornmix <popcornmix@gmail.com>
4 years agov3d_drv: Allow clock retrieval by name
popcornmix [Mon, 9 Sep 2019 22:50:44 +0000 (23:50 +0100)]
v3d_drv: Allow clock retrieval by name

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agov3d_drv: Handle missing clock more gracefully
popcornmix [Fri, 23 Aug 2019 15:34:38 +0000 (16:34 +0100)]
v3d_drv: Handle missing clock more gracefully

Signed-off-by: popcornmix <popcornmix@gmail.com>
4 years agoarm: dts: overlays: pitft35-resistive: add upstream compatible
Peter Robinson [Sun, 17 Nov 2019 16:20:24 +0000 (16:20 +0000)]
arm: dts: overlays: pitft35-resistive: add upstream compatible

The upstream hx8357d driver uses "adafruit,yx350hv15" for the compatible
string explicitly for this screen config and not a hx8357d generic for
the controller so add that in as well so it will work with an unmodified
upstream kernel driver. We leave the downstream as the priority.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
4 years agoRevert "brcmfmac: Disable power management"
Phil Elwell [Wed, 13 Nov 2019 16:28:10 +0000 (16:28 +0000)]
Revert "brcmfmac: Disable power management"

Shortly after the release of the Pi 3B, a loss of SSH connectivity
over WiFi was traced to the power management handling, so power
management was disabled. And so it has remained ever since.

Enabling power management saves 55mA (~270mW) on a Pi 4B, so is very
much worth the minimal effort of reverting this patch, which was
squashed and rebased many times since then to the commit hash is
meaningless.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agooverlays: Remove hack from uart0 overlay
Phil Elwell [Tue, 1 Oct 2019 09:19:50 +0000 (10:19 +0100)]
overlays: Remove hack from uart0 overlay

The uart0 overlay contained a hack to return GPIOs 14 and 15 to inputs
when the UART0 function was moved to alternative pins. This has the
unwanted side effect of claiming GPIOs 14 & 15, preventing them being
used for something else.

See: https://github.com/raspberrypi/linux/issues/2856
     https://www.raspberrypi.org/forums/viewtopic.php?f=98&t=252911

Signed-off-by: Stefan Enge <stefan.enge@escatec.com>
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoconfigs: apds9960: add module to defconfigs
Michael Kaplan [Fri, 8 Nov 2019 10:13:25 +0000 (11:13 +0100)]
configs: apds9960: add module to defconfigs

Signed-off-by: Michael Kaplan <m.kaplan@evva.com>
4 years agooverlays: Add apds9960 overlay
Michael Kaplan [Fri, 8 Nov 2019 09:35:57 +0000 (10:35 +0100)]
overlays: Add apds9960 overlay

Add an overlay for the AVAGO APDS9960 digital proximity, ambient light, rgb and gesture sensor.
Also update overlay README and Makefile.

Signed-off-by: Michael Kaplan <m.kaplan@evva.com>
4 years agonet:phy:2711 Change the default ethernet LED actions
James Hughes [Thu, 7 Nov 2019 14:59:59 +0000 (14:59 +0000)]
net:phy:2711 Change the default ethernet LED actions

This should return default behaviour back to that of previous
releases.

4 years agooverlays: smi: fix typo in comment (#3320)
Pierre-jean Texier [Wed, 6 Nov 2019 09:00:43 +0000 (10:00 +0100)]
overlays: smi: fix typo in comment (#3320)

5 represent alt1 function not alt0.

Signed-off-by: Pierre-Jean Texier <pjtexier@koncepto.io>
4 years agonet:phy:2711 Allow ethernet LED mode to be set via device tree
James Hughes [Thu, 31 Oct 2019 14:39:44 +0000 (14:39 +0000)]
net:phy:2711 Allow ethernet LED mode to be set via device tree

Add device tree entries and code to allow the specification of
the lighting modes for the LED's on the ethernet connector.

Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
4 years agorpi-poe-fan: fix def_pwm1 writes
Serge Schneider [Thu, 31 Oct 2019 13:37:16 +0000 (13:37 +0000)]
rpi-poe-fan: fix def_pwm1 writes

Signed-off-by: Serge Schneider <serge@raspberrypi.org>
4 years agodwc_otg: Declare DMA capability with HCD_DMA flag
Phil Elwell [Fri, 15 Nov 2019 08:48:08 +0000 (08:48 +0000)]
dwc_otg: Declare DMA capability with HCD_DMA flag

Following [1], USB controllers have to declare DMA capabilities in
order for them to be used by adding the HCD_DMA flag to their hc_driver
struct.

[1] 7b81cb6bddd2 ("usb: add a HCD_DMA flag instead of guestimating DMA capabilities")

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agodrm/v3d: The third IRQ is optional
Phil Elwell [Thu, 14 Nov 2019 12:00:43 +0000 (12:00 +0000)]
drm/v3d: The third IRQ is optional

As of 5.4, the kernel logs errors for absent IRQs unless requested
with platform_get_irq_optional.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agonet: bcmgenet: The second IRQ is optional
Phil Elwell [Thu, 14 Nov 2019 11:59:01 +0000 (11:59 +0000)]
net: bcmgenet: The second IRQ is optional

As of 5.4, the kernel logs errors for absent IRQs unless requested
with platform_get_irq_optional.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agostaging: vchiq_arm: Unify the unload handling of platform devs
Dave Stevenson [Wed, 6 Nov 2019 13:58:18 +0000 (13:58 +0000)]
staging: vchiq_arm: Unify the unload handling of platform devs

A helper function vchiq_register_child was added to deal with
adding the platform devices. This returns NULL on failure, and
that is assigned to the struct platform_device. There is
therefore no way for remove to encounter an error pointer, so
checking for IS_ERR() is redundant.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agostaging: bcm2835-codec: Fix potential memory leak of isp instance
Dave Stevenson [Wed, 6 Nov 2019 13:58:08 +0000 (13:58 +0000)]
staging: bcm2835-codec: Fix potential memory leak of isp instance

"d867785 staging: bcm2835-codec: add media controller support" added
a new error path that jumped to end, but didn't add the free
of the ISP device should that path be taken.
Fix this.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agostaging: vchiq_arm: Register bcm2835-codec as a platform driver
Dave Stevenson [Wed, 6 Nov 2019 13:57:58 +0000 (13:57 +0000)]
staging: vchiq_arm: Register bcm2835-codec as a platform driver

Following the same pattern as bcm2835-camera and bcm2835-audio,
register the V4L2 codec driver as a platform driver

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agostaging: vchiq_arm: Register vcsm-cma as a platform driver
Dave Stevenson [Wed, 6 Nov 2019 13:57:48 +0000 (13:57 +0000)]
staging: vchiq_arm: Register vcsm-cma as a platform driver

Following the same pattern as bcm2835-camera and bcm2835-audio,
register the vcsm-cma driver as a platform driver

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
4 years agodrm/v3d: Plug dma_fence leak
Phil Elwell [Tue, 12 Nov 2019 16:41:21 +0000 (16:41 +0000)]
drm/v3d: Plug dma_fence leak

The irq_fence and done_fence are given a reference that is never
released. The necessary dma_fence_put()s seem to have been
deleted in error in an earlier commit.

Fixes: 0b73676836b2 ("drm/v3d: Clock V3D down when not in use.")

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agodrm/v3d: Suppress all but the first MMU error
Phil Elwell [Mon, 11 Nov 2019 20:18:08 +0000 (20:18 +0000)]
drm/v3d: Suppress all but the first MMU error

The v3d driver currently encounters a lot of MMU PTE exceptions, so
only log the first to avoid swamping the kernel log.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agodrm/v3d: Don't clear MMU control bits on exception
Phil Elwell [Mon, 11 Nov 2019 14:01:41 +0000 (14:01 +0000)]
drm/v3d: Don't clear MMU control bits on exception

MMU exception conditions are reported in the V3D_MMU_CTRL register as
write-1-to-clear (W1C) bits. The MMU interrupt handling code clears any
exceptions, but does so by masking out any other bits and writing the
result back. There are some important control bits in that register,
including MMU_ENABLE, so a safer approach is to simply write back the
value just read unaltered.

This patch doesn't remove the cause of the apparent PTE errors, but it
does reduce the impact to just an error in the kernel log.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
4 years agoRevert "pinctrl: bcm2835: Pass irqchip when adding gpiochip"
popcornmix [Tue, 5 Nov 2019 11:28:19 +0000 (11:28 +0000)]
Revert "pinctrl: bcm2835: Pass irqchip when adding gpiochip"

This reverts commit 73345a18d464b1b945b29f54f630ace6873344e2.

4 years agoconfigs: Rebuild with savedefconfig
popcornmix [Mon, 4 Nov 2019 00:52:35 +0000 (00:52 +0000)]
configs: Rebuild with savedefconfig