platform/kernel/linux-rpi3.git
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>
5 years agoAdd arm64 configuration and device tree differences. Disable MMC_BCM2835_SDHOST and...
Michael Zoran [Wed, 24 Aug 2016 10:35:56 +0000 (03:35 -0700)]
Add arm64 configuration and device tree differences. Disable MMC_BCM2835_SDHOST and MMC_BCM2835 since these drivers are crashing at the moment.

ARM64: Modify default config to get raspbian to boot (#1686)

1. Enable emulation of deprecated instructions.
2. Enable ARM 8.1 and 8.2 features which are not detected at runtime.
3. Switch the default governer to powersave.
4. Include the watchdog timer driver in the kernel image rather then a module.

Tested with raspbian-jessie 2016-09-23.

ARM64: Make it work again on 4.9 (#1790)

* Invoke the dtc compiler with the same options used in arm mode.
* ARM64 now uses the bcm2835 platform just like ARM32.
* ARM64: Update bcmrpi3_defconfig

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
Update arm64 Makefile to compile bcm2710 dtb file

The line 'dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-3-b.dtb' has been copied from previous rpi-4.14.y version into rpi-4.15.y arch/arm64/boot/dts/broadcom/Makefile to restore compilation of bcm2710-rpi-3-b.dtb device tree blob under 'make ARCH=arm64 dtbs' command.

arm64: enable thermal / enable mmc (#2425)

This commit adds support for RP3-B-Plus in in arch arm64 (#2464)

Enable AES, AES bit slice, and AES NEON engines on arm64

Enable bbr module for arm64

5 years agoconfig: Add default configs
popcornmix [Mon, 13 Apr 2015 16:16:29 +0000 (17:16 +0100)]
config: Add default configs

5 years agohci_h5: Don't send conf_req when ACTIVE
Phil Elwell [Thu, 17 Dec 2015 13:37:07 +0000 (13:37 +0000)]
hci_h5: Don't send conf_req when ACTIVE

Without this patch, a modem and kernel can continuously bombard each
other with conf_req and conf_rsp messages, in a demented game of tag.

5 years agobrcmfmac: Mute expected startup 'errors'
Phil Elwell [Fri, 17 Feb 2017 15:26:13 +0000 (15:26 +0000)]
brcmfmac: Mute expected startup 'errors'

The brcmfmac WiFi driver always complains about the '00' country code.
Modify the driver to ignore '00' silently.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agobrcm: adds support for BCM43341 wifi
Cheong2K [Fri, 26 Feb 2016 10:20:10 +0000 (18:20 +0800)]
brcm: adds support for BCM43341 wifi

brcmfmac: Disable power management

Disable wireless power saving in the brcmfmac WLAN driver. This is a
temporary measure until the connectivity loss resulting from power
saving is resolved.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
brcmfmac: Use original country code as a fallback

Commit 73345fd212980d2e28a5c6d83801c903bd773680:

    brcmfmac: Configure country code using device specific settings

prevents region codes from working on devices that lack a region code
translation table. In the event of an absent table, preserve the old
behaviour of using the provided code as-is.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
brcmfmac: Plug memory leak in brcmf_fill_bss_param

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
brcmfmac: do not use internal roaming engine by default

Some evidence of curing disconnects with this disabled, so make it a default.
Can be overridden with module parameter roamoff=0
See: http://projectable.me/optimize-my-pi-wi-fi/

brcmfmac: Change stop_ap sequence

Patch from Broadcom/Cypress to resolve a customer error

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoOF: DT-Overlay configfs interface
Pantelis Antoniou [Wed, 3 Dec 2014 11:23:28 +0000 (13:23 +0200)]
OF: DT-Overlay configfs interface

This is a port of Pantelis Antoniou's v3 port that makes use of the
new upstreamed configfs support for binary attributes.

Original commit message:

Add a runtime interface to using configfs for generic device tree overlay
usage. With it its possible to use device tree overlays without having
to use a per-platform overlay manager.

Please see Documentation/devicetree/configfs-overlays.txt for more info.

Changes since v2:
- Removed ifdef CONFIG_OF_OVERLAY (since for now it's required)
- Created a documentation entry
- Slight rewording in Kconfig

Changes since v1:
- of_resolve() -> of_resolve_phandles().

Originally-signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
DT configfs: Fix build errors on other platforms

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
DT configfs: fix build error

There is an error when compiling rpi-4.6.y branch:
  CC      drivers/of/configfs.o
drivers/of/configfs.c:291:21: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
   .default_groups = of_cfs_def_groups,
                     ^
drivers/of/configfs.c:291:21: note: (near initialization for 'of_cfs_subsys.su_group.default_groups.next')

The .default_groups is linked list since commit
1ae1602de028acaa42a0f6ff18d19756f8e825c6.
This commit uses configfs_add_default_group to fix this problem.

Signed-off-by: Slawomir Stepien <sst@poczta.fm>
configfs: New of_overlay API

5 years agonet: Add non-mainline source for rtl8192cu wlan
popcornmix [Mon, 3 Sep 2012 16:10:23 +0000 (17:10 +0100)]
net: Add non-mainline source for rtl8192cu wlan

We are now syncing with version from:
https://github.com/pvaret/rtl8192cu-fixes

5 years agobcm2835-virtgpio: Virtual GPIO driver
popcornmix [Tue, 23 Feb 2016 19:56:04 +0000 (19:56 +0000)]
bcm2835-virtgpio: Virtual GPIO driver

Add a virtual GPIO driver that uses the firmware mailbox interface to
request that the VPU toggles LEDs.

5 years agorpi_display: add backlight driver and overlay
P33M [Wed, 21 Oct 2015 13:55:21 +0000 (14:55 +0100)]
rpi_display: add backlight driver and overlay

Add a mailbox-driven backlight controller for the Raspberry Pi DSI
touchscreen display. Requires updated GPU firmware to recognise the
mailbox request.

Signed-off-by: Gordon Hollingworth <gordon@raspberrypi.org>
Add Raspberry Pi firmware driver to the dependencies of backlight driver

Otherwise the backlight driver fails to build if the firmware
loading driver is not in the kernel

Signed-off-by: Alex Riesen <alexander.riesen@cetitec.com>
5 years agoASoC: Create a generic Pi Hat WM8804 driver
Tim Gover [Sat, 21 Jul 2018 19:07:46 +0000 (20:07 +0100)]
ASoC: Create a generic Pi Hat WM8804 driver

Reduce the amount of duplicated code by creating a generic driver for
Pi Hat digi cards using the WM8804 codec.

This replaces the
Allo DigiOne, Hifiberry Digi/Pro, JustBoom Digi and IQAudIO Digi
dedicate soundcard drivers with a generic driver.

There are no significant changes to the runtime behavior of the drivers
and end users should not have to change any configuration settings
after upgrading.

Minor changes
* Check the return value of snd_soc_component_update_bits
* Added some pr_debug tracing
* Various checkpatch tidyups
* Updated allodigi-one to use use 128FS at > 96 Khz. This appears to
  be an omission in the original driver code so followed the Hifiberry
  DAC driver approach.

5 years agoASoC: Add Kconfig and Makefile for sound/soc/bcm
popcornmix [Mon, 3 Sep 2018 16:00:36 +0000 (17:00 +0100)]
ASoC: Add Kconfig and Makefile for sound/soc/bcm

Signed-off-by: popcornmix <popcornmix@gmail.com>
5 years agoASoC: Add generic RPI driver for simple soundcards.
Tim Gover [Wed, 27 Jun 2018 14:59:12 +0000 (15:59 +0100)]
ASoC: Add generic RPI driver for simple soundcards.

The RPI simple sound card driver provides a generic ALSA SOC card driver
supporting a variety of Pi HAT soundcards. The intention is to avoid
the duplication of code for cards that can't be fully supported by
the soc simple/graph cards but are otherwise almost identical.

This initial commit adds support for the ADAU1977 ADC, Google VoiceHat,
HifiBerry AMP, HifiBerry DAC and RPI DAC.

Signed-off-by: Tim Gover <tim.gover@raspberrypi.org>
ASoC: Use correct card name in rpi-simple driver

Use the specific card name from drvdata instead of the snd_rpi_simple

rpi-simple-soundcard: Use nicer driver name "RPi-simple"

Rename the driver from "RPI simple soundcard" to "RPi-simple" so that
the driver name won't be mangled allowing to be used unaltered as the
card conf filename.

5 years agoASoC: wm8804: MCLK configuration options, 32-bit
Daniel Matuschek [Wed, 15 Jan 2014 20:41:23 +0000 (21:41 +0100)]
ASoC: wm8804: MCLK configuration options, 32-bit

WM8804 can run with PLL frequencies of 256xfs and 128xfs for most sample
rates. At 192kHz only 128xfs is supported. The existing driver selects
128xfs automatically for some lower samples rates. By using an
additional mclk_div divider, it is now possible to control the
behaviour. This allows using 256xfs PLL frequency on all sample rates up
to 96kHz. It should allow lower jitter and better signal quality. The
behavior has to be controlled by the sound card driver, because some
sample frequency share the same setting. e.g. 192kHz and 96kHz use
24.576MHz master clock. The only difference is the MCLK divider.

This also added support for 32bit data.

Signed-off-by: Daniel Matuschek <daniel@matuschek.net>
5 years agoDriver and overlay for Allo Katana DAC
allocom [Thu, 19 Apr 2018 06:42:26 +0000 (12:12 +0530)]
Driver and overlay for Allo Katana DAC

Allo Katana DAC: Updated default values

Signed-off-by: Jaikumar <jaikumar@cem-solutions.com>
5 years agoDriver support for Google voiceHAT soundcard.
Peter Malkin [Mon, 27 Mar 2017 23:38:21 +0000 (16:38 -0700)]
Driver support for Google voiceHAT soundcard.

ASoC: googlevoicehat-codec: Use correct device when grabbing GPIO

The fixup for the VoiceHAT in 4.18 incorrectly tried to find the
sdmode GPIO pin under the card device, not the codec device.
This failed, and therefore caused the device probe to fail.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
ASoC: googlevoicehat-codec: Reformat for kernel coding standards

Fix all whitespace, indentation, and bracing errors.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
ASoC: googlevoicehat-codec: Make driver function structure const

Make voicehat_component_driver a const structure.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
ASoC: googlevoicehat-codec: Only convert from ms to jiffies once

Minor optimisation and allows to become checkpatch clean.
A msec value is read out of DT or from a define, and convert once to
jiffies, rather than every time that it is used.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agoAdd support for the AudioInjector.net Octo sound card
Matt Flax [Wed, 8 Mar 2017 09:04:13 +0000 (20:04 +1100)]
Add support for the AudioInjector.net Octo sound card

AudioInjector Octo: sample rates, regulators, reset

This patch adds new sample rates to the Audioinjector Octo sound card. The
new supported rates are (in kHz) :
96, 48, 32, 24, 16, 8, 88.2, 44.1, 29.4, 22.05, 14.7

Reference the bcm270x DT regulators in the overlay.

This patch adds a reset GPIO for the AudioInjector.net octo sound card.

Audioinjector octo : Make the playback and capture symmetric

This patch ensures that the sample rate and channel count of the audioinjector
octo sound card are symmetric.

audioinjector-octo: Add continuous clock feature

By user request, add a switch to prevent the clocks being stopped when
the stream is paused, stopped or shutdown. Provide access to the switch
by adding a 'non-stop-clocks' parameter to the audioinjector-addons
overlay.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoAdd support for Fe-Pi audio sound card. (#1867)
Fe-Pi [Wed, 1 Mar 2017 11:42:43 +0000 (04:42 -0700)]
Add support for Fe-Pi audio sound card. (#1867)

Fe-Pi Audio Sound Card is based on NXP SGTL5000 codec.
Mechanical specification of the board is the same the Raspberry Pi Zero.
3.5mm jacks for Headphone/Mic, Line In, and Line Out.

Signed-off-by: Henry Kupis <fe-pi@cox.net>
5 years agosound: Support for Dion Audio LOCO-V2 DAC-AMP HAT
Miquel [Fri, 24 Feb 2017 19:51:06 +0000 (20:51 +0100)]
sound: Support for Dion Audio LOCO-V2 DAC-AMP HAT

Signed-off-by: Miquel Blauw <info@dionaudio.nl>
ASoC: dionaudio_loco-v2: fix S24_LE format

Remove set_bclk_ratio call so 24-bit data is transmitted in
24 bclk cycles.

Also remove hw_params and ops as they are no longer needed.

Signed-off-by: Matthias Reichl <hias@horus.com>
5 years agoASoC: Add driver for Cirrus Logic Audio Card
Matthias Reichl [Sun, 22 Jan 2017 11:49:37 +0000 (12:49 +0100)]
ASoC: Add driver for Cirrus Logic Audio Card

Note: due to problems with deferred probing of regulators
the following softdep should be added to a modprobe.d file

softdep arizona-spi pre: arizona-ldo1

Signed-off-by: Matthias Reichl <hias@horus.com>
5 years agoSupport for Blokas Labs pisound board
gtrainavicius [Sun, 23 Oct 2016 09:06:53 +0000 (12:06 +0300)]
Support for Blokas Labs pisound board

Pisound dynamic overlay (#1760)

Restructuring pisound-overlay.dts, so it can be loaded and unloaded dynamically using dtoverlay.

Print a logline when the kernel module is removed.

pisound improvements:

* Added a writable sysfs object to enable scripts / user space software
to blink MIDI activity LEDs for variable duration.
* Improved hw_param constraints setting.
* Added compatibility with S16_LE sample format.
* Exposed some simple placeholder volume controls, so the card appears
in volumealsa widget.

Add missing SND_PISOUND selects dependency to SND_RAWMIDI

Without it the Pisound module fails to compile.
See https://github.com/raspberrypi/linux/issues/2366

Updates for Pisound module code:

* Merged 'Fix a warning in DEBUG builds' (1c8b82b).
* Updating some strings and copyright information.
* Fix for handling high load of MIDI input and output.
* Use dual rate oversampling ratio for 96kHz instead of single
  rate one.

Signed-off-by: Giedrius Trainavicius <giedrius@blokas.io>
Fixing memset call in pisound.c

Signed-off-by: Giedrius Trainavicius <giedrius@blokas.io>
Fix for Pisound's MIDI Input getting blocked for a while in rare cases.

There was a possible race condition which could lead to Input's FIFO queue
to be underflown, causing high amount of processing in the worker thread for
some period of time.

Signed-off-by: Giedrius Trainavicius <giedrius@blokas.io>
5 years agoAdd support for Allo Boss DAC add-on board for Raspberry Pi. (#1924)
BabuSubashChandar [Tue, 28 Mar 2017 14:34:42 +0000 (20:04 +0530)]
Add support for Allo Boss DAC add-on board for Raspberry Pi. (#1924)

Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
Reviewed-by: Deepak <deepak@zilogic.com>
Reviewed-by: BabuSubashChandar <babusubashchandar@zilogic.com>
Add support for new clock rate and mute gpios.

Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
Reviewed-by: Deepak <deepak@zilogic.com>
Reviewed-by: BabuSubashChandar <babusubashchandar@zilogic.com>
ASoC: allo-boss-dac: fix S24_LE format

Remove set_bclk_ratio call so 24-bit data is transmitted in
24 bclk cycles.

Signed-off-by: Matthias Reichl <hias@horus.com>
ASoC: allo-boss-dac: transmit S24_LE with 64 BCLK cycles

Signed-off-by: Matthias Reichl <hias@horus.com>
5 years agoAdd support for Allo Piano DAC 2.1 plus add-on board for Raspberry Pi.
Raashid Muhammed [Mon, 27 Mar 2017 07:05:00 +0000 (12:35 +0530)]
Add support for Allo Piano DAC 2.1 plus add-on board for Raspberry Pi.

The Piano DAC 2.1 has support for 4 channels with subwoofer.

Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
Reviewed-by: Vijay Kumar B. <vijaykumar@zilogic.com>
Reviewed-by: Raashid Muhammed <raashidmuhammed@zilogic.com>
Add clock changes and mute gpios (#1938)

Also improve code style and adhere to ALSA coding conventions.

Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
Reviewed-by: Vijay Kumar B. <vijaykumar@zilogic.com>
Reviewed-by: Raashid Muhammed <raashidmuhammed@zilogic.com>
PianoPlus: Dual Mono & Dual Stereo features added (#2069)

allo-piano-dac-plus: Master volume added + fixes

Master volume added, which controls both DACs volumes.

See: https://github.com/raspberrypi/linux/pull/2149

Also fix initial max volume, default mode value, and unmute.

Signed-off-by: allocom <sparky-dev@allo.com>
ASoC: allo-piano-dac-plus: fix S24_LE format

Remove set_bclk_ratio call so 24-bit data is transmitted in
24 bclk cycles.

Signed-off-by: Matthias Reichl <hias@horus.com>
5 years agoAllo Piano DAC boards: Initial 2 channel (stereo) support (#1645)
Clive Messer [Mon, 19 Sep 2016 13:01:04 +0000 (14:01 +0100)]
Allo Piano DAC boards: Initial 2 channel (stereo) support (#1645)

Add initial 2 channel (stereo) support for Allo Piano DAC (2.0/2.1) boards,
using allo-piano-dac-pcm512x-audio overlay and allo-piano-dac ALSA ASoC
machine driver.

NB. The initial support is 2 channel (stereo) ONLY!
(The Piano DAC 2.1 will only support 2 channel (stereo) left/right output,
 pending an update to the upstream pcm512x codec driver, which will have
 to be submitted via upstream. With the initial downstream support,
 provided by this patch, the Piano DAC 2.1 subwoofer outputs will
 not function.)

Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
Signed-off-by: Clive Messer <clive.messer@digitaldreamtime.co.uk>
Tested-by: Clive Messer <clive.messer@digitaldreamtime.co.uk>
ASoC: allo-piano-dac: fix S24_LE format

Remove set_bclk_ratio call so 24-bit data is transmitted in
24 bclk cycles.

Also remove hw_params and ops as they are no longer needed.

Signed-off-by: Matthias Reichl <hias@horus.com>
5 years agoAdd support for Dion Audio LOCO DAC-AMP HAT
DigitalDreamtime [Sat, 2 Jul 2016 15:26:19 +0000 (16:26 +0100)]
Add support for Dion Audio LOCO DAC-AMP HAT

Using dedicated machine driver and pcm5102a codec driver.

Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
5 years agoNew driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
escalator2015 [Tue, 24 May 2016 15:20:09 +0000 (16:20 +0100)]
New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804

5 years agoNew AudioInjector.net Pi soundcard with low jitter audio in and out.
Matt Flax [Mon, 16 May 2016 11:36:31 +0000 (21:36 +1000)]
New AudioInjector.net Pi soundcard with low jitter audio in and out.

Contains the sound/soc/bcm ALSA machine driver and necessary alterations to the Kconfig and Makefile.
Adds the dts overlay and updates the Makefile and README.
Updates the relevant defconfig files to enable building for the Raspberry Pi.
Thanks to Phil Elwell (pelwell) for the review, simple-card concepts and discussion. Thanks to Clive Messer for overlay naming suggestions.

Added support for headphones, microphone and bclk_ratio settings.

This patch adds headphone and microphone capability to the Audio Injector sound card. The patch also sets the bit clock ratio for use in the bcm2835-i2s driver. The bcm2835-i2s can't handle an 8 kHz sample rate when the bit clock is at 12 MHz because its register is only 10 bits wide which can't represent the ch2 offset of 1508. For that reason, the rate constraint is added.

5 years agoAdd Support for JustBoom Audio boards
Aaron Shaw [Thu, 7 Apr 2016 20:26:21 +0000 (21:26 +0100)]
Add Support for JustBoom Audio boards

justboom-dac: Adjust for ALSA API change

As of 4.4, snd_soc_limit_volume now takes a struct snd_soc_card *
rather than a struct snd_soc_codec *.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
ASoC: justboom-dac: fix S24_LE format

Remove set_bclk_ratio call so 24-bit data is transmitted in
24 bclk cycles.

Also remove hw_params as it's no longer needed.

Signed-off-by: Matthias Reichl <hias@horus.com>
5 years agoAdd driver for rpi-proto
Waldemar Brodkorb [Wed, 25 Mar 2015 08:26:17 +0000 (09:26 +0100)]
Add driver for rpi-proto

Forward port of 3.10.x driver from https://github.com/koalo
We are using a custom board and would like to use rpi 3.18.x
kernel. Patch works fine for our embedded system.

URL to the audio chip:
http://www.mikroe.com/add-on-boards/audio-voice/audio-codec-proto/

Playback tested with devicetree enabled.

Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
5 years agoAdded driver for HiFiBerry Amp amplifier add-on board
Daniel Matuschek [Mon, 4 Aug 2014 09:09:58 +0000 (11:09 +0200)]
Added driver for HiFiBerry Amp amplifier add-on board

The driver contains a low-level hardware driver for the TAS5713 and the
drivers for the Raspberry Pi I2S subsystem.

TAS5713: return error if initialisation fails

Existing TAS5713 driver logs errors during initialisation, but does not return
an error code. Therefore even if initialisation fails, the driver will still be
loaded, but won't work. This patch fixes this. I2C communication error will now
reported correctly by a non-zero return code.

HiFiBerry Amp: fix device-tree problems

Some code to load the driver based on device-tree-overlays was missing. This is added by this patch.

5 years agoAdded support for HiFiBerry DAC+
Daniel Matuschek [Mon, 4 Aug 2014 08:06:56 +0000 (10:06 +0200)]
Added support for HiFiBerry DAC+

The driver is based on the HiFiBerry DAC driver. However HiFiBerry DAC+ uses
a different codec chip (PCM5122), therefore a new driver is necessary.

Add support for the HiFiBerry DAC+ Pro.

The HiFiBerry DAC+ and DAC+ Pro products both use the existing bcm sound driver with the DAC+ Pro having a special clock device driver representing the two high precision oscillators.

An addition bug fix is included for the PCM512x codec where by the physical size of the sample frame is used in the calculation of the LRCK divisor as it was found to be wrong when using 24-bit depth sample contained in a little endian 4-byte sample frame.

Limit PCM512x "Digital" gain to 0dB by default with HiFiBerry DAC+

24db_digital_gain DT param can be used to specify that PCM512x
codec "Digital" volume control should not be limited to 0dB gain,
and if specified will allow the full 24dB gain.

Add dt param to force HiFiBerry DAC+ Pro into slave mode

"dtoverlay=hifiberry-dacplus,slave"

Add 'slave' param to use HiFiBerry DAC+ Pro in slave mode,
with Pi as master for bit and frame clock.

Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
Fixed a bug when using 352.8kHz sample rate

Signed-off-by: Daniel Matuschek <daniel@hifiberry.com>
ASoC: pcm512x: revert downstream changes

This partially reverts commit 185ea05465aac8bf02a0d2b2f4289d42c72870b7
which was added by https://github.com/raspberrypi/linux/pull/1152

The downstream pcm512x changes caused a regression, it broke normal
use of the 24bit format with the codec, eg when using simple-audio-card.

The actual bug with 24bit playback is the incorrect usage
of physical_width in various drivers in the downstream tree
which causes 24bit data to be transmitted with 32 clock
cycles. So it's not the pcm512x that needs fixing, it's the
soundcard drivers.

Signed-off-by: Matthias Reichl <hias@horus.com>
ASoC: hifiberry_dacplus: fix S24_LE format

Remove set_bclk_ratio call so 24-bit data is transmitted in
24 bclk cycles.

Signed-off-by: Matthias Reichl <hias@horus.com>
ASoC: hifiberry_dacplus: transmit S24_LE with 64 BCLK cycles

Signed-off-by: Matthias Reichl <hias@horus.com>
5 years agoAdd IQaudIO Sound Card support for Raspberry Pi
Gordon Garrity [Sat, 8 Mar 2014 16:56:57 +0000 (16:56 +0000)]
Add IQaudIO Sound Card support for Raspberry Pi

Set a limit of 0dB on Digital Volume Control

The main volume control in the PCM512x DAC has a range up to
+24dB. This is dangerously loud and can potentially cause massive
clipping in the output stages. Therefore this sets a sensible
limit of 0dB for this control.

Allow up to 24dB digital gain to be applied when using IQAudIO DAC+

24db_digital_gain DT param can be used to specify that PCM512x
codec "Digital" volume control should not be limited to 0dB gain,
and if specified will allow the full 24dB gain.

Modify IQAudIO DAC+ ASoC driver to set card/dai config from dt

Add the ability to set the card name, dai name and dai stream name, from
dt config.

Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
IQaudIO: auto-mute for AMP+ and DigiAMP+

IQAudIO amplifier mute via GPIO22. Add dt params for "one-shot" unmute
and auto mute.

Revision 2, auto mute implementing HiassofT suggestion to mute/unmute
using set_bias_level, rather than startup/shutdown....
"By default DAPM waits 5 seconds (pmdown_time) before shutting down
playback streams so a close/stop immediately followed by open/start
doesn't trigger an amp mute+unmute."

Tested on both AMP+ (via DAC+) and DigiAMP+, with both options...

dtoverlay=iqaudio-dacplus,unmute_amp
 "one-shot" unmute when kernel module loads.

dtoverlay=iqaudio-dacplus,auto_mute_amp
 Unmute amp when ALSA device opened by a client. Mute, with 5 second delay
 when ALSA device closed. (Re-opening the device within the 5 second close
 window, will cancel mute.)

Revision 4, using gpiod.

Revision 5, clean-up formatting before adding mute code.
 - Convert tab plus 4 space formatting to 2x tab
 - Remove '// NOT USED' commented code

Revision 6, don't attempt to "one-shot" unmute amp, unless card is
successfully registered.

Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
ASoC: iqaudio-dac: fix S24_LE format

Remove set_bclk_ratio call so 24-bit data is transmitted in
24 bclk cycles.

Signed-off-by: Matthias Reichl <hias@horus.com>
5 years agoASoC: Add support for Rpi-DAC
Florian Meier [Mon, 25 Jan 2016 15:48:59 +0000 (15:48 +0000)]
ASoC: Add support for Rpi-DAC

5 years agoASoC: pcm512x: implement set_tdm_slot interface
Matthias Reichl [Thu, 22 Feb 2018 10:55:06 +0000 (11:55 +0100)]
ASoC: pcm512x: implement set_tdm_slot interface

PCM512x can accept data padded with additional BCLK cycles
but the driver currently lacks an interface to configure this.

This leads to the problem that S24_LE format in master mode
can result in non-integer clock divisors and pcm512x running
at a rather off rate.

For example 48kHz with 48fs BCLK and SCLK at 24.576MHz uses
a divisor of 10 (rounded down from 10.6666) and results in a
51.2kHz LRCLK. With 64fs BCLK a divisor of 8 is used and
LRCLK runs at exactly 48kHz.

Fix this by providing a minimal set_tdm_slot implementation
so machine drivers can optionally configure custom BCLK ratios.

Signed-off-by: Matthias Reichl <hias@horus.com>
5 years agomfd: Add Raspberry Pi Sense HAT core driver
Phil Elwell [Tue, 14 Jul 2015 13:32:47 +0000 (14:32 +0100)]
mfd: Add Raspberry Pi Sense HAT core driver

5 years agogpio-poweroff: Allow it to work on Raspberry Pi
Phil Elwell [Thu, 25 Jun 2015 11:16:11 +0000 (12:16 +0100)]
gpio-poweroff: Allow it to work on Raspberry Pi

The Raspberry Pi firmware manages the power-down and reboot
process. To do this it installs a pm_power_off handler, causing
the gpio-poweroff module to abort the probe function.

This patch introduces a "force" DT property that overrides that
behaviour, and also adds a DT overlay to enable and control it.

Note that running in an active-low configuration (DT parameter
"active_low") requires a custom dt-blob.bin and probably won't
allow a reboot without switching off, so an external inversion
of the trigger signal may be preferable.

5 years agoImprove __copy_to_user and __copy_from_user performance
popcornmix [Mon, 28 Nov 2016 16:50:04 +0000 (16:50 +0000)]
Improve __copy_to_user and __copy_from_user performance

Provide a __copy_from_user that uses memcpy. On BCM2708, use
optimised memcpy/memmove/memcmp/memset implementations.

arch/arm: Add mmiocpy/set aliases for memcpy/set

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

copy_from_user: CPU_SW_DOMAIN_PAN compatibility

The downstream copy_from_user acceleration must also play nice with
CONFIG_CPU_SW_DOMAIN_PAN.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agorpi-ft5406: Add touchscreen driver for pi LCD display
Gordon Hollingworth [Tue, 12 May 2015 13:47:56 +0000 (14:47 +0100)]
rpi-ft5406: Add touchscreen driver for pi LCD display

Fix driver detection failure Check that the buffer response is non-zero meaning the touchscreen was detected

rpi-ft5406: Use firmware API

RPI-FT5406: Enable aarch64 support through explicit iomem interface

Signed-off-by: Gerhard de Clercq <gerharddeclercq@outlook.com>
5 years agoAdded Device IDs for August DVB-T 205
popcornmix [Tue, 2 Jul 2013 23:54:08 +0000 (00:54 +0100)]
Added Device IDs for August DVB-T 205

5 years agofbdev: add FBIOCOPYAREA ioctl
Siarhei Siamashka [Mon, 17 Jun 2013 10:32:11 +0000 (13:32 +0300)]
fbdev: add FBIOCOPYAREA ioctl

Based on the patch authored by Ali Gholami Rudi at
    https://lkml.org/lkml/2009/7/13/153

Provide an ioctl for userspace applications, but only if this operation
is hardware accelerated (otherwide it does not make any sense).

Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
bcm2708_fb: Add ioctl for reading gpu memory through dma

5 years agoBCM270x_DT: Add pwr_led, and the required "input" trigger
Phil Elwell [Fri, 6 Feb 2015 13:50:57 +0000 (13:50 +0000)]
BCM270x_DT: Add pwr_led, and the required "input" trigger

The "input" trigger makes the associated GPIO an input.  This is to support
the Raspberry Pi PWR LED, which is driven by external hardware in normal use.

N.B. pwr_led is not available on Model A or B boards.

leds-gpio: Implement the brightness_get method

The power LED uses some clever logic that means it is driven
by a voltage measuring circuit when configured as input, otherwise
it is driven by the GPIO output value. This patch wires up the
brightness_get method for leds-gpio so that user-space can monitor
the LED value via /sys/class/gpio/led1/brightness. Using the input
trigger this returns an indication of the system power health,
otherwise it is just whatever value the trigger has written most
recently.

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

5 years agoBCM2708: Add core Device Tree support
notro [Wed, 9 Jul 2014 12:46:08 +0000 (14:46 +0200)]
BCM2708: Add core Device Tree support

Add the bare minimum needed to boot BCM2708 from a Device Tree.

Signed-off-by: Noralf Tronnes <notro@tronnes.org>
BCM2708: DT: change 'axi' nodename to 'soc'

Change DT node named 'axi' to 'soc' so it matches ARCH_BCM2835.
The VC4 bootloader fills in certain properties in the 'axi' subtree,
but since this is part of an upstreaming effort, the name is changed.

Signed-off-by: Noralf Tronnes notro@tronnes.org
BCM2708_DT: Correct length of the peripheral space

Use dts-dirs feature for overlays.

The kernel makefiles have a dts-dirs target that is for vendor subdirectories.

Using this fixes the install_dtbs target, which previously did not install the overlays.

BCM270X_DT: configure I2S DMA channels

Signed-off-by: Matthias Reichl <hias@horus.com>
BCM270X_DT: switch to bcm2835-i2s

I2S soundcard drivers with proper devicetree support (i.e. not linking
to the cpu_dai/platform via name but to cpu/platform via of_node)
will work out of the box without any modifications.

When the kernel is compiled without devicetree support the platform
code will instantiate the bcm2708-i2s driver and I2S soundcard drivers
will link to it via name, as before.

Signed-off-by: Matthias Reichl <hias@horus.com>
SDIO-overlay: add poll_once-boolean parameter

Add paramter to toggle sdio-device-polling
done every second or once at boot-time.

Signed-off-by: Patrick Boettcher <patrick.boettcher@posteo.de>
BCM270X_DT: Make mmc overlay compatible with current firmware

The original DT overlay logic followed a merge-then-patch procedure,
i.e. parameters are applied to the loaded overlay before the overlay
is merged into the base DTB. This sequence has been changed to
patch-then-merge, in order to support parameterised node names, and
to protect against bad overlays. As a result, overrides (parameters)
must only target labels in the overlay, but the overlay can obviously target nodes in the base DTB.

mmc-overlay.dts (that switches back to the original mmc sdcard
driver) is the only overlay violating that rule, and this patch
fixes it.

bcm270x_dt: Use the sdhost MMC controller by default

The "mmc" overlay reverts to using the other controller.

squash: Add cprman to dt

BCM270X_DT: Use clk_core for I2C interfaces

BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi

The mainline Device Tree files are quite close to downstream now.
Let's use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi as base files
for our dts files.

Mainline dts files are based on these files:

          bcm2835-rpi.dtsi
  bcm2835.dtsi    bcm2836.dtsi
          bcm283x.dtsi

Current downstream are based on these:

  bcm2708.dtsi    bcm2709.dtsi    bcm2710.dtsi
             bcm2708_common.dtsi

This patch introduces this dependency:

  bcm2708.dtsi    bcm2709.dtsi
          bcm2708-rpi.dtsi
          bcm270x.dtsi
  bcm2835.dtsi    bcm2836.dtsi
          bcm283x.dtsi

And:
          bcm2710.dtsi
          bcm2708-rpi.dtsi
          bcm270x.dtsi
          bcm283x.dtsi

bcm270x.dtsi contains the downstream bcm283x.dtsi diff.
bcm2708-rpi.dtsi is the downstream version of bcm2835-rpi.dtsi.

Other changes:
- The led node has moved from /soc/leds to /leds. This is not a problem
  since the label is used to reference it.
- The clk_osc reg property changes from 6 to 3.
- The gpu nodes has their interrupt property set in the base file.
- the clocks label does not point to the /clocks node anymore, but
  points to the cprman node. This is not a problem since the overlays
  that use the clock node refer to it directly: target-path = "/clocks";
- some nodes now have 2 labels since mainline and downstream differs in
  this respect: cprman/clocks, spi0/spi, gpu/vc4.
- some nodes doesn't have an explicit status = "okay" since they're not
  disabled in the base file: watchdog and random.
- gpiomem doesn't need an explicit status = "okay".
- bcm2708-rpi-cm.dts got the hpd-gpios property from bcm2708_common.dtsi,
  it's now set directly in that file.
- bcm2709-rpi-2-b.dts has the timer node moved from /soc/timer to /timer.
- Removed clock-frequency property on the bcm{2709,2710}.dtsi timer nodes.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
BCM270X_DT: Use raspberrypi-power to turn on USB power

Use the raspberrypi-power driver to turn on USB power.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
BCM270X_DT: Add a .dtbo target, use for overlays

Change the filenames and extensions to keep the pre-DDT style of
overlay (<name>-overlay.dtb) distinct from new ones that use a
different style of local fixups (<name>.dtbo), and to match other
platforms.

The RPi firmware uses the DDTK trailer atom to choose which type of
overlay to use for each kernel.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
BCM270X_DT: Don't generate "linux,phandle" props

The EPAPR standard says to use "phandle" properties to store phandles,
rather than the deprecated "linux,phandle" version. By default, dtc
generates both, but adding "-H epapr" causes it to only generate
"phandle"s, saving some space and clutter.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
BCM270X_DT: Add overlay for enc28j60 on SPI2

Works on SPI2 for compute module

BCM270X_DT: Add midi-uart0 overlay

MIDI requires 31.25kbaud, a baudrate unsupported by Linux. The
midi-uart0 overlay configures uart0 (ttyAMA0) to use a fake clock
so that requesting 38.4kbaud actually gets 31.25kbaud.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
BCM270X_DT: Add i2c-sensor overlay

The i2c-sensor overlay is a container for various pressure and
temperature sensors, currently bmp085 and bmp280. The standalone
bmp085_i2c-sensor overlay is now deprecated.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
BCM270X_DT: overlays/*-overlay.dtb -> overlays/*.dtbo (#1752)

We now create overlays as .dtbo files.

build: support for .dtbo files for dtb overlays

Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb.
Patch the kernel, which has faulty rules to generate .dtbo the way yocto does

Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
BCM270X: Drop position requirement for CMA in VC4 overlay.

No longer necessary since 2aefcd576195a739a7a256099571c9c4a401005f,
and will probably let peeople that want to choose a larger CMA
allocation (particularly on pi0/1).

Signed-off-by: Eric Anholt <eric@anholt.net>
BCM270X_DT: RPi Device Tree tidy

Use the upstream sdhost node, add thermal-zones, and factor out some
common elements.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
kbuild: Silence unhelpful DTC warnings

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoscripts: Add mkknlimg and knlinfo scripts from tools repo
Phil Elwell [Mon, 11 May 2015 08:00:42 +0000 (09:00 +0100)]
scripts: Add mkknlimg and knlinfo scripts from tools repo

The Raspberry Pi firmware looks for a trailer on the kernel image to
determine whether it was compiled with Device Tree support enabled.
If the firmware finds a kernel without this trailer, or which has a
trailer indicating that it isn't DT-capable, it disables DT support
and reverts to using ATAGs.

The mkknlimg utility adds that trailer, having first analysed the
image to look for signs of DT support and the kernel version string.

knlinfo displays the contents of the trailer in the given kernel image.

scripts/mkknlimg: Add support for ARCH_BCM2835

Add a new trailer field indicating whether this is an ARCH_BCM2835
build, as opposed to MACH_BCM2708/9. If the loader finds this flag
is set it changes the default base dtb file name from bcm270x...
to bcm283y...

Also update knlinfo to show the status of the field.

scripts/mkknlimg: Improve ARCH_BCM2835 detection

The board support code contains sufficient strings to be able to
distinguish 2708 vs. 2835 builds, so remove the check for
bcm2835-pm-wdt which could exist in either.

Also, since the canned configuration is no longer built in (it's
a module), remove the config string checking.

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

scripts: Multi-platform support for mkknlimg and knlinfo

The firmware uses tags in the kernel trailer to choose which dtb file
to load. Current firmware loads bcm2835-*.dtb if the '283x' tag is true,
otherwise it loads bcm270*.dtb. This scheme breaks if an image supports
multiple platforms.

This patch adds '270X' and '283X' tags to indicate support for RPi and
upstream platforms, respectively. '283x' (note lower case 'x') is left
for old firmware, and is only set if the image only supports upstream
builds.

scripts/mkknlimg: Append a trailer for all input

Now that the firmware assumes an unsigned kernel is DT-capable, it is
helpful to be able to mark a kernel as being non-DT-capable.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
scripts/knlinfo: Decode DDTK atom

Show the DDTK atom as being a boolean.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
mkknlimg: Retain downstream-kernel detection

With the death of ARCH_BCM2708 and ARCH_BCM2709, a new way is needed to
determine if this is a "downstream" build that wants the firmware to
load a bcm27xx .dtb. The vc_cma driver is used downstream but not
upstream, making vc_cma_init a suitable predicate symbol.

mkknlimg: Find some more downstream-only strings

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
scripts: Update mkknlimg, just in case

With the removal of the vc_cma driver, mkknlimg lost an indication that
the user had built a downstream kernel. Update the script, adding a few
more key strings, in case it is still being used.

Note that mkknlimg is now deprecated, except to tag kernels as upstream
(283x), and thus requiring upstream DTBs.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>