platform/kernel/linux-rpi3.git
5 years agodt-bindings: Document BCM283x CSI2/CCP2 receiver
Dave Stevenson [Wed, 31 Oct 2018 14:59:06 +0000 (14:59 +0000)]
dt-bindings: Document BCM283x CSI2/CCP2 receiver

Document the DT bindings for the CSI2/CCP2 receiver peripheral
(known as Unicam) on BCM283x SoCs.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
Acked-by: Rob Herring <robh@kernel.org>
5 years agomedia: videodev2: Add helper defines for printing FOURCCs
Dave Stevenson [Wed, 31 Oct 2018 14:58:08 +0000 (14:58 +0000)]
media: videodev2: Add helper defines for printing FOURCCs

New helper defines that allow printing of a FOURCC using
printf(V4L2_FOURCC_CONV, V4L2_FOURCC_CONV_ARGS(fourcc));

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agomedia: adv7180: Add YPrPb support for ADV7282M
Dave Stevenson [Wed, 31 Oct 2018 14:57:56 +0000 (14:57 +0000)]
media: adv7180: Add YPrPb support for ADV7282M

The ADV7282M can support YPbPr on AIN1-3, but this was
not selectable from the driver. Add it to the list of
supported input modes.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agomedia: adv7180: Default to the first valid input
Dave Stevenson [Wed, 31 Oct 2018 14:57:46 +0000 (14:57 +0000)]
media: adv7180: Default to the first valid input

The hardware default is differential CVBS on AIN1 & 2, which
isn't very useful.

Select the first input that is defined as valid for the
chip variant (typically CVBS_AIN1).

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agomedia: tc358743: Check I2C succeeded during probe.
Dave Stevenson [Wed, 31 Oct 2018 14:57:34 +0000 (14:57 +0000)]
media: tc358743: Check I2C succeeded during probe.

The probe for the TC358743 reads the CHIPID register from
the device and compares it to the expected value of 0.
If the I2C request fails then that also returns 0, so
the driver loads thinking that the device is there.

Generally I2C communications are reliable so there is
limited need to check the return value on every transfer,
therefore only amend the one read during probe to check
for I2C errors.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agomedia: tc358743: Add support for 972Mbit/s link freq.
Dave Stevenson [Wed, 31 Oct 2018 14:57:21 +0000 (14:57 +0000)]
media: tc358743: Add support for 972Mbit/s link freq.

Adds register setups for running the CSI lanes at 972Mbit/s,
which allows 1080P50 UYVY down 2 lanes.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agomedia: tc358743: fix connected/active CSI-2 lane reporting
Philipp Zabel [Thu, 21 Sep 2017 15:30:24 +0000 (17:30 +0200)]
media: tc358743: fix connected/active CSI-2 lane reporting

g_mbus_config was supposed to indicate all supported lane numbers, not
only the number of those currently in active use. Since the TC358743
can dynamically reduce the number of active lanes if the required
bandwidth allows for it, report all lane numbers up to the connected
number of lanes as supported in pdata mode.
In device tree mode, do not report lane count and clock mode at all, as
the receiver driver can determine these from the device tree.

To allow communicating the number of currently active lanes, add a new
bitfield to the v4l2_mbus_config flags. This is a temporary fix, to be
used only until a better solution is found.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
5 years agomedia: tc358743: Increase FIFO level to 374.
Dave Stevenson [Wed, 31 Oct 2018 14:56:59 +0000 (14:56 +0000)]
media: tc358743: Increase FIFO level to 374.

The existing fixed value of 16 worked for UYVY 720P60 over
2 lanes at 594MHz, or UYVY 1080P60 over 4 lanes. (RGB888
1080P60 needs 6 lanes at 594MHz).
It doesn't allow for lower resolutions to work as the FIFO
underflows.

374 is required for 1080P24-30 UYVY over 2 lanes @ 972Mbit/s, but
>374 means that the FIFO underflows on 1080P50 UYVY over 2 lanes
@ 972Mbit/s.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agomedia: ov5647: Add support for non-continuous clock mode
Dave Stevenson [Wed, 31 Oct 2018 14:56:47 +0000 (14:56 +0000)]
media: ov5647: Add support for non-continuous clock mode

The driver was only supporting continuous clock mode
although this was not stated anywhere.
Non-continuous clock saves a small amount of power and
on some SoCs is easier to interface with.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agomedia: ov5647: Add support for PWDN GPIO.
Dave Stevenson [Wed, 31 Oct 2018 14:56:33 +0000 (14:56 +0000)]
media: ov5647: Add support for PWDN GPIO.

Add support for an optional GPIO connected to PWDN on the sensor.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years ago[media] Documentation: DT: add device tree for PWDN control
Dave Stevenson [Wed, 31 Oct 2018 14:55:59 +0000 (14:55 +0000)]
[media] Documentation: DT: add device tree for PWDN control

Add optional GPIO pwdn to connect to the PWDN line on the sensor.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agomedia: ov5647: Add set_fmt and get_fmt calls.
Dave Stevenson [Wed, 31 Oct 2018 14:55:37 +0000 (14:55 +0000)]
media: ov5647: Add set_fmt and get_fmt calls.

There's no way to query the subdevice for the supported
resolutions.
Add set_fmt and get_fmt implementations.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agoFix warning in bcm2835-smi-nand
Phil Elwell [Mon, 12 Nov 2018 22:56:35 +0000 (22:56 +0000)]
Fix warning in bcm2835-smi-nand

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agommc: bcm2835-sdhost: Fix warnings on arm64
Phil Elwell [Mon, 12 Nov 2018 22:54:40 +0000 (22:54 +0000)]
mmc: bcm2835-sdhost: Fix warnings on arm64

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agooverlays: uart0 - return GPIOs 14 and 15 to inputs
Phil Elwell [Wed, 7 Nov 2018 17:43:10 +0000 (17:43 +0000)]
overlays: uart0 - return GPIOs 14 and 15 to inputs

In the event that alternate pins are used (only useful on Compute
Modules), return the standard pins to inputs to avoid double-mapping
them.

See: https://www.raspberrypi.org/forums/viewtopic.php?p=1388713#p1316977

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoUpdate issue templates (#2736)
James Hughes [Fri, 2 Nov 2018 11:55:49 +0000 (11:55 +0000)]
Update issue templates (#2736)

5 years agoRevert "rtc: pcf8523: properly handle oscillator stop bit"
Phil Elwell [Mon, 29 Oct 2018 14:45:45 +0000 (14:45 +0000)]
Revert "rtc: pcf8523: properly handle oscillator stop bit"

This reverts commit ede44c908d44b166a5b6bd7caacd105c2ff5a70f.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agooverlays: pi3-disable-bt: Clear out bt_pins node
Phil Elwell [Mon, 29 Oct 2018 10:38:31 +0000 (10:38 +0000)]
overlays: pi3-disable-bt: Clear out bt_pins node

The pi3-disable-bt overlay does not (and cannot) delete the bt_pins
node, but emptying its properties (including brcm,pins) is a way of
signalling to the hciuart systemd service that Bluetooth has been
disabled.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agommc/bcm2835-sdhost: Recover from MMC_SEND_EXT_CSD
Phil Elwell [Fri, 26 Oct 2018 16:29:51 +0000 (17:29 +0100)]
mmc/bcm2835-sdhost: Recover from MMC_SEND_EXT_CSD

If the user issues an "mmc extcsd read", the SD controller receives
what it thinks is a SEND_IF_COND command with an unexpected data block.
The resulting operations leave the FSM stuck in READWAIT, a state which
persists until the MMC framework resets the controller, by which point
the root filesystem is likely to have been unmounted.

A less heavyweight solution is to detect the condition and nudge the
FSM by asserting the (self-clearing) FORCE_DATA_MODE bit.

N.B. This workaround was essentially discovered by accident and without
a full understanding the inner workings of the controller, so it is
fortunate that the "fix" only modifies error paths.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoconfig: Add CONFIG_USBIP_VUDC
popcornmix [Thu, 25 Oct 2018 13:08:43 +0000 (14:08 +0100)]
config: Add CONFIG_USBIP_VUDC

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

5 years agoAdd hy28b 2017 model device tree overlay (#2721)
Hans-Wilhelm Warlo [Tue, 16 Oct 2018 16:20:48 +0000 (18:20 +0200)]
Add hy28b 2017 model device tree overlay (#2721)

The 2017 version of the hy28b display requires a different
initialisation sequence.

Signed-off-by: Hans-Wilhelm Warlo <hw@warlo.no>
5 years agooverlays: Add gpio-no-bank0-irq overlay
Phil Elwell [Wed, 18 Jul 2018 16:25:00 +0000 (17:25 +0100)]
overlays: Add gpio-no-bank0-irq overlay

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agooverlays: add overrides for PoE HAT fan control
Serge Schneider [Tue, 2 Oct 2018 16:13:48 +0000 (17:13 +0100)]
overlays: add overrides for PoE HAT fan control

Signed-off-by: Serge Schneider <serge@raspberrypi.org>
5 years agohwmon: adjust rpi-poe-fan overlay trip points
Serge Schneider [Wed, 26 Sep 2018 18:44:59 +0000 (19:44 +0100)]
hwmon: adjust rpi-poe-fan overlay trip points

Signed-off-by: Serge Schneider <serge@raspberrypi.org>
5 years agodrivers: thermal: step_wise: avoid throttling at hysteresis temperature after droppin...
Serge Schneider [Tue, 2 Oct 2018 10:14:15 +0000 (11:14 +0100)]
drivers: thermal: step_wise: avoid throttling at hysteresis temperature after dropping below it

Signed-off-by: Serge Schneider <serge@raspberrypi.org>
5 years agodrivers: thermal: step_wise: add support for hysteresis
Ram Chandrasekar [Mon, 7 May 2018 17:54:08 +0000 (11:54 -0600)]
drivers: thermal: step_wise: add support for hysteresis

From: Ram Chandrasekar <rkumbako@codeaurora.org>

Step wise governor increases the mitigation level when the temperature
goes above a threshold and will decrease the mitigation when the
temperature falls below the threshold. If it were a case, where the
temperature hovers around a threshold, the mitigation will be applied
and removed at every iteration. This reaction to the temperature is
inefficient for performance.

The use of hysteresis temperature could avoid this ping-pong of
mitigation by relaxing the mitigation to happen only when the
temperature goes below this lower hysteresis value.

Signed-off-by: Ram Chandrasekar <rkumbako@codeaurora.org>
Signed-off-by: Lina Iyer <ilina@codeaurora.org>
5 years agoUpdate gpio-fan-overlay.dts (#2711)
Paul [Thu, 11 Oct 2018 09:17:20 +0000 (12:17 +0300)]
Update gpio-fan-overlay.dts (#2711)

Add references, links, clear details, some typo correction.

5 years agoASoC: cs4265: Add a MIC pre. route (#2696)
Matt Flax [Fri, 28 Sep 2018 05:13:28 +0000 (15:13 +1000)]
ASoC: cs4265: Add a MIC pre. route (#2696)

Commit  b0ef5011b981ece1fde8063243a56d3038b87adb upstream.

The cs4265 driver is missing a microphone preamp enable.
This patch enables/disables the microphone preamp when mic
selection is made using the kcontrol.

Signed-off-by: Matt Flax <flatmax@flatmax.org>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
5 years agoconfigs: Add CONFIG_HID_BIGBEN_FF=m
Phil Elwell [Mon, 24 Sep 2018 13:56:58 +0000 (14:56 +0100)]
configs: Add CONFIG_HID_BIGBEN_FF=m

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoHID: hid-bigbenff: driver for BigBen Interactive PS3OFMINIPAD gamepad
Hanno Zulla [Thu, 23 Aug 2018 15:03:38 +0000 (17:03 +0200)]
HID: hid-bigbenff: driver for BigBen Interactive PS3OFMINIPAD gamepad

commit 256a90ed9e46b270bbc4e15ef05216ff049c3721 upstream.

This is a driver to fix input mapping and add LED & force feedback
support for the "BigBen Interactive Kid-friendly Wired Controller
PS3OFMINIPAD SONY" gamepad with USB id 146b:0902. It was originally
sold as a PS3 accessory and makes a very nice gamepad for Retropie.

Signed-off-by: Hanno Zulla <kontakt@hanno.de>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
5 years agoBCM270X_DT: Add gpio-fan overlay
Phil Elwell [Tue, 18 Sep 2018 10:08:07 +0000 (11:08 +0100)]
BCM270X_DT: Add gpio-fan overlay

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoconfigs: Add SENSOR_GPIO_FAN=m
Phil Elwell [Tue, 18 Sep 2018 10:03:20 +0000 (11:03 +0100)]
configs: Add SENSOR_GPIO_FAN=m

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoASoC: cs4265: Add native 32bit I2S transport
Matt Flax [Wed, 29 Aug 2018 23:38:01 +0000 (09:38 +1000)]
ASoC: cs4265: Add native 32bit I2S transport

commit be47e75eb1419ffc1d9c26230963fd5fa3055097 upstream.

The cs4265 uses 32 bit transport on the I2S bus. This patch enables native
32 bit mode for machine drivers which use this sound card driver.

Signed-off-by: Matt Flax <flatmax@flatmax.org>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
5 years agoASoC: cs4265: Add a S/PDIF enable switch
Matt Flax [Wed, 29 Aug 2018 23:38:02 +0000 (09:38 +1000)]
ASoC: cs4265: Add a S/PDIF enable switch

commit f853d6b3ba345297974d877d8ed0f4a91eaca739 upstream.

This patch adds a S/PDIF enable switch as a SOC_SINGLE.

Signed-off-by: Matt Flax <flatmax@flatmax.org>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
5 years agoAdd support for audioinjector.net ultra soundcard. (#2664)
Matt Flax [Tue, 28 Aug 2018 08:42:13 +0000 (18:42 +1000)]
Add support for audioinjector.net ultra soundcard. (#2664)

Uses the simple-audio-card ALSA machine driver. Sets up the machine
driver in the device tree overlay file. The overlays/Makefile is
altered to add the audioinjector-ultra.dtbo dtb overlay.

Adds CONFIG_SND_SOC_CS4265 to the defconfig files.

Signed-off-by: Matt Flax <flatmax@flatmax.org>
5 years agodevicetree: add RPi CM3 dts to arm64; mimic the RPi 3B arm64 dts implementation,...
Steve Pavao [Fri, 10 Aug 2018 21:09:50 +0000 (17:09 -0400)]
devicetree: add RPi CM3 dts to arm64; mimic the RPi 3B arm64 dts implementation, by referring to the actual dts file in the arm directory

5 years agospi: Make GPIO CSs honour the SPI_NO_CS flag
Phil Elwell [Tue, 3 Jul 2018 13:23:47 +0000 (14:23 +0100)]
spi: Make GPIO CSs honour the SPI_NO_CS flag

The SPI configuration state includes an SPI_NO_CS flag that disables
all CS line manipulation, for applications that want to manage their
own chip selects. However, this flag is ignored by the GPIO CS code
in the SPI framework.

Correct this omission with a trivial patch.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agooverlays: Remove stale notes about vc4's CMA alignment in the README.
Eric Anholt [Fri, 9 Mar 2018 21:26:33 +0000 (13:26 -0800)]
overlays: Remove stale notes about vc4's CMA alignment in the README.

We haven't needed alignment since
553c942f8b2cbc7394b4d4fa2f848b23a8f07451, and the current overlays
don't specify any.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agooverlays: Add an overlay for the Adafruit Kippah with their 7" panel
Eric Anholt [Fri, 9 Mar 2018 21:20:21 +0000 (13:20 -0800)]
overlays: Add an overlay for the Adafruit Kippah with their 7" panel

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agoARM: BCM270X: Add the 18-bit DPI pinmux to the RPI DTs.
Eric Anholt [Fri, 9 Mar 2018 22:24:05 +0000 (14:24 -0800)]
ARM: BCM270X: Add the 18-bit DPI pinmux to the RPI DTs.

This doesn't do anything by default, but trying to put the node in an
overlay failed for me.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agooverlays: Add addr parameter to i2c-rtc (& -gpio)
Phil Elwell [Mon, 9 Jul 2018 20:11:32 +0000 (21:11 +0100)]
overlays: Add addr parameter to i2c-rtc (& -gpio)

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoAdd hd44780 module to defconfig
Jasper Boomer [Mon, 2 Jul 2018 17:16:22 +0000 (13:16 -0400)]
Add hd44780 module to defconfig

5 years agoAdd device tree overlay for HD44780
Jasper Boomer [Sun, 24 Jun 2018 16:20:27 +0000 (12:20 -0400)]
Add device tree overlay for HD44780

5 years agoconfig: Add I2C_TINY_USB=m
Phil Elwell [Fri, 27 Apr 2018 15:21:33 +0000 (16:21 +0100)]
config: Add I2C_TINY_USB=m

Enable the I2C Tiny USB module.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoconfig: Add IPVLAN module
popcornmix [Thu, 29 Mar 2018 15:05:28 +0000 (16:05 +0100)]
config: Add IPVLAN module

5 years agoconfig: enable Audio Graph Card module
Matthias Reichl [Tue, 6 Feb 2018 14:37:22 +0000 (15:37 +0100)]
config: enable Audio Graph Card module

Signed-off-by: Matthias Reichl <hias@horus.com>
5 years agobrcmfmac: Disable ARP offloading when promiscuous
Phil Elwell [Thu, 24 Aug 2017 15:16:16 +0000 (16:16 +0100)]
brcmfmac: Disable ARP offloading when promiscuous

This is a test patch for brcmfmac from Franky Lin at Broadcom to disable
ARP offloading when in promiscuous mode, re-enabling the ability to
sniff ARP packets over WiFi.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoconfigs: Rebuild bcmrpi3_defconfig to fix warnings
Phil Elwell [Mon, 12 Nov 2018 21:42:00 +0000 (21:42 +0000)]
configs: Rebuild bcmrpi3_defconfig to fix warnings

Also disable CONFIG_MMC_BCM2835 to avoid a runtime conflict.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agosc16is7xx: Don't spin if no data received
Phil Elwell [Tue, 6 Nov 2018 12:57:48 +0000 (12:57 +0000)]
sc16is7xx: Don't spin if no data received

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoIncrease firmware call buffer size to 48 bytes
James Hughes [Wed, 31 Oct 2018 13:00:46 +0000 (13:00 +0000)]
Increase firmware call buffer size to 48 bytes

An assumption was made in commit a1547e0bc that 32 bytes
would be enough data buffer size for all firmware calls. However,
the axi performance monitor driver uses a call with 44 bytes
(RPI_FIRMWARE_GET_PERIPH_REG) to get the VC registers values.

Increase value to 48 to take this in to account.

Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
5 years agofirmware: raspberrypi: Add backward compatible get_throttled
Stefan Wahren [Sat, 13 Oct 2018 11:31:21 +0000 (13:31 +0200)]
firmware: raspberrypi: Add backward compatible get_throttled

Avoid a hard userspace ABI change by adding a compatible get_throttled
sysfs entry. Its value is now feed by the GET_THROTTLED requests of the
new hwmon driver. The first access to get_throttled will generate
a warning.

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
5 years agohwmon: raspberrypi: Prevent voltage low warnings from filling log
Stefan Wahren [Sat, 6 Oct 2018 14:46:18 +0000 (16:46 +0200)]
hwmon: raspberrypi: Prevent voltage low warnings from filling log

Although the correct fix for low voltage warnings is to
improve the power supply, the current implementation
of the detection can fill the log if the warning
happens freqently. This replaces the logging with
slightly custom ratelimited logging.

Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
5 years agoconfig: Enable Raspberry Pi voltage monitor
Stefan Wahren [Sat, 6 Oct 2018 14:45:41 +0000 (16:45 +0200)]
config: Enable Raspberry Pi voltage monitor

This enables the Raspberry Pi voltage monitor as a replacement
for the get_trottled sysfs approach in the firmware driver.

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
5 years agobcm2708-rpi: Disable txp interrupt unless using vc4-kms-v3d overlay
popcornmix [Wed, 17 Oct 2018 15:32:52 +0000 (16:32 +0100)]
bcm2708-rpi: Disable txp interrupt unless using vc4-kms-v3d overlay

Signed-off-by: popcornmix <popcornmix@gmail.com>
5 years agooverlays: Fix a few dtc warnings
Phil Elwell [Mon, 8 Oct 2018 16:16:28 +0000 (17:16 +0100)]
overlays: Fix a few dtc warnings

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoBCM2708_DT: Use upstreamed GPIO expander driver
Phil Elwell [Mon, 8 Oct 2018 11:20:36 +0000 (12:20 +0100)]
BCM2708_DT: Use upstreamed GPIO expander driver

The upstreamed driver for the GPIO expander has a different compatible
string. Change the relevant Device Tree files to match.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agovchiq_2835_arm: Implement a DMA pool for small bulk transfers (#2699)
detule [Tue, 2 Oct 2018 08:10:08 +0000 (04:10 -0400)]
vchiq_2835_arm: Implement a DMA pool for small bulk transfers (#2699)

During a bulk transfer we request a DMA allocation to hold the
scatter-gather list.  Most of the time, this allocation is small
(<< PAGE_SIZE), however it can be requested at a high enough frequency
to cause fragmentation and/or stress the CMA allocator (think time
spent in compaction here, or during allocations elsewhere).

Implement a pool to serve up small DMA allocations, falling back
to a coherent allocation if the request is greater than
VCHIQ_DMA_POOL_SIZE.

Signed-off-by: Oliver Gjoneski <ogjoneski@gmail.com>
5 years agobcm2835: interpolate audio delay
wm4 [Wed, 13 Jan 2016 18:44:47 +0000 (19:44 +0100)]
bcm2835: interpolate audio delay

It appears the GPU only sends us a message all 10ms to update
the playback progress. Other than this, the playback position
(what SNDRV_PCM_IOCTL_DELAY will return) is not updated at all.
Userspace will see jitter up to 10ms in the audio position.

Make this a bit nicer for userspace by interpolating the
position using the CPU clock.

I'm not sure if setting snd_pcm_runtime.delay is the right
approach for this. Or if there is maybe an already existing
mechanism for position interpolation in the ALSA core.

I only set SNDRV_PCM_INFO_BATCH because this appears to remove
at least one situation snd_pcm_runtime.delay is used, so I have
to worry less in which place I have to update this field, or
how it interacts with the rest of ALSA.

In the future, it might be nice to use VC_AUDIO_MSG_TYPE_LATENCY.
One problem is that it requires sending a videocore message, and
waiting for a reply, which could make the implementation much
harder due to locking and synchronization requirements.

5 years agocxd2880: CXD2880_SPI_DRV should select DVB_CXD2880 with MEDIA_SUBDRV_AUTOSELECT
popcornmix [Mon, 17 Sep 2018 16:31:18 +0000 (17:31 +0100)]
cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880 with MEDIA_SUBDRV_AUTOSELECT

5 years agoAdd rpi-poe-fan driver
Serge Schneider [Mon, 9 Jul 2018 11:54:25 +0000 (12:54 +0100)]
Add rpi-poe-fan driver

Signed-off-by: Serge Schneider <serge@raspberrypi.org>
PoE HAT driver cleanup

* Fix undeclared variable in rpi_poe_fan_suspend
* Add SPDX-License-Identifier
* Expand PoE acronym in Kconfig help
* Give clearer error message on of_property_count_u32_elems fail
* Add documentation
* Add vendor to of_device_id compatible string.
* Rename m_data_s struct to fw_data_s
* Fix typos

Fixes: #2665

Signed-off-by: Serge Schneider <serge@raspberrypi.org>
5 years agostaging/vc04_services: Derive g_cache_line_size
Phil Elwell [Tue, 28 Aug 2018 09:40:40 +0000 (10:40 +0100)]
staging/vc04_services: Derive g_cache_line_size

The ARM coprocessor registers include dcache line size, but there is no
function to expose this value. Rather than create a new one, use the
read_cpuid_id function to derive the correct value, which is 32 for
BCM2835 and 64 for BCM2836/7.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agolan78xx: Move enabling of EEE into PHY init code
Phil Elwell [Thu, 5 Apr 2018 13:46:11 +0000 (14:46 +0100)]
lan78xx: Move enabling of EEE into PHY init code

Enable EEE mode as soon as possible after connecting to the PHY, and
before phy_start. This avoids a second link negotiation, which speeds
up booting and stops the interface failing to become ready.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agobrcmfmac: Re-enable firmware roaming support
Phil Elwell [Wed, 20 Jun 2018 11:20:01 +0000 (12:20 +0100)]
brcmfmac: Re-enable firmware roaming support

As of 4.18, a firmware that implements the update_connect_params
method but doesn't claim to support roaming causes an error. We
disabled firmware roaming in 4.4 [1] because it appeared to
prevent disconnects, but let's try with the current firmware to see
if things have improved.

[1] https://github.com/raspberrypi/linux/commit/dd9188011786fb62a7960922f31e8e086fb2009b

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agonet: lan78xx: Disable TCP Segmentation Offload (TSO)
Dave Stevenson [Wed, 13 Jun 2018 14:21:10 +0000 (15:21 +0100)]
net: lan78xx: Disable TCP Segmentation Offload (TSO)

TSO seems to be having issues when packets are dropped and the
remote end uses Selective Acknowledge (SACK) to denote that
data is missing. The missing data is never resent, so the
connection eventually stalls.

There is a module parameter of enable_tso added to allow
further debugging without forcing a rebuild of the kernel.

https://github.com/raspberrypi/linux/issues/2449
https://github.com/raspberrypi/linux/issues/2482

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agoof: configfs: Use of_overlay_fdt_apply API call
Phil Elwell [Thu, 14 Jun 2018 14:07:26 +0000 (15:07 +0100)]
of: configfs: Use of_overlay_fdt_apply API call

The published API to the dynamic overlay application mechanism now
takes a Flattened Device Tree blob as input so that it can manage the
lifetime of the unflattened tree. Conveniently, the new API call -
of_overlay_fdt_apply - is virtually a drop-in replacement for
create_overlay, which can now be deleted.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoirqchip: irq-bcm2835: Calc. FIQ_START at boot-time
Phil Elwell [Thu, 14 Jun 2018 10:21:04 +0000 (11:21 +0100)]
irqchip: irq-bcm2835: Calc. FIQ_START at boot-time

ad83c7cb2f37 ("irqchip/irq-bcm2836: Add support for DT interrupt polarity")
changed the way that the BCM2836/7 local interrupts are mapped; instead
of being pre-mapped they are now mapped on-demand. A side effect of this
change is that the call to irq_of_parse_and_map from armctrl_of_init
creates a new mapping, forming a gap between the IRQs and the FIQs. This
 gap breaks the FIQ<->IRQ mapping which up to now has been done by assuming:

1) that the value of FIQ_START is the same as the number of normal IRQs
that will be mapped (still true), and

2) that this value is also the offset between an IRQ and its equivalent
FIQ (which is no longer the case).

Remove both assumptions by measuring the interval between the last IRQ
and the last FIQ, passing it as the parameter to init_FIQ().

Fixes: https://github.com/raspberrypi/linux/issues/2432

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agofirmware/raspberrypi: Notify firmware of a reboot
Phil Elwell [Sat, 12 May 2018 20:35:43 +0000 (21:35 +0100)]
firmware/raspberrypi: Notify firmware of a reboot

Register for reboot notifications, sending RPI_FIRMWARE_NOTIFY_REBOOT
over the mailbox interface on reception.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoAdd ability to export gpio used by gpio-poweroff
Nick Bulleid [Thu, 10 May 2018 20:57:02 +0000 (21:57 +0100)]
Add ability to export gpio used by gpio-poweroff

Signed-off-by: Nick Bulleid <nedbulleid@fastmail.com>
Added export feature to gpio-poweroff documentation

Signed-off-by: Nick Bulleid <nedbulleid@fastmail.com>
5 years agogpiolib: Don't prevent IRQ usage of output GPIOs
Phil Elwell [Tue, 24 Apr 2018 13:42:27 +0000 (14:42 +0100)]
gpiolib: Don't prevent IRQ usage of output GPIOs

Upstream Linux deems using output GPIOs to generate IRQs as a bogus
use case, even though the BCM2835 GPIO controller is capable of doing
so. A number of users would like to make use of this facility, so
disable the checks.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agohid: Reduce default mouse polling interval to 60Hz
popcornmix [Mon, 14 Jul 2014 21:02:09 +0000 (22:02 +0100)]
hid: Reduce default mouse polling interval to 60Hz

Reduces overhead when using X

5 years agolan78xx: Read initial EEE status from DT
Phil Elwell [Fri, 9 Mar 2018 12:01:00 +0000 (12:01 +0000)]
lan78xx: Read initial EEE status from DT

Add two new DT properties:
* microchip,eee-enabled  - a boolean to enable EEE
* microchip,tx-lpi-timer - time in microseconds to wait before entering
                           low power state

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoadded capture_clear option to pps-gpio via dtoverlay (#2433)
hdoverobinson [Tue, 13 Mar 2018 10:58:39 +0000 (06:58 -0400)]
added capture_clear option to pps-gpio via dtoverlay (#2433)

5 years agosound: bcm: Fix memset dereference warning
Nathan Chancellor [Mon, 5 Mar 2018 00:20:25 +0000 (17:20 -0700)]
sound: bcm: Fix memset dereference warning

This warning appears with GCC 6.4.0 from toolchains.bootlin.com:

../sound/soc/bcm/allo-piano-dac-plus.c: In function ‘snd_allo_piano_dac_init’:
../sound/soc/bcm/allo-piano-dac-plus.c:711:30: warning: argument to ‘sizeof’ in ‘memset’ call is the same expression as the destination; did you mean to dereference it? [-Wsizeof-pointer-memaccess]
  memset(glb_ptr, 0x00, sizeof(glb_ptr));
                              ^

Suggested-by: Phil Elwell <phil@raspberrypi.org>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
5 years agoi2c-gpio: Also set bus numbers from reg property
Phil Elwell [Tue, 20 Feb 2018 10:07:27 +0000 (10:07 +0000)]
i2c-gpio: Also set bus numbers from reg property

I2C busses can be assigned specific bus numbers using aliases in
Device Tree - string properties where the name is the alias and the
value is the path to the node. The current DT parameter mechanism
does not allow property names to be derived from a parameter value
in any way, so it isn't possible to generate unique or matching
aliases for nodes from an overlay that can generate multiple
instances, e.g. i2c-gpio.

Work around this limitation (at least temporarily) by allowing
the i2c adapter number to be initialised from the "reg" property
if present.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agohack: cache: Fix linker error
popcornmix [Tue, 20 Feb 2018 20:53:46 +0000 (20:53 +0000)]
hack: cache: Fix linker error

5 years agovc4_firmware_kms: fix build
popcornmix [Sun, 17 Jun 2018 12:22:07 +0000 (13:22 +0100)]
vc4_firmware_kms: fix build

5 years agodrm/vc4: Remove duplicate primary/cursor fields from FKMS driver.
Eric Anholt [Mon, 5 Feb 2018 18:22:03 +0000 (18:22 +0000)]
drm/vc4: Remove duplicate primary/cursor fields from FKMS driver.

The CRTC has those fields and we can just use them.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agodrm/vc4: Skip SET_CURSOR_INFO when the cursor contents didn't change.
Eric Anholt [Mon, 5 Feb 2018 18:02:30 +0000 (18:02 +0000)]
drm/vc4: Skip SET_CURSOR_INFO when the cursor contents didn't change.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agodrm/vc4: Fix warning about vblank interrupts before DRM core is ready.
Eric Anholt [Mon, 5 Feb 2018 18:01:02 +0000 (18:01 +0000)]
drm/vc4: Fix warning about vblank interrupts before DRM core is ready.

The SMICS interrupt fires continuously, but since it's 1/100 the rate
of the USB interrupts, we don't really need a way to turn it off.  We
do need to make sure that we don't tell DRM about it until DRM has
asked for the interrupt at least once, because otherwise it will throw
a warning at boot time.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agovc4_fkms: Apply firmware overscan offset to hardware cursor
popcornmix [Tue, 18 Apr 2017 20:43:46 +0000 (21:43 +0100)]
vc4_fkms: Apply firmware overscan offset to hardware cursor

5 years agodrm/vc4: Add missing enable/disable vblank handlers in fkms.
Eric Anholt [Tue, 30 Jan 2018 22:21:02 +0000 (14:21 -0800)]
drm/vc4: Add missing enable/disable vblank handlers in fkms.

Fixes hang at boot in 4.14.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agodrm/vc4: Add FB modifier support to firmwarekms.
Eric Anholt [Wed, 7 Jun 2017 21:39:49 +0000 (14:39 -0700)]
drm/vc4: Add FB modifier support to firmwarekms.

Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit 11752d73488e08aaeb65fe8289a9c016acde26c2)

5 years agodrm/vc4: Add support for setting DPMS in firmwarekms.
Eric Anholt [Thu, 6 Jul 2017 18:45:48 +0000 (11:45 -0700)]
drm/vc4: Add support for setting DPMS in firmwarekms.

This ensures that the screen goes blank during DPMS (screensaver),
including the cursor.  Planes don't necessarily get disabled during
CRTC disable, so we need to be careful to not leave them on or turn
them back on early.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agodrm/vc4: Fix sending of page flip completion events in FKMS mode.
Eric Anholt [Thu, 2 Feb 2017 17:42:18 +0000 (09:42 -0800)]
drm/vc4: Fix sending of page flip completion events in FKMS mode.

In the rewrite of vc4_crtc.c for fkms, I dropped the part of the
CRTC's atomic flush handler that moved the completion event from the
proposed atomic state change to the CRTC's current state.  That meant
that when full screen pageflipping happened (glxgears -fullscreen in
X, compton, por weston), the app would end up blocked firever waiting
to draw its next frame.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agodrm/vc4: Add DRM_DEBUG_ATOMIC for the insides of fkms.
Eric Anholt [Thu, 2 Feb 2017 01:10:09 +0000 (17:10 -0800)]
drm/vc4: Add DRM_DEBUG_ATOMIC for the insides of fkms.

Trying to debug weston on fkms involved figuring out what calls I was
making to the firmware.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agodrm/vc4: Name the primary and cursor planes in fkms.
Eric Anholt [Thu, 2 Feb 2017 01:09:18 +0000 (17:09 -0800)]
drm/vc4: Name the primary and cursor planes in fkms.

This makes debugging nicer, compared to trying to remember what the
IDs are.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agodrm/vc4: Add a mode for using the closed firmware for display.
Eric Anholt [Wed, 14 Sep 2016 07:39:33 +0000 (08:39 +0100)]
drm/vc4: Add a mode for using the closed firmware for display.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agoraspberrypi-firmware: Export the general transaction function.
Eric Anholt [Wed, 14 Sep 2016 08:16:19 +0000 (09:16 +0100)]
raspberrypi-firmware: Export the general transaction function.

The vc4-firmware-kms module is going to be doing the MBOX FB call.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agoserial: 8250: bcm2835aux - suppress EPROBE_DEFER
Phil Elwell [Mon, 22 Jan 2018 17:26:38 +0000 (17:26 +0000)]
serial: 8250: bcm2835aux - suppress EPROBE_DEFER

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoARM: Activate FIQs to avoid __irq_startup warnings
Phil Elwell [Mon, 11 Dec 2017 09:18:32 +0000 (09:18 +0000)]
ARM: Activate FIQs to avoid __irq_startup warnings

There is a new test in __irq_startup that the IRQ is activated, which
hasn't been the case for FIQs since they bypass some of the usual setup.

Augment enable_fiq to include a call to irq_activate to avoid the
warning.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoARM: bcm2835: Set Serial number and Revision
Noralf Trønnes [Wed, 3 Jun 2015 10:26:13 +0000 (12:26 +0200)]
ARM: bcm2835: Set Serial number and Revision

The VideoCore bootloader passes in Serial number and
Revision number through Device Tree. Make these available to
userspace through /proc/cpuinfo.

Mainline status:

There is a commit in linux-next that standardize passing the serial
number through Device Tree (string: /serial-number):
ARM: 8355/1: arch: Show the serial number from devicetree in cpuinfo

There was an attempt to do the same with the revision number, but it
didn't get in:
[PATCH v2 1/2] arm: devtree: Set system_rev from DT revision

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
5 years agocgroup: Disable cgroup "memory" by default
Phil Elwell [Mon, 27 Nov 2017 17:14:54 +0000 (17:14 +0000)]
cgroup: Disable cgroup "memory" by default

Some Raspberry Pis have limited RAM and most users won't use the
cgroup memory support so it is disabled by default. Enable with:

    cgroup_enable=memory

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoTidy up of the ft5406 driver to use DT (#2189)
James Hughes [Thu, 16 Nov 2017 15:56:17 +0000 (15:56 +0000)]
Tidy up of the ft5406 driver to use DT (#2189)

Driver was using a fixed resolution, this commit
adds touchscreen size, and coordinate flip and swap
features via device tree overlays.

Adds overrides so the VC4 can adjust the DT parameters
appropriately; there is a newer version of the VC4 side
driver that can now set up the appropriate DT values
if required.

Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
5 years agomcp2515: Use DT-supplied interrupt flags
Phil Elwell [Tue, 14 Nov 2017 11:03:22 +0000 (11:03 +0000)]
mcp2515: Use DT-supplied interrupt flags

The MCP2515 datasheet clearly describes a level-triggered interrupt
pin. Therefore the receiving interrupt controller must also be
configured for level-triggered operation otherwise there is a danger
of a missed interrupt condition blocking all subsequent interrupts.
The ONESHOT flag ensures that the interrupt is masked until the
threaded interrupt handler exits.

Rather than change the flags globally (they must have worked for at
least one user), allow the flags to be overridden from Device Tree
in the event that the device has a DT node.

See: https://github.com/raspberrypi/linux/issues/2175
     https://github.com/raspberrypi/linux/issues/2263

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoAXI performance monitor driver (#2222)
James Hughes [Tue, 14 Nov 2017 15:13:15 +0000 (15:13 +0000)]
AXI performance monitor driver (#2222)

Uses the debugfs I/F to provide access to the AXI
bus performance monitors.

Requires the new mailbox peripheral access for access
to the VPU performance registers, system bus access
is done using direct register reads.

Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
5 years agocache: export clean and invalidate
popcornmix [Fri, 25 Aug 2017 18:18:13 +0000 (19:18 +0100)]
cache: export clean and invalidate

5 years agobuild/arm64: Add rules for .dtbo files for dts overlays
Khem Raj [Sat, 11 Feb 2017 01:57:08 +0000 (17:57 -0800)]
build/arm64: Add rules for .dtbo files for dts overlays

We now create overlays as .dtbo files.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
5 years agoARM64: Force hardware emulation of deprecated instructions.
Michael Zoran [Sat, 11 Feb 2017 09:18:31 +0000 (01:18 -0800)]
ARM64: Force hardware emulation of deprecated instructions.

5 years agoARM64: Round-Robin dispatch IRQs between CPUs.
Michael Zoran [Sun, 15 Jan 2017 05:43:57 +0000 (21:43 -0800)]
ARM64: Round-Robin dispatch IRQs between CPUs.

IRQ-CPU mapping is round robined on ARM64 to increase
concurrency and allow multiple interrupts to be serviced
at a time.  This reduces the need for FIQ.

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
5 years agoARM64/DWC_OTG: Port dwc_otg driver to ARM64
Michael Zoran [Sun, 15 Jan 2017 05:33:51 +0000 (21:33 -0800)]
ARM64/DWC_OTG: Port dwc_otg driver to ARM64

In ARM64, the FIQ mechanism used by this driver is not current
implemented.   As a workaround, reqular IRQ is used instead
of FIQ.

In a separate change, the IRQ-CPU mapping is round robined
on ARM64 to increase concurrency and allow multiple interrupts
to be serviced at a time.  This reduces the need for FIQ.

Tests Run:

This mechanism is most likely to break when multiple USB devices
are attached at the same time.  So the system was tested under
stress.

Devices:

1. USB Speakers playing back a FLAC audio through VLC
   at 96KHz.(Higher then typically, but supported on my speakers).

2. sftp transferring large files through the buildin ethernet
   connection which is connected through USB.

3. Keyboard and mouse attached and being used.

Although I do occasionally hear some glitches, the music seems to
play quite well.

Signed-off-by: Michael Zoran <mzoran@crowfest.net>