platform/kernel/linux-rpi.git
5 years agomedia: bcm2835-unicam: Add support for enum framesizes and frameintervals
Dave Stevenson [Tue, 5 Mar 2019 15:43:27 +0000 (15:43 +0000)]
media: bcm2835-unicam: Add support for enum framesizes and frameintervals

vidioc_enum_framesizes and vidioc_enum_frameintervals weren't implemented,
therefore clients couldn't enumerate the supported resolutions.

Implement them by forwarding on to the sensor driver.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agodefconfigs: disable memory and IO cgroups (#2908)
P33M [Tue, 26 Mar 2019 09:48:25 +0000 (09:48 +0000)]
defconfigs: disable memory and IO cgroups (#2908)

Due to an upstream bug, memory is leaked in the inode cache when cgroups
are enabled. Disable as this is causing crashes.

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

5 years agooverlays: Add max17040 support to i2c-sensor
Phil Elwell [Mon, 25 Mar 2019 18:03:48 +0000 (18:03 +0000)]
overlays: Add max17040 support to i2c-sensor

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoconfigs: Add CONFIG_BATTERY_MAX17040
Phil Elwell [Mon, 25 Mar 2019 17:54:05 +0000 (17:54 +0000)]
configs: Add CONFIG_BATTERY_MAX17040

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agobcm2835-mmc: Deduplicate reset of driver data on remove
Lukas Wunner [Sat, 19 Jan 2019 07:42:40 +0000 (08:42 +0100)]
bcm2835-mmc: Deduplicate reset of driver data on remove

The BCM2835 MMC host driver sets the device's driver data pointer to
NULL on ->remove() even though the driver core subsequently does the
same in __device_release_driver().  Drop the duplicate assignment.

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Cc: Frank Pavlic <f.pavlic@kunbus.de>
5 years agobcm2835-mmc: Handle mmc_add_host() errors
Lukas Wunner [Tue, 22 Jan 2019 11:29:45 +0000 (12:29 +0100)]
bcm2835-mmc: Handle mmc_add_host() errors

The BCM2835 MMC host driver calls mmc_add_host() but doesn't check its
return value.  Errors occurring in that function are therefore not
handled.  Fix it.

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Cc: Frank Pavlic <f.pavlic@kunbus.de>
5 years agobcm2835-mmc: Fix duplicate free_irq() on remove
Lukas Wunner [Sat, 19 Jan 2019 08:00:26 +0000 (09:00 +0100)]
bcm2835-mmc: Fix duplicate free_irq() on remove

The BCM2835 MMC host driver requests its interrupt as a device-managed
resource, so the interrupt is automatically freed after the driver is
unbound.

However on driver unbind, bcm2835_mmc_remove() frees the interrupt
explicitly to avoid invocation of the interrupt handler after driver
structures have been torn down.

The interrupt is thus freed twice, leading to a WARN splat in
__free_irq().  Fix by not requesting the interrupt as a device-managed
resource.

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Cc: Frank Pavlic <f.pavlic@kunbus.de>
5 years agobcm2835-mmc: Fix struct mmc_host leak on probe
Lukas Wunner [Sat, 19 Jan 2019 07:06:48 +0000 (08:06 +0100)]
bcm2835-mmc: Fix struct mmc_host leak on probe

The BCM2835 MMC host driver requests the bus address of the host's
register map on probe.  If that fails, the driver leaks the struct
mmc_host allocated earlier.

Fix it.

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Cc: Frank Pavlic <f.pavlic@kunbus.de>
5 years agobcm2835-mmc: Fix DMA channel leak
Lukas Wunner [Wed, 16 Jan 2019 11:22:32 +0000 (12:22 +0100)]
bcm2835-mmc: Fix DMA channel leak

The BCM2835 MMC host driver requests a DMA channel on probe but neglects
to release the channel in the probe error path and on driver unbind.

I'm seeing this happen on every boot of the Compute Module 3: On first
driver probe, DMA channel 2 is allocated and then leaked with a "could
not get clk, deferring probe" message. On second driver probe, channel 4
is allocated.

Fix it.

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Cc: Frank Pavlic <f.pavlic@kunbus.de>
5 years agoconfigs: Re-enable CONFIG_NETFILTER_XT_MATCH_SOCKET
Phil Elwell [Sun, 24 Mar 2019 20:54:25 +0000 (20:54 +0000)]
configs: Re-enable CONFIG_NETFILTER_XT_MATCH_SOCKET

A Kconfig change in 4.10 caused the xt_socket module to no-longer be
included in Raspbian builds. Fix the defconfigs to re-enable it.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agooverlays: Fix multiple-instantiation of sc16is7xx*
Phil Elwell [Fri, 22 Mar 2019 16:44:47 +0000 (16:44 +0000)]
overlays: Fix multiple-instantiation of sc16is7xx*

The registration of the fixed clocks uses the node name as the clock
name, causing a clash if two clock nodes have the same name, regardless
of the path to the node. Fix the issue by overwriting the clock node
names using the value of the "addr" parameter, providing a crude
disambiguation. (A bit of string pasting to form "sc16is752_clk_<addr>"
would have been nice, but that is outside the abilities of the overlay
parameter mechanism.)

Also give the sc16is750-i2c overlay the xtal parameter for symmetry.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agooverlays: sdio: Added 4-bit support on GPIOs 34-39. (#2903)
Adrien RICCIARDI [Fri, 22 Mar 2019 10:35:30 +0000 (11:35 +0100)]
overlays: sdio: Added 4-bit support on GPIOs 34-39. (#2903)

5 years agobcm2835-sdhost: Allow for sg entries that cross pages
Phil Elwell [Wed, 13 Mar 2019 14:19:11 +0000 (14:19 +0000)]
bcm2835-sdhost: Allow for sg entries that cross pages

The dma_complete handling code calculates a virtual address for a page
then adds an offset, but if the offset is more than a page and HIGHMEM
is in use then the summed address could be in an unmapped (or just
incorrect) page.

The upstream SDHOST driver allows for this possibility - copy the code
that does so.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoconfigs: Enable MT76 USB wifi
Stefan Wahren [Thu, 7 Mar 2019 18:27:05 +0000 (19:27 +0100)]
configs: Enable MT76 USB wifi

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
5 years agostaging: bcm2835_codec: Clean up logging on unloading the driver
Dave Stevenson [Fri, 8 Mar 2019 11:26:00 +0000 (11:26 +0000)]
staging: bcm2835_codec: Clean up logging on unloading the driver

The log line was missing a closing \n, so wasn't added to the
log immediately.
Adds the function of the V4L2 device that is being unregistered
too.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: vc-sm-cma: Ensure mutex and idr are destroyed
Dave Stevenson [Fri, 8 Mar 2019 11:11:46 +0000 (11:11 +0000)]
staging: vc-sm-cma: Ensure mutex and idr are destroyed

map_lock and kernelid_map are created in probe, but not released
in release should the vcsm service not connect (eg running the
cutdown firmware).

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: vc-sm-cma: Don't fail if debugfs calls fail.
Dave Stevenson [Fri, 8 Mar 2019 11:09:49 +0000 (11:09 +0000)]
staging: vc-sm-cma: Don't fail if debugfs calls fail.

Return codes from debugfs calls should never alter the
flow of the main code.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: vc-sm-cma: Use devm_ allocs for sm_state.
Dave Stevenson [Fri, 8 Mar 2019 11:06:41 +0000 (11:06 +0000)]
staging: vc-sm-cma: Use devm_ allocs for sm_state.

Use managed allocations for sm_state, removing reliance on
manual management.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: vc-sm-cma: Remove the debugfs directory on remove
Dave Stevenson [Fri, 8 Mar 2019 10:49:17 +0000 (10:49 +0000)]
staging: vc-sm-cma: Remove the debugfs directory on remove

Without removing that, reloading the driver fails.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: bcm2835-codec: NULL component handle on queue_setup failure
Dave Stevenson [Tue, 19 Mar 2019 17:55:09 +0000 (17:55 +0000)]
staging: bcm2835-codec: NULL component handle on queue_setup failure

queue_setup tries creating the relevant MMAL component and configures
the input and output ports as we're expecting to start streaming.
If the port configuration failed then it destroyed the component,
but failed to clear the component handle, therefore release tried
destroying the component again.
Adds some logging should the port config fail as well.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agovcsm: Reduce scope of local functions
Kieran Bingham [Mon, 18 Mar 2019 17:17:40 +0000 (17:17 +0000)]
vcsm: Reduce scope of local functions

The functions:

  vc_vchi_sm_send_msg
  vc_sm_ioctl_alloc
  vc_sm_ioctl_alloc_share
  vc_sm_ioctl_import_dmabuf

Are declared without a prototype. They are not used outside of this
module, thus - convert them to static functions.

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
5 years agovcsm: Remove set but unused variable
Kieran Bingham [Mon, 18 Mar 2019 17:16:41 +0000 (17:16 +0000)]
vcsm: Remove set but unused variable

The 'success' variable is set by the call to vchi_service_close() but never checked.
Remove it, keeping the call in place.

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
5 years agovcsm: Fix makefile include on out-of-tree builds
Kieran Bingham [Mon, 18 Mar 2019 17:14:51 +0000 (17:14 +0000)]
vcsm: Fix makefile include on out-of-tree builds

The vc_sm module tries to include the 'fs' directory from the
$(srctree). $(srctree) is already provided by the build system, and
causes the include path to be duplicated.

With -Werror this fails to compile.

Remove the unnecessary variable.

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
5 years agostaging: vc_sm_cma: Remove erroneous misc_deregister
Dave Stevenson [Fri, 8 Mar 2019 10:38:59 +0000 (10:38 +0000)]
staging: vc_sm_cma: Remove erroneous misc_deregister

Code from the misc /dev node was still present in
bcm2835_vc_sm_cma_remove, which caused a NULL deref.
Remove it.

See #2885.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agovideo: bcm2708_fb: Try allocating on the ARM and passing to VPU
Dave Stevenson [Wed, 27 Feb 2019 17:30:33 +0000 (17:30 +0000)]
video: bcm2708_fb: Try allocating on the ARM and passing to VPU

Currently the VPU allocates the contiguous buffer for the
framebuffer.
Try an alternate path first where we use dma_alloc_coherent
and pass the buffer to the VPU. Should the VPU firmware not
support that path, then free the buffer and revert to the
old behaviour of using the VPU allocation.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agolan78xx: EEE support is now a PHY property
Phil Elwell [Tue, 5 Mar 2019 09:51:22 +0000 (09:51 +0000)]
lan78xx: EEE support is now a PHY property

Now that EEE support is a property of the PHY, use the PHY's DT node
when querying the EEE-related properties.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoAdded mute stream func
Jaikumar [Thu, 7 Jun 2018 15:52:45 +0000 (21:22 +0530)]
Added mute stream func

Signed-off-by: Jaikumar <jaikumar@cem-solutions.net>
5 years agoconfig: Add CONFIG_FB_TFT_SH1106=m
Phil Elwell [Wed, 27 Feb 2019 20:08:48 +0000 (20:08 +0000)]
config: Add CONFIG_FB_TFT_SH1106=m

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoFix for Pisound kernel module in Real Time kernel configuration.
Giedrius [Wed, 27 Feb 2019 14:27:28 +0000 (14:27 +0000)]
Fix for Pisound kernel module in Real Time kernel configuration.

When handler of data_available interrupt is fired, queue_work ends up
getting called and it can block on a spin lock which is not allowed in
interrupt context. The fix was to run the handler from a thread context
instead.

5 years agodrm/vc4: Don't wait for vblank on fkms cursor updates.
Eric Anholt [Mon, 5 Feb 2018 18:53:18 +0000 (18:53 +0000)]
drm/vc4: Don't wait for vblank on fkms cursor updates.

We don't use the same async update path between fkms and normal kms,
and the normal kms workaround ended up making us wait.  This became a
larger problem in rpi-4.14.y, as the USB HID update rate throttling
got (accidentally?) dropped.

Signed-off-by: Eric Anholt <eric@anholt.net>
5 years agostaging: bcm2835_codec: Include timing info in SPS headers
Dave Stevenson [Mon, 18 Feb 2019 15:56:42 +0000 (15:56 +0000)]
staging: bcm2835_codec: Include timing info in SPS headers

Inserting timing information into the VUI block of the SPS is
optional with the VPU encoder.
GStreamer appears to require them when using V4L2 M2M, therefore
set the option to enable them from the encoder.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: mmal-vchiq: Update mmal_parameters.h with recently defined params
Dave Stevenson [Mon, 18 Feb 2019 15:52:29 +0000 (15:52 +0000)]
staging: mmal-vchiq: Update mmal_parameters.h with recently defined params

mmal_parameters.h hasn't been updated to reflect additions made
over the last few years. Update it to reflect the currently
supported parameters.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: bcm2835_codec: Fix handling of VB2_MEMORY_DMABUF buffers
Dave Stevenson [Fri, 15 Feb 2019 11:38:45 +0000 (11:38 +0000)]
staging: bcm2835_codec: Fix handling of VB2_MEMORY_DMABUF buffers

If the queue is configured as VB2_MEMORY_DMABUF then vb2_core_expbuf
fails as it ensures the queue is defined as VB2_MEMORY_MMAP.

Correct the handling so that we unmap the buffer from vcsm and the
VPU on cleanup, and then correctly get the dma buf of the new buffer.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: bcm2835_codec: Add an option for ignoring Bayer formats.
Dave Stevenson [Fri, 15 Feb 2019 11:36:14 +0000 (11:36 +0000)]
staging: bcm2835_codec: Add an option for ignoring Bayer formats.

This is a workaround for GStreamer currently not identifying Bayer
as a raw format, therefore any device that supports it does not
match the criteria for v4l2convert.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: bcm2835_codec: Add support for the ISP as an M2M device
Dave Stevenson [Wed, 13 Feb 2019 14:07:52 +0000 (14:07 +0000)]
staging: bcm2835_codec: Add support for the ISP as an M2M device

The MMAL ISP component can also use this same V4L2 wrapper to
provide a M2M format conversion and resizer.
Instantiate 3 V4L2 devices now, one for each of decode, encode,
and isp.
The ISP currently doesn't expose any controls via V4L2, but this
can be extended in the future.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: bcm2835_codec: Query supported formats from the component
Dave Stevenson [Wed, 13 Feb 2019 13:44:00 +0000 (13:44 +0000)]
staging: bcm2835_codec: Query supported formats from the component

The driver was previously working with hard coded tables of
which video formats were supported by each component.
The components advertise this information via a MMAL parameter,
so retrieve the information from there during probe, and store
in the state structure for that device.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: mmal-vchiq: If the VPU returns an error, don't negate it
Dave Stevenson [Wed, 13 Feb 2019 12:51:03 +0000 (12:51 +0000)]
staging: mmal-vchiq: If the VPU returns an error, don't negate it

There is an enum for the errors that the VPU can return.
port_parameter_get was negating that value, but also using -EINVAL
from the Linux error codes.
Pass the VPU error code as positive values. Should the function
need to pass a Linux failure, then return that as negative.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: mmal-vchiq: Always return the param size from param_get
Dave Stevenson [Wed, 13 Feb 2019 12:36:56 +0000 (12:36 +0000)]
staging: mmal-vchiq: Always return the param size from param_get

mmal-vchiq is a reimplementation of the userland library for MMAL.
When getting a parameter, the client provides the storage and
the size of the storage. The VPU then returns the size of the
parameter that it wished to return, and as much as possible of
that parameter is returned to the client.

The implementation previously only returned the size provided
by the VPU should it exceed the buffer size. So for parameters
such as the supported encodings list the client had no idea
how much of the provided storage had been populated.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: mmal_vchiq: Add in the Bayer encoding formats
Dave Stevenson [Wed, 13 Feb 2019 12:33:29 +0000 (12:33 +0000)]
staging: mmal_vchiq: Add in the Bayer encoding formats

The list of formats was copied before Bayer support was added.
The ISP supports Bayer and is being supported by the bcm2835_codec
driver, so add in the encodings for them.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agodrm: vc4: Programming the CTM is conditional on running full KMS
Dave Stevenson [Tue, 19 Feb 2019 15:18:25 +0000 (15:18 +0000)]
drm: vc4: Programming the CTM is conditional on running full KMS

vc4_ctm_commit writes to HVS registers, so this is only applicable
when in full KMS mode, not in firmware KMS mode. Add this conditional.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agogpu:vc4-fkms: Update driver to not use plane->crtc.
Dave Stevenson [Tue, 19 Feb 2019 15:06:31 +0000 (15:06 +0000)]
gpu:vc4-fkms: Update driver to not use plane->crtc.

Following on from
commit 2f958af7fc248 ("drm/vc4: Stop updating plane->fb/crtc")
do the same in the firmwarekms driver and look at plane_state->crtc
instead.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agoRevert "brcmfmac: Mute expected startup 'errors'"
Phil Elwell [Mon, 18 Feb 2019 15:43:30 +0000 (15:43 +0000)]
Revert "brcmfmac: Mute expected startup 'errors'"

This reverts commit 34eba9138ccf8d84552ab9dae37d8f348640e663.

Upstream patch 26e537884a ("brcmfmac: Do not complain about country code "00")
fixes the same issue, so drop this downstream patch.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoconfigs: Add CONFIG_LEDS_PCA963X=m
Zahari Petkov [Fri, 8 Feb 2019 11:33:47 +0000 (13:33 +0200)]
configs: Add CONFIG_LEDS_PCA963X=m

Enable support for PCA963x I2C chip.

Needed for the balenaFin v1.1.0 carrier board for the
Raspberry Pi Compute Module 3/3+ Lite.

Signed-off-by: Zahari Petkov <zahari@balena.io>
5 years agooverlays: balenaFin v1.1.0 carrier board update
Zahari Petkov [Fri, 8 Feb 2019 11:03:38 +0000 (13:03 +0200)]
overlays: balenaFin v1.1.0 carrier board update

A backward compatible update for the balenaFin carrier board for the
Raspberry Pi Compute Module 3/3+ Lite.

The updated overlay includes:
  * support for the newly introduced RGB LEDs
  * i2c-gpio and SDIO improvements
  * DT based Marvell 88W8887 configuration

Signed-off-by: Zahari Petkov <zahari@balena.io>
5 years agoconfigs: Enable the AD193x codecs
Phil Elwell [Thu, 7 Feb 2019 18:16:25 +0000 (18:16 +0000)]
configs: Enable the AD193x codecs

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoconfig: Add IPVLAN module to bcmrpi3_defconfig
Dave Stevenson [Tue, 5 Feb 2019 12:31:23 +0000 (12:31 +0000)]
config: Add IPVLAN module to bcmrpi3_defconfig

It's built for the 32bit kernels, but not for the 64bit ones.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agoconfigs: Add V4L2 codec driver to bcmrpi3_defconfig
Dave Stevenson [Mon, 4 Feb 2019 13:42:51 +0000 (13:42 +0000)]
configs: Add V4L2 codec driver to bcmrpi3_defconfig

As this is now fixed to work with 64bit kernels, add it to the
defconfig.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agoconfigs: Add VIDEO_BCM2835 to bcmrpi3_defconfig
Dave Stevenson [Mon, 4 Feb 2019 12:45:25 +0000 (12:45 +0000)]
configs: Add VIDEO_BCM2835 to bcmrpi3_defconfig

This is now shown to work with 64 bit kernels, so add it to
the defconfig.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agoconfigs: Add Unicam and subdevices to bcmrpi3_defconfig
Dave Stevenson [Mon, 4 Feb 2019 12:35:06 +0000 (12:35 +0000)]
configs: Add Unicam and subdevices to bcmrpi3_defconfig

The bcm2835-unicam, tc358743, adv7180 (for adv7282m) and ov5647
have been tested on a 64bit kernel and shown to work.
Add them to the config.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: vc-sm-cma: Fix up for 64bit builds
Dave Stevenson [Tue, 29 Jan 2019 16:32:57 +0000 (16:32 +0000)]
staging: vc-sm-cma: Fix up for 64bit builds

There were a number of logging lines that were using
inappropriate formatting under 64bit kernels.

The kernel_id field passed to/from the VPU was being
abused for storing the struct vc_sm_buffer *.
This breaks with 64bit kernels, so change to using an IDR.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: vc-sm-cma: Use a void* pointer as the handle within the kernel
Dave Stevenson [Tue, 29 Jan 2019 16:29:00 +0000 (16:29 +0000)]
staging: vc-sm-cma: Use a void* pointer as the handle within the kernel

The driver was using an unsigned int as the handle to the outside world,
and doing a nasty cast to the struct dmabuf when handed it back.
This breaks badly with a 64 bit kernel where the pointer doesn't fit
in an unsigned int.

Switch to using a void* within the kernel. Reality is that it is
a struct dma_buf*, but advertising it as such to other drivers seems
to encourage the use of it as such, and I'm not sure on the implications
of that.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: vc-sm-cma: Correct DMA configuration.
Dave Stevenson [Tue, 29 Jan 2019 16:24:41 +0000 (16:24 +0000)]
staging: vc-sm-cma: Correct DMA configuration.

Now that VCHIQ is setting up the DMA configuration as our
parent device, don't try to configure it during probe.

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

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

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

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agousb: dwc_otg: Use dma allocation for mphi dummy_send buffer
Dave Stevenson [Wed, 30 Jan 2019 17:47:51 +0000 (17:47 +0000)]
usb: dwc_otg: Use dma allocation for mphi dummy_send buffer

The FIQ driver used a kzalloc'ed buffer for dummy_send,
passing a kernel virtual address to the hardware block.
The buffer is only ever used for a dummy read, so it
should be harmless, but there is the chance that it will
cause exceptions.

Use a dma allocation so that we have a genuine bus address,
and read from that.
Free the allocation when done for good measure.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agousb: dwc_otg: Clean up build warnings on 64bit kernels
Dave Stevenson [Fri, 25 Jan 2019 16:03:31 +0000 (16:03 +0000)]
usb: dwc_otg: Clean up build warnings on 64bit kernels

No functional changes. Almost all are changes to logging lines.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agoASoC: pcm512x: Fix a double unlock in pcm512x_digital_mute()
Dan Carpenter [Fri, 21 Dec 2018 09:11:20 +0000 (12:11 +0300)]
ASoC: pcm512x: Fix a double unlock in pcm512x_digital_mute()

[ Upstream commit 28b698b7342c7d5300cfe217cd77ff7d2a55e03d ]

We accidentally call mutex_unlock(&pcm512x->mutex); twice in a row.

I re-wrote the error handling to use "goto unlock;" instead of returning
directly.  Hopefully, it makes the code a little simpler.

Fixes: 3500f1c589e9 ("ASoC: pcm512x: Implement the digital_mute interface")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviwed-by: Dimitris Papavasiliou <dpapavas@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
5 years agoASoC: pcm512x: Implement the digital_mute interface
Dimitris Papavasiliou [Sat, 24 Nov 2018 20:05:42 +0000 (22:05 +0200)]
ASoC: pcm512x: Implement the digital_mute interface

[ Upstream commit 3500f1c589e92e0b6b1f8d31b4084fbde08d49cb ]

Clicks and pops of various volumes can be produced while the device is
opened, closed, put into and taken out of standby, or reconfigured.
Fix this, by implementing the digital_mute interface, so that the
output is muted during such operations.

Signed-off-by: Dimitris Papavasiliou <dpapavas@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
5 years agobcm283x: Set the DISDEBUG flag for SD transfers
Phil Elwell [Fri, 20 Jul 2018 21:08:05 +0000 (22:08 +0100)]
bcm283x: Set the DISDEBUG flag for SD transfers

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agobcm2835-dma: Add support for per-channel flags
Phil Elwell [Fri, 20 Jul 2018 21:03:41 +0000 (22:03 +0100)]
bcm2835-dma: Add support for per-channel flags

Add the ability to interpret the high bits of the dreq specifier as
flags to be included in the DMA_CS register. The motivation for this
change is the ability to set the DISDEBUG flag for SD card transfers
to avoid corruption when using the VPU debugger.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agovideo: bcm2708_fb: Clean up coding style issues
Dave Stevenson [Fri, 25 Jan 2019 17:32:54 +0000 (17:32 +0000)]
video: bcm2708_fb: Clean up coding style issues

Now checkpatch clean except for 2 long lines, missing
SPDX header, and no DT documentation.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agovideo: bcm2708_fb: Fix warnings on 64 bit builds
Dave Stevenson [Fri, 25 Jan 2019 17:11:39 +0000 (17:11 +0000)]
video: bcm2708_fb: Fix warnings on 64 bit builds

Fix up logging lines where the wrong format specifiers were
being used.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agovideo: bcm2708_fb: Add compat_ioctl support.
Dave Stevenson [Fri, 25 Jan 2019 17:12:54 +0000 (17:12 +0000)]
video: bcm2708_fb: Add compat_ioctl support.

When using a 64 bit kernel with 32 bit userspace we need
compat ioctl handling for FBIODMACOPY as one of the
parameters is a pointer.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: bcm2835-codec: Fix potentially uninitialised vars
Dave Stevenson [Thu, 24 Jan 2019 16:36:19 +0000 (16:36 +0000)]
staging: bcm2835-codec: Fix potentially uninitialised vars

src_m2m_buf and dst_m2m_buf were printed in log messages
when there are code paths that don't initialise them.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: bcm2835-codec: variable vb2 may be used uninitialised
Dave Stevenson [Thu, 24 Jan 2019 16:40:01 +0000 (16:40 +0000)]
staging: bcm2835-codec: variable vb2 may be used uninitialised

In op_buffer_cb, the failure path checked whether there was
an associated vb2 buffer before the variable vb2 had been
assigned.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: bcm2835-camera: Correct ctrl min/max/step/def to 64bit
Dave Stevenson [Thu, 24 Jan 2019 16:20:38 +0000 (16:20 +0000)]
staging: bcm2835-camera: Correct ctrl min/max/step/def to 64bit

The V4L2 control API was expanded to take 64 bit values in commit
0ba2aeb6dab (Apr 16 2014), but as this driver wasn't in the mainline
kernel at that point this was overlooked.

Update to use 64 bit values. This also fixes a couple of warnings
in 64 bit builds.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agoaudioinjector-octo: revert to dummy supplies
Matt Flax [Tue, 29 Jan 2019 03:56:03 +0000 (14:56 +1100)]
audioinjector-octo: revert to dummy supplies

The Audio Injector Octo has had a lot of reports of not coming up on power cycles. By reverting to dummy supplies, the card comes up reliably.

5 years agomedia:bcm2835-unicam: Power on subdev on open/release, not streaming
Dave Stevenson [Tue, 29 Jan 2019 15:56:10 +0000 (15:56 +0000)]
media:bcm2835-unicam: Power on subdev on open/release, not streaming

The driver was powering on the source subdevice as part of STREAMON,
and powering it off in STREAMOFF. This isn't so great if there is a
significant amount of setup required for your device.

Copy the approach taken in the Atmel ISC driver where s_power(1) is called
on first file handle open, and s_power(0) is called on the last release.

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

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agomedia: ov5647: Use gpiod_set_value_cansleep
Dave Stevenson [Tue, 18 Sep 2018 10:08:51 +0000 (11:08 +0100)]
media: ov5647: Use gpiod_set_value_cansleep

All calls to the gpio library are in contexts that can sleep,
therefore there is no issue with having those GPIOs controlled
by controllers which require sleeping (eg I2C GPIO expanders).

Switch to using gpiod_set_value_cansleep instead of gpiod_set_value
to avoid triggering the warning in gpiolib should the GPIO
controller need to sleep.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agodtoverlays: Correct DT handling camera GPIOs
Dave Stevenson [Tue, 18 Sep 2018 09:47:38 +0000 (10:47 +0100)]
dtoverlays: Correct DT handling camera GPIOs

The firmware has support for updating overrides with the correct
GPIO settings for the camera GPIOs, but the wrong device tree
setup ended up being merged.
Correct the DT configuration so that the firmware does set it
up correctly.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agoinput: rpi-ft5406: Clear build warning on 64 bit builds.
Dave Stevenson [Mon, 28 Jan 2019 14:42:34 +0000 (14:42 +0000)]
input: rpi-ft5406: Clear build warning on 64 bit builds.

Resolve 64 bit build warning over using %x with a dma_addr_t.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agogpu: vc4_firmware_kms: Fix up 64 bit compile warnings.
Dave Stevenson [Mon, 28 Jan 2019 14:40:16 +0000 (14:40 +0000)]
gpu: vc4_firmware_kms: Fix up 64 bit compile warnings.

Resolve two build warnings with regard using incorrectly
sized parameters in logging messages on 64 bit builds.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agomfd: Add rpi_sense_core of compatible string
Serge Schneider [Tue, 29 Jan 2019 12:05:49 +0000 (12:05 +0000)]
mfd: Add rpi_sense_core of compatible string

5 years agoclk: clk-bcm2835: Use %zd when printing size_t
Dave Stevenson [Thu, 24 Jan 2019 15:09:28 +0000 (15:09 +0000)]
clk: clk-bcm2835: Use %zd when printing size_t

The debug text for how many clocks have been registered
uses "%d" with a size_t. Correct it to "%zd".

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agochar: vc_mem: Fix all coding style issues.
Dave Stevenson [Wed, 23 Jan 2019 18:37:29 +0000 (18:37 +0000)]
char: vc_mem: Fix all coding style issues.

Cleans up all checkpatch errors in vc_mem.c and vc_mem.h
No functional change to the code.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agochar: vc_mem: Fix up compat ioctls for 64bit kernel
Dave Stevenson [Wed, 23 Jan 2019 18:25:50 +0000 (18:25 +0000)]
char: vc_mem: Fix up compat ioctls for 64bit kernel

compat_ioctl wasn't defined, so 32bit user/64bit kernel
always failed.
VC_MEM_IOC_MEM_PHYS_ADDR was defined with parameter size
unsigned long, so the ioctl cmd changes between sizes.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: bcm2835-camera: Set the field value within each buffer
Dave Stevenson [Tue, 15 Jan 2019 16:32:33 +0000 (16:32 +0000)]
staging: bcm2835-camera: Set the field value within each buffer

Fixes a v4l2-compliance failure
v4l2-test-buffers.cpp(415): g_field() == V4L2_FIELD_ANY

The driver only ever produces progresive frames, so field should
always be set to V4L2_FIELD_NONE.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: bcm2835-camera: Add sanity checks for queue_setup/CREATE_BUFS
Dave Stevenson [Tue, 15 Jan 2019 15:35:24 +0000 (15:35 +0000)]
staging: bcm2835-camera: Add sanity checks for queue_setup/CREATE_BUFS

Fixes a v4l2-compliance failure when passed a buffer that is
too small.
queue_setup wasn't handling the case where !(*nplanes), as
used from CREATE_BUFS and requiring the driver to sanity
check the provided buffer parameters. It was assuming that
it was always being used in the REQBUFS case where it provides
the buffer properties.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agostaging: mmal-vchiq: Fix client_component for 64 bit kernel
Dave Stevenson [Tue, 22 Jan 2019 12:04:09 +0000 (12:04 +0000)]
staging: mmal-vchiq: Fix client_component for 64 bit kernel

The MMAL client_component field is used with the event
mechanism to allow the client to identify the component for
which the event is generated.
The field is only 32bits in size, therefore we can't use a
pointer to the component in a 64 bit kernel.

Component handles are already held in an array per VCHI
instance, so use the array index as the client_component handle
to avoid having to create a new IDR for this purpose.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agochar: vcio: Fail probe if rpi_firmware is not found.
Dave Stevenson [Thu, 24 Jan 2019 14:03:28 +0000 (14:03 +0000)]
char: vcio: Fail probe if rpi_firmware is not found.

Device Tree is now the only supported config mechanism, therefore
uncomment the block of code that fails the probe if the
firmware node can't be found.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agochar: vcio: Add compat ioctl handling
Dave Stevenson [Thu, 24 Jan 2019 13:56:30 +0000 (13:56 +0000)]
char: vcio: Add compat ioctl handling

There was no compat ioctl handler, so 32 bit userspace on a
64 bit kernel failed as IOCTL_MBOX_PROPERTY used the size
of char*.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
5 years agooverlays: Add mcp342x overlay
Phil Elwell [Mon, 21 Jan 2019 12:23:55 +0000 (12:23 +0000)]
overlays: Add mcp342x overlay

Support the MCP342x family of ADCs from Microchip.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agooverlays: mcp23017: Support the MCP23008
Phil Elwell [Mon, 21 Jan 2019 12:19:57 +0000 (12:19 +0000)]
overlays: mcp23017: Support the MCP23008

Add an 'mcp23008' parameter to enable support for the MCP23008 device.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agooverlays: Add ssd1306 overlay for OLED display
Phil Elwell [Mon, 21 Jan 2019 21:17:27 +0000 (21:17 +0000)]
overlays: Add ssd1306 overlay for OLED display

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

Signed-off-by: mincepi <mincepi@gmail.com>
5 years agousb: dwc2: Fix disable all EP's on disconnect
Minas Harutyunyan [Mon, 10 Dec 2018 14:09:32 +0000 (18:09 +0400)]
usb: dwc2: Fix disable all EP's on disconnect

commit 4fe4f9fecc36956fd53c8edf96dd0c691ef98ff9 upstream.

Disabling all EP's allow to reset EP's to initial state.
Introduced new function dwc2_hsotg_ep_disable_lock() which
before calling dwc2_hsotg_ep_disable() function acquire
hsotg->lock and release on exiting.
From dwc2_hsotg_ep_disable() function removed acquiring
hsotg->lock.
In dwc2_hsotg_core_init_disconnected() function when USB
reset interrupt asserted disabling all ep’s by
dwc2_hsotg_ep_disable() function.
This updates eliminating sparse imbalance warnings.

Reverted changes in dwc2_hostg_disconnect() function.
Introduced new function dwc2_hsotg_ep_disable_lock().
Changed dwc2_hsotg_ep_ops. Now disable point to
dwc2_hsotg_ep_disable_lock() function.
In functions dwc2_hsotg_udc_stop() and dwc2_hsotg_suspend()
dwc2_hsotg_ep_disable() function replaced by
dwc2_hsotg_ep_disable_lock() function.
In dwc2_hsotg_ep_disable() function removed acquiring
of hsotg->lock.

Fixes: dccf1bad4be7 ("usb: dwc2: Disable all EP's on disconnect")
Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
5 years agousb: dwc2: Disable all EP's on disconnect
Minas Harutyunyan [Wed, 19 Sep 2018 14:13:52 +0000 (18:13 +0400)]
usb: dwc2: Disable all EP's on disconnect

commit dccf1bad4be7eaa096c1f3697bd37883f9a08ecb upstream.

Disabling all EP's allow to reset EP's to initial state.
On disconnect disable all EP's instead of just killing
all requests. Because of some platform didn't catch
disconnect event, same stuff added to
dwc2_hsotg_core_init_disconnected() function when USB
reset detected on the bus.

Changed from version 1:
Changed lock acquire flow in dwc2_hsotg_ep_disable()
function.

Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
5 years agopwm: Send a uevent on the pwmchip device upon channel sysfs (un)export
Fabrice Gasnier [Mon, 1 Oct 2018 13:23:57 +0000 (15:23 +0200)]
pwm: Send a uevent on the pwmchip device upon channel sysfs (un)export

commit 552c02e3e7cfe2744b59de285aaea70021ae95c9 upstream.

This patch sends a uevent (KOBJ_CHANGE) on the pwmchipN device,
everytime a pwmX channel has been exported/unexported via sysfs. This
allows udev to implement rules on such events, like:

SUBSYSTEM=="pwm*", PROGRAM="/bin/sh -c '\
        chown -R root:gpio /sys/class/pwm && chmod -R 770 /sys/class/pwm;\
        chown -R root:gpio
/sys/devices/platform/soc/*.pwm/pwm/pwmchip* && chmod -R 770
/sys/devices/platform/soc/*.pwm/pwm/pwmchip*\
'"

This is a replacement patch for commit 7e5d1fd75c3d ("pwm: Set class for
exported channels in sysfs"), see [1].

basic testing:
$ udevadm monitor --environment &
$ echo 0 > /sys/class/pwm/pwmchip0/export
KERNEL[197.321736] change   /devices/.../pwm/pwmchip0 (pwm)
ACTION=change
DEVPATH=/devices/.../pwm/pwmchip0
EXPORT=pwm0
SEQNUM=2045
SUBSYSTEM=pwm

[1] https://lkml.org/lkml/2018/9/25/713

Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Tested-by: Gottfried Haider <gottfried.haider@gmail.com>
Tested-by: Michal Vokáč <michal.vokac@ysoft.com>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
5 years agoRevert "pwm: Set class for exported channels in sysfs"
Fabrice Gasnier [Mon, 1 Oct 2018 13:23:56 +0000 (15:23 +0200)]
Revert "pwm: Set class for exported channels in sysfs"

commit c289d6625237aa785b484b4e94c23b3b91ea7e60 upstream.

This reverts commit 7e5d1fd75c3dde9fc10c4472b9368089d1b81d00 ("pwm: Set
class for exported channels in sysfs") as it causes regression with
multiple pwm chip[1], when exporting a pwm channel (echo X > export):

- ABI (Documentation/ABI/testing/sysfs-class-pwm) states pwmX should be
  created in /sys/class/pwm/pwmchipN/pwmX
- Reverted patch causes new entry to be also created directly in
  /sys/class/pwm/pwmX
- 1st time, exporting pwmX will create an entry in /sys/class/pwm/pwmX
- class attributes are added under pwmX folder, such as export, unexport
  npwm, symlinks. This is wrong as it belongs to pwmchipN. It may cause
  bad behavior and report wrong values.
- when another export happens on another pwmchip, it can't be created
  (e.g. -EEXIST). This is causing the issue with multiple pwmchip.

Example on stm32 (stm32429i-eval) platform:
$ ls /sys/class/pwm
pwmchip0 pwmchip4

$ cd /sys/class/pwm/pwmchip0/
$ echo 0 > export
$ ls /sys/class/pwm
pwm0 pwmchip0 pwmchip4

$ cd /sys/class/pwm/pwmchip4/
$ echo 0 > export
sysfs: cannot create duplicate filename '/class/pwm/pwm0'
...Exception stack follows...

This is also seen on other platform [2]

[1] https://lkml.org/lkml/2018/9/25/713
[2] https://lkml.org/lkml/2018/9/25/447

Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Tested-by: Gottfried Haider <gottfried.haider@gmail.com>
Tested-by: Michal Vokáč <michal.vokac@ysoft.com>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
5 years agoAdded driver for the HiFiBerry DAC+ ADC (#2694)
HiFiBerry [Mon, 8 Oct 2018 16:10:12 +0000 (18:10 +0200)]
Added driver for the HiFiBerry DAC+ ADC (#2694)

Signed-off-by: Daniel Matuschek <daniel@hifiberry.com>
5 years agoconfigs: Add CONFIG_USB_UAS=m
Phil Elwell [Wed, 16 Jan 2019 21:26:13 +0000 (21:26 +0000)]
configs: Add CONFIG_USB_UAS=m

Enable support for USB-attached-SCSI devicess.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agodwc_otg: fix bug with port_addr assignment for single-TT hubs
P33M [Wed, 16 Jan 2019 10:17:52 +0000 (10:17 +0000)]
dwc_otg: fix bug with port_addr assignment for single-TT hubs

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

The "Hub Port" field in the split transaction packet was always set
to 1 for single-TT hubs. The majority of single-TT hub products
apparently ignore this field and broadcast to all downstream enabled
ports, which masked the issue. A subset of hub devices apparently
need the port number to be exact or split transactions will fail.

5 years agooverlays: sdio: Add enhanced 1-bit support
Phil Elwell [Thu, 10 Jan 2019 15:27:56 +0000 (15:27 +0000)]
overlays: sdio: Add enhanced 1-bit support

"dtoverlay=sdio,bus_width=1,gpios_22_25" is equivalent to the sdio-1bit
overlay, which is now deprecated.

"dtoverlay=sdio,bus_width=1,gpios_34_37" enables 1-bit mode on GPIOs 34-37.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoconfigs: Add CONFIG_USB_TMC=m
Phil Elwell [Mon, 14 Jan 2019 08:50:55 +0000 (08:50 +0000)]
configs: Add CONFIG_USB_TMC=m

Enable the Test & Measurement Class USB driver module.

See: https://github.com/raspberrypi/linux/firmware/issues/929

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoconfigs: Add CONFIG_SND_AUDIOSENSE_PI=m
b-ak [Thu, 3 Jan 2019 18:42:51 +0000 (00:12 +0530)]
configs: Add CONFIG_SND_AUDIOSENSE_PI=m

AudioSense-Pi add on soundcard configuration definitions

Signed-off-by: b-ak <anur.bhargav@gmail.com>
5 years agoBCM270X: Adding device tree support for AudioSense-Pi add-on soundcard
b-ak [Wed, 2 Jan 2019 18:59:14 +0000 (00:29 +0530)]
BCM270X: Adding device tree support for AudioSense-Pi add-on soundcard

Device tree overlay for AudioSense-Pi card.

To enable support for the hardware add the following
line to the RPi /boot/config.txt:

dtoverlay=audiosense-pi

More documentation @ arch/arm/boot/dts/overlays/README

Signed-off-by: b-ak <anur.bhargav@gmail.com>
5 years agoASoC: Add support for AudioSense-Pi add-on soundcard
b-ak [Wed, 2 Jan 2019 18:31:08 +0000 (00:01 +0530)]
ASoC: Add support for AudioSense-Pi add-on soundcard

AudioSense-Pi is a RPi HAT based on a TI's TLV320AIC32x4 stereo codec

This hardware provides multiple audio I/O capabilities to the RPi.
The codec connects to the RPi's SoC through the I2S Bus.

The following devices can be connected through a 3.5mm jack
1. Line-In: Plain old audio in from mobile phones, PCs, etc.,
2. Mic-In: Connect a microphone
3. Line-Out: Connect the output to a speaker
4. Headphones: Connect a Headphone w or w/o microphones

Multiple Inputs:
It supports the following combinations
1. Two stereo Line-Inputs and a microphone
2. One stereo Line-Input and two microphones
3. Two stereo Line-Inputs, a microphone and
one mono line-input (with h/w hack)
4. One stereo Line-Input, two microphones and
one mono line-input (with h/w hack)

Multiple Outputs:
Audio output can be routed to the headphones or
speakers (with additional hardware)

Signed-off-by: b-ak <anur.bhargav@gmail.com>
5 years agolan78xx: Debounce link events to minimize poll storm
Joshua Emele [Thu, 8 Nov 2018 00:07:40 +0000 (16:07 -0800)]
lan78xx: Debounce link events to minimize poll storm

The bInterval is set to 4 (i.e. 8 microframes => 1ms) and the only bit
that the driver pays attention to is "link was reset". If there's a
flapping status bit in that endpoint data, (such as if PHY negotiation
needs a few tries to get a stable link) then polling at a slower rate
would act as a de-bounce.

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

5 years agobcm2835_smi: re-add dereference to fix DMA transfers
Ezekiel Bethel [Wed, 12 Dec 2018 19:11:13 +0000 (19:11 +0000)]
bcm2835_smi: re-add dereference to fix DMA transfers

5 years agodtoverlays: fe-pi-audio: fix sgtl5000 compatible string
Ben Wolsieffer [Sun, 9 Dec 2018 21:46:00 +0000 (16:46 -0500)]
dtoverlays: fe-pi-audio: fix sgtl5000 compatible string

The compatible string was set to "fepi,sgtl5000", which worked for some
reason in 4.14, but does not work in 4.19, presumably due to some
change in the kernel matching logic. The correct string is
"fsl,sgtl5000".

Signed-off-by: Ben Wolsieffer <benwolsieffer@gmail.com>
5 years agosc16is7xx: Fix for "Unexpected interrupt: 8"
Phil Elwell [Fri, 18 May 2018 09:26:59 +0000 (10:26 +0100)]
sc16is7xx: Fix for "Unexpected interrupt: 8"

The SC16IS752 has an Enhanced Feature Register which is aliased at the
same address as the Interrupt Identification Register; accessing it
requires that a magic value is written to the Line Configuration
Register. If an interrupt is raised while the EFR is mapped in then
the ISR won't be able to access the IIR, leading to the "Unexpected
interrupt" error messages.

Avoid the problem by claiming a mutex around accesses to the EFR
register, also claiming the mutex in the interrupt handler work
item (this is equivalent to disabling interrupts to interlock against
a non-threaded interrupt handler).

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
5 years agoarm64: dts: broadcom: Enable fixups for overlays
Phil Elwell [Tue, 15 Jan 2019 09:56:41 +0000 (09:56 +0000)]
arm64: dts: broadcom: Enable fixups for overlays

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

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