Commit Graph

787652 Commits

Author SHA1 Message Date
Dave Stevenson
5d39f7b34a 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>
2019-04-02 12:56:14 +01:00
Dave Stevenson
3d98cc1870 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>
2019-04-02 12:56:14 +01:00
Dave Stevenson
6c5c416954 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>
2019-04-02 12:56:14 +01:00
Dave Stevenson
d678f50842 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>
2019-04-02 12:56:14 +01:00
Dave Stevenson
4d3fbf25ea 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>
2019-04-02 12:56:13 +01:00
Dave Stevenson
79fdb9e72b 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>
2019-04-02 12:56:13 +01:00
Dave Stevenson
3e05d01b85 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>
2019-04-02 12:56:13 +01:00
Dan Carpenter
c3a0ee6d1e ASoC: pcm512x: Fix a double unlock in pcm512x_digital_mute()
[ Upstream commit 28b698b734 ]

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: 3500f1c589 ("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>
2019-04-02 12:56:13 +01:00
Dimitris Papavasiliou
28a0d2d012 ASoC: pcm512x: Implement the digital_mute interface
[ Upstream commit 3500f1c589 ]

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>
2019-04-02 12:56:12 +01:00
Phil Elwell
b82107b032 bcm283x: Set the DISDEBUG flag for SD transfers
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
2019-04-02 12:56:12 +01:00
Phil Elwell
aab6f4b1c2 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>
2019-04-02 12:56:12 +01:00
Dave Stevenson
662669d790 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>
2019-04-02 12:56:12 +01:00
Dave Stevenson
852d66a8ad 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>
2019-04-02 12:56:11 +01:00
Dave Stevenson
19b3c92e42 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>
2019-04-02 12:56:11 +01:00
Dave Stevenson
685e09b7a3 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>
2019-04-02 12:56:11 +01:00
Dave Stevenson
4eaeebbdb4 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>
2019-04-02 12:56:11 +01:00
Dave Stevenson
d044b3ed7e staging: bcm2835-camera: Correct ctrl min/max/step/def to 64bit
The V4L2 control API was expanded to take 64 bit values in commit
0ba2aeb6da (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>
2019-04-02 12:56:10 +01:00
Matt Flax
31ef714023 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.
2019-04-02 12:56:10 +01:00
Dave Stevenson
67028c877e 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>
2019-04-02 12:56:10 +01:00
Dave Stevenson
34355b487f 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>
2019-04-02 12:56:10 +01:00
Dave Stevenson
666663f84a 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>
2019-04-02 12:56:09 +01:00
Dave Stevenson
18566ca8df 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>
2019-04-02 12:56:09 +01:00
Dave Stevenson
74f38f3750 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>
2019-04-02 12:56:09 +01:00
Serge Schneider
122cf251b1 mfd: Add rpi_sense_core of compatible string 2019-04-02 12:56:09 +01:00
Dave Stevenson
7a2aa46029 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>
2019-04-02 12:56:08 +01:00
Dave Stevenson
9694b08238 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>
2019-04-02 12:56:08 +01:00
Dave Stevenson
aaf17eb3d5 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>
2019-04-02 12:56:08 +01:00
Dave Stevenson
b80370b464 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>
2019-04-02 12:56:08 +01:00
Dave Stevenson
d57fa7c12e 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>
2019-04-02 12:56:07 +01:00
Dave Stevenson
9cc8ca0604 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>
2019-04-02 12:56:07 +01:00
Dave Stevenson
7dab6b4c75 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>
2019-04-02 12:56:07 +01:00
Dave Stevenson
8e2f4c4e30 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>
2019-04-02 12:56:07 +01:00
Phil Elwell
05c43d8ace 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>
2019-04-02 12:56:06 +01:00
Phil Elwell
2f33100f1f 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>
2019-04-02 12:56:06 +01:00
Phil Elwell
b9df6f09f3 overlays: Add ssd1306 overlay for OLED display
See: https://github.com/raspberrypi/firmware/issues/1098

Signed-off-by: mincepi <mincepi@gmail.com>
2019-04-02 12:56:06 +01:00
Minas Harutyunyan
ad19113172 usb: dwc2: Fix disable all EP's on disconnect
commit 4fe4f9fecc 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: dccf1bad4b ("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>
2019-04-02 12:56:06 +01:00
Minas Harutyunyan
e29f5a59e5 usb: dwc2: Disable all EP's on disconnect
commit dccf1bad4b 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>
2019-04-02 12:56:05 +01:00
Fabrice Gasnier
2469c51d2e pwm: Send a uevent on the pwmchip device upon channel sysfs (un)export
commit 552c02e3e7 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 7e5d1fd75c ("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>
2019-04-02 12:56:05 +01:00
Fabrice Gasnier
de3568bfab Revert "pwm: Set class for exported channels in sysfs"
commit c289d66252 upstream.

This reverts commit 7e5d1fd75c ("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>
2019-04-02 12:56:05 +01:00
HiFiBerry
60063245a5 Added driver for the HiFiBerry DAC+ ADC (#2694)
Signed-off-by: Daniel Matuschek <daniel@hifiberry.com>
2019-04-02 12:56:05 +01:00
Phil Elwell
161ec6afb4 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>
2019-04-02 12:56:05 +01:00
P33M
2359eed5d2 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.
2019-04-02 12:56:04 +01:00
Phil Elwell
cd862c6b66 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>
2019-04-02 12:56:04 +01:00
Phil Elwell
a5bec28c9a 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>
2019-04-02 12:56:04 +01:00
b-ak
cbe1271cf3 configs: Add CONFIG_SND_AUDIOSENSE_PI=m
AudioSense-Pi add on soundcard configuration definitions

Signed-off-by: b-ak <anur.bhargav@gmail.com>
2019-04-02 12:56:04 +01:00
b-ak
df3296ad05 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>
2019-04-02 12:56:03 +01:00
b-ak
a62c60485f 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>
2019-04-02 12:56:03 +01:00
Joshua Emele
acdb81c204 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
2019-04-02 12:56:03 +01:00
Ezekiel Bethel
01384fd6c6 bcm2835_smi: re-add dereference to fix DMA transfers 2019-04-02 12:56:03 +01:00
Ben Wolsieffer
3d2620e10c 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>
2019-04-02 12:56:02 +01:00