linux-4.9.git
8 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>
8 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>
8 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>
8 years agoBCM270X: Disable VEC unless vc4-kms-v3d is present.
Eric Anholt [Mon, 23 Jan 2017 19:41:54 +0000 (11:41 -0800)]
BCM270X: Disable VEC unless vc4-kms-v3d is present.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agoARM: dts: bcm283x: Enable the VEC IP on all RaspberryPi boards
Boris Brezillon [Fri, 2 Dec 2016 13:48:13 +0000 (14:48 +0100)]
ARM: dts: bcm283x: Enable the VEC IP on all RaspberryPi boards

Enable the VEC IP on all RaspberryPi boards.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit 5ab1a37c6027c114a87a1ae32cfc5ef303d643c5)

8 years agoARM: dts: bcm283x: Add VEC node in bcm283x.dtsi
Boris Brezillon [Fri, 2 Dec 2016 13:48:12 +0000 (14:48 +0100)]
ARM: dts: bcm283x: Add VEC node in bcm283x.dtsi

Add the VEC (Video EnCoder) node definition in bcm283x.dtsi.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit b899c45208d6f204a6da9a1132577993eeecf0fb)

8 years agodrm/vc4: Add DSI driver
Eric Anholt [Wed, 10 Feb 2016 19:42:32 +0000 (11:42 -0800)]
drm/vc4: Add DSI driver

The DSI0 and DSI1 blocks on the 2835 are related hardware blocks.
Some registers move around, and the featureset is slightly different,
as DSI1 (the 4-lane DSI) is a later version of the hardware block.
This driver doesn't yet enable DSI0, since we don't have any hardware
to test against, but it does put a lot of the register definitions and
code in place.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agodrm/vc4: Add support for feeding DSI encoders from the pixel valve.
Eric Anholt [Thu, 11 Feb 2016 00:17:29 +0000 (16:17 -0800)]
drm/vc4: Add support for feeding DSI encoders from the pixel valve.

We have to set a different pixel format, which tells the hardware to
use the pix_width field that's fed in sideband from the DSI encoder to
divide the "pixel" clock.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agodrm/vc4: Set up SCALER_DISPCTRL at boot.
Eric Anholt [Thu, 15 Sep 2016 14:25:23 +0000 (15:25 +0100)]
drm/vc4: Set up SCALER_DISPCTRL at boot.

We want the HVS on, obviously, and we also want DSP3 (PV1's source) to
be muxed from HVS channel 2 like we expect in vc4_crtc.c.  The
firmware wasn't setting the DSP3 mux up when both the LCD and HDMI
were disabled.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agodrm/vc4: Add support for the VEC (Video Encoder) IP
Boris Brezillon [Fri, 2 Dec 2016 13:48:10 +0000 (14:48 +0100)]
drm/vc4: Add support for the VEC (Video Encoder) IP

The VEC IP is a TV DAC, providing support for PAL and NTSC standards.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit e4b81f8c74c82dbc0cb0e5ceb5ef9b713b325fc9)

8 years agodrm: Turn DRM_MODE_SUBCONNECTOR_xx definitions into an enum
Boris Brezillon [Fri, 2 Dec 2016 13:48:08 +0000 (14:48 +0100)]
drm: Turn DRM_MODE_SUBCONNECTOR_xx definitions into an enum

List of values like the DRM_MODE_SUBCONNECTOR_xx ones are better
represented with enums.

Turn the DRM_MODE_SUBCONNECTOR_xx macros into an enum.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit dee7a4fee730ca8908f335b6b66174cba4598ecd)

8 years agodrm: Add TV connector states to drm_connector_state
Boris Brezillon [Fri, 2 Dec 2016 13:48:09 +0000 (14:48 +0100)]
drm: Add TV connector states to drm_connector_state

Some generic TV connector properties are exposed in drm_mode_config, but
they are currently handled independently in each DRM encoder driver.

Extend the drm_connector_state to store TV related states, and modify the
drm_atomic_connector_{set,get}_property() helpers to fill the connector
state accordingly.

Each driver is then responsible for checking and applying the new config
in its ->atomic_mode_{check,set}() operations.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit 299a16b163c95fbe1e3b1e142ba9c6ce9dab2c23)

8 years agodrm/vc4: Fix ->clock_select setting for the VEC encoder
Boris Brezillon [Fri, 2 Dec 2016 13:48:07 +0000 (14:48 +0100)]
drm/vc4: Fix ->clock_select setting for the VEC encoder

PV_CONTROL_CLK_SELECT_VEC is actually 2 and not 0. Fix the definition and
rework the vc4_set_crtc_possible_masks() to cover the full range of the
PV_CONTROL_CLK_SELECT field.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit ab8df60e3a3b68420d0d4477c5f07c00fbfb078b)

8 years agodrm/vc4: Fix race between page flip completion event and clean-up
Derek Foreman [Thu, 24 Nov 2016 18:11:55 +0000 (12:11 -0600)]
drm/vc4: Fix race between page flip completion event and clean-up

There was a small window where a userspace program could submit
a pageflip after receiving a pageflip completion event yet still
receive EBUSY.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Daniel Stone <daniels@collabora.com>
(cherry picked from commit 26fc78f6fef39b9d7a15def5e7e9826ff68303f4)

8 years agodrm/vc4: Add fragment shader threading support
Jonas Pfeil [Mon, 7 Nov 2016 23:18:39 +0000 (00:18 +0100)]
drm/vc4: Add fragment shader threading support

FS threading brings performance improvements of 0-20% in glmark2.

The validation code checks for thread switch signals and ensures that
the registers of the other thread are not touched, and that our clamps
are not live across thread switches.  It also checks that the
threading and branching instructions do not interfere.

(Original patch by Jonas, changes by anholt for style cleanup,
removing validation the kernel doesn't need to do, and adding the flag
for userspace).

v2: Minor style fixes from checkpatch.

Signed-off-by: Jonas Pfeil <pfeiljonas@gmx.de>
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit c778cc5df944291dcdb1ca7a6bb781fbc22550c5)

8 years agodrm/vc4: Use runtime autosuspend to avoid thrashing V3D power state.
Eric Anholt [Fri, 4 Nov 2016 22:58:38 +0000 (15:58 -0700)]
drm/vc4: Use runtime autosuspend to avoid thrashing V3D power state.

The pm_runtime_put() we were using immediately released power on the
device, which meant that we were generally turning the device off and
on once per frame.  In many profiles I've looked at, that added up to
about 1% of CPU time, but this could get worse in the case of frequent
rendering and readback (as may happen in X rendering).  By keeping the
device on until we've been idle for a couple of frames, we drop the
overhead of runtime PM down to sub-.1%.

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

8 years agodrm/vc4: Add support for rendering with ETC1 textures.
Eric Anholt [Fri, 4 Nov 2016 01:53:10 +0000 (18:53 -0700)]
drm/vc4: Add support for rendering with ETC1 textures.

The validation for it ends up being quite simple, but I hadn't got
around to it before merging the driver.  For backwards compatibility,
we also need to add a flag so that the userspace GL driver can easily
tell if the kernel will allow ETC1 textures (on an old kernel, it will
continue to convert to RGBA8)

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

8 years agodrm/vc4: Fix termination of the initial scan for branch targets.
Eric Anholt [Thu, 20 Oct 2016 23:48:12 +0000 (16:48 -0700)]
drm/vc4: Fix termination of the initial scan for branch targets.

The loop is scanning until the original max_ip (size of the BO), but
we want to not examine any code after the PROG_END's delay slots.
There was a block trying to do that, except that we had some early
continue statements if the signal wasn't a PROG_END or a BRANCH.

The failure mode would be that a valid shader is rejected because some
undefined memory after the PROG_END slots is parsed as a branch and
the rest of its setup is illegal.  I haven't seen this in the wild,
but valgrind was complaining when about this up in the userland
simulator mode.

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

8 years agoBCM270X: Enable the DSI panel node in the VC4 overlay.
Eric Anholt [Thu, 2 Jun 2016 22:09:35 +0000 (15:09 -0700)]
BCM270X: Enable the DSI panel node in the VC4 overlay.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agoARM: bcm2835: dt: Add the DSI module nodes and clocks.
Eric Anholt [Tue, 13 Dec 2016 23:15:10 +0000 (15:15 -0800)]
ARM: bcm2835: dt: Add the DSI module nodes and clocks.

The modules stay disabled by default, and if you want to enable DSI
you'll need an overlay that connects a panel to it.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agoBCM270X: Add the DSI panel to the defconfig.
Eric Anholt [Thu, 2 Jun 2016 19:29:45 +0000 (12:29 -0700)]
BCM270X: Add the DSI panel to the defconfig.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agodrm/panel: Add support for the Raspberry Pi 7" Touchscreen.
Eric Anholt [Tue, 26 Apr 2016 20:46:13 +0000 (13:46 -0700)]
drm/panel: Add support for the Raspberry Pi 7" Touchscreen.

This driver communicates with the Atmel microcontroller for sequencing
the poweron of the TC358762 DSI-DPI bridge and controlling the
backlight PWM.

The following lines are required in config.txt, to keep the firmware
from trying to bash our I2C lines and steal the DSI interrupts:

    disable_touchscreen=1
    ignore_lcd=2
    mask_gpu_interrupt1=0x1000

This means that the firmware won't power on the panel at boot time (no
rainbow) and the touchscreen input won't work.  The native input
driver for the touchscreen still needs to be written.

v2: Set the same default orientation as the closed source firmware
    used, which is the best for viewing angle.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agoclk: bcm2835: Add leaf clock measurement support, disabled by default
Eric Anholt [Tue, 17 Jan 2017 20:31:57 +0000 (07:31 +1100)]
clk: bcm2835: Add leaf clock measurement support, disabled by default

This proved incredibly useful during debugging of the DSI driver, to
see if our clocks were running at rate we requested.  Let's leave it
here for the next person interacting with clocks on the platform (and
so that hopefully we can just hook it up to debugfs some day).

Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
(cherry picked from commit 3f9195811d8d829556c4cd88d3f9e56a80d5ba60)

8 years agoclk: bcm2835: Register the DSI0/DSI1 pixel clocks.
Eric Anholt [Tue, 17 Jan 2017 20:31:56 +0000 (07:31 +1100)]
clk: bcm2835: Register the DSI0/DSI1 pixel clocks.

The DSI pixel clocks are muxed from clocks generated in the analog phy
by the DSI driver.  In order to set them as parents, we need to do the
same name lookup dance on them as we do for our root oscillator.

Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
(cherry picked from commit 8a39e9fa578229fd4604266c6ebb1a3a77d7994c)

8 years agoclk: bcm2835: Don't rate change PLLs on behalf of DSI PLL dividers.
Eric Anholt [Tue, 17 Jan 2017 20:31:55 +0000 (07:31 +1100)]
clk: bcm2835: Don't rate change PLLs on behalf of DSI PLL dividers.

Our core PLLs are intended to be configured once and left alone.  With
the SET_RATE_PARENT, asking to set the PLLD_DSI1 clock rate would
change PLLD just to get closer to the requested DSI clock, thus
changing PLLD_PER, the UART and ethernet PHY clock rates downstream of
it, and breaking ethernet.

We *do* want PLLH to change so that PLLH_AUX can be exactly the value
we want, though.  Thus, we need to have a per-divider policy of
whether to pass rate changes up.

Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
(cherry picked from commit 55486091bd1e1c5ed28c43c0d6b3392468a9adb5)

8 years agoclk: bcm: Fix 'maybe-uninitialized' warning in bcm2835_clock_choose_div_and_prate()
Boris Brezillon [Mon, 12 Dec 2016 08:00:53 +0000 (09:00 +0100)]
clk: bcm: Fix 'maybe-uninitialized' warning in bcm2835_clock_choose_div_and_prate()

best_rate is reported as potentially uninitialized by gcc.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Fixes: 155e8b3b0ee3 ("clk: bcm: Support rate change propagation on bcm2835 clocks")
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
(cherry picked from commit 2aab7a2055a1705c9e30920d95a596226999eb21)

8 years agoclk: bcm: Allow rate change propagation to PLLH_AUX on VEC clock
Boris Brezillon [Thu, 1 Dec 2016 21:00:20 +0000 (22:00 +0100)]
clk: bcm: Allow rate change propagation to PLLH_AUX on VEC clock

The VEC clock requires needs to be set at exactly 108MHz. Allow rate
change propagation on PLLH_AUX to match this requirement wihtout
impacting other IPs (PLLH is currently only used by the HDMI encoder,
which cannot be enabled when the VEC encoder is enabled).

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
(cherry picked from commit d86d46af84855403c00018be1c3e7bc190f2a6cd)

8 years agoclk: bcm: Support rate change propagation on bcm2835 clocks
Boris Brezillon [Thu, 1 Dec 2016 21:00:19 +0000 (22:00 +0100)]
clk: bcm: Support rate change propagation on bcm2835 clocks

Some peripheral clocks, like the VEC (Video EnCoder) clock need to be set
to a precise rate (in our case 108MHz). With the current implementation,
where peripheral clocks are not allowed to forward rate change requests
to their parents, it is impossible to match this requirement unless the
bootloader has configured things correctly, or a specific rate has been
assigned through the DT (with the assigned-clk-rates property).

Add a new field to struct bcm2835_clock_data to specify which parent
clocks accept rate change propagation, and support set rate propagation
in bcm2835_clock_determine_rate().

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
(cherry picked from commit 155e8b3b0ee320ae866b97dd31eba8a1f080a772)

8 years agoclk: bcm2835: Fix ->fixed_divider of pllh_aux
Boris Brezillon [Tue, 22 Nov 2016 20:45:28 +0000 (12:45 -0800)]
clk: bcm2835: Fix ->fixed_divider of pllh_aux

There is no fixed divider on pllh_aux.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
(cherry picked from commit f2a46926aba1f0c33944901d2420a6a887455ddc)

8 years agodwc_otg: fix summarize urb->actual_length for isochronous transfers
Martin Cerveny [Mon, 13 Feb 2017 16:23:47 +0000 (17:23 +0100)]
dwc_otg: fix summarize urb->actual_length for isochronous transfers

Kernel does not copy input data of ISO transfers to userspace
if actual_length is set only in ISO transfers and not summarized
in urb->actual_length. Fixes raspberrypi/linux#903

8 years agoUpdate vfpmodule.c
Claggy3 [Sat, 11 Feb 2017 14:00:30 +0000 (14:00 +0000)]
Update vfpmodule.c

Christopher Alexander Tobias Schulze - May 2, 2015, 11:57 a.m.
This patch fixes a problem with VFP state save and restore related
to exception handling (panic with message "BUG: unsupported FP
instruction in kernel mode") present on VFP11 floating point units
(as used with ARM1176JZF-S CPUs, e.g. on first generation Raspberry
Pi boards). This patch was developed and discussed on

   https://github.com/raspberrypi/linux/issues/859

A precondition to see the crashes is that floating point exception
traps are enabled. In this case, the VFP11 might determine that a FPU
operation needs to trap at a point in time when it is not possible to
signal this to the ARM11 core any more. The VFP11 will then set the
FPEXC.EX bit and store the trapped opcode in FPINST. (In some cases,
a second opcode might have been accepted by the VFP11 before the
exception was detected and could be reported to the ARM11 - in this
case, the VFP11 also sets FPEXC.FP2V and stores the second opcode in
FPINST2.)

If FPEXC.EX is set, the VFP11 will "bounce" the next FPU opcode issued
by the ARM11 CPU, which will be seen by the ARM11 as an undefined opcode
trap. The VFP support code examines the FPEXC.EX and FPEXC.FP2V bits
to decide what actions to take, i.e., whether to emulate the opcodes
found in FPINST and FPINST2, and whether to retry the bounced instruction.

If a user space application has left the VFP11 in this "pending trap"
state, the next FPU opcode issued to the VFP11 might actually be the
VSTMIA operation vfp_save_state() uses to store the FPU registers
to memory (in our test cases, when building the signal stack frame).
In this case, the kernel crashes as described above.

This patch fixes the problem by making sure that vfp_save_state() is
always entered with FPEXC.EX cleared. (The current value of FPEXC has
already been saved, so this does not corrupt the context. Clearing
FPEXC.EX has no effects on FPINST or FPINST2. Also note that many
callers already modify FPEXC by setting FPEXC.EN before invoking
vfp_save_state().)

This patch also addresses a second problem related to FPEXC.EX: After
returning from signal handling, the kernel reloads the VFP context
from the user mode stack. However, the current code explicitly clears
both FPEXC.EX and FPEXC.FP2V during reload. As VFP11 requires these
bits to be preserved, this patch disables clearing them for VFP
implementations belonging to architecture 1. There should be no
negative side effects: the user can set both bits by executing FPU
opcodes anyway, and while user code may now place arbitrary values
into FPINST and FPINST2 (e.g., non-VFP ARM opcodes) the VFP support
code knows which instructions can be emulated, and rejects other
opcodes with "unhandled bounce" messages, so there should be no
security impact from allowing reloading FPEXC.EX and FPEXC.FP2V.

Signed-off-by: Christopher Alexander Tobias Schulze <cat.schulze@alice-dsl.net>
8 years agosound: Suppress error message about deferrals
Phil Elwell [Thu, 9 Feb 2017 14:40:33 +0000 (14:40 +0000)]
sound: Suppress error message about deferrals

Since driver load deferrals are expected and will already
have resulted in a kernel message, suppress an essentially
duplicate error message from the RPi audio board drivers.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agosound: Demote deferral errors to INFO level
Phil Elwell [Thu, 9 Feb 2017 14:36:44 +0000 (14:36 +0000)]
sound: Demote deferral errors to INFO level

At present there is no mechanism to specify driver load order,
which can lead to deferrals and repeated retries until successful.
Since this situation is expected, reduce the dmesg level to
INFO and mention that the operation will be retried.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agoirq-bcm2836: Avoid "Invalid trigger warning"
Phil Elwell [Thu, 9 Feb 2017 14:33:30 +0000 (14:33 +0000)]
irq-bcm2836: Avoid "Invalid trigger warning"

Initialise the level for each IRQ to avoid a warning from the
arm arch timer code.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agoconfig: enable Cirrus Logic Audio Card
Matthias Reichl [Sun, 22 Jan 2017 11:49:37 +0000 (12:49 +0100)]
config: enable Cirrus Logic Audio Card

Signed-off-by: Matthias Reichl <hias@horus.com>
8 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>
8 years agoBCM270x DT: Consolidate audio card overlays
Matthias Reichl [Sun, 22 Jan 2017 11:49:36 +0000 (12:49 +0100)]
BCM270x DT: Consolidate audio card overlays

Reference 3.3V / 5V system rails instead of instantiating local
regulators.

Add missing power supply properties for codecs where these are
required according to the DT bindings docs.

Signed-off-by: Matthias Reichl <hias@horus.com>
8 years agoBCM270x DT: expose 3.3V and 5V system rails
Matthias Reichl [Sun, 22 Jan 2017 11:49:36 +0000 (12:49 +0100)]
BCM270x DT: expose 3.3V and 5V system rails

Signed-off-by: Matthias Reichl <hias@horus.com>
8 years agoconfig: Enable regulator support
Matthias Reichl [Sun, 22 Jan 2017 11:49:36 +0000 (12:49 +0100)]
config: Enable regulator support

Signed-off-by: Matthias Reichl <hias@horus.com>
8 years agogpio_mem: Remove unnecessary dev_info output (#1830)
JamesH65 [Mon, 6 Feb 2017 15:24:47 +0000 (15:24 +0000)]
gpio_mem: Remove unnecessary dev_info output (#1830)

The open function was spamming syslog every time
called, so have removed call completely.

8 years agousb: dwc2: Avoid suspending if we're in gadget mode (#1825)
ED6E0F17 [Fri, 3 Feb 2017 14:52:42 +0000 (14:52 +0000)]
usb: dwc2: Avoid suspending if we're in gadget mode (#1825)

I've found when booting HiKey with the usb gadget cable attached
if I then try to connect via adb, I get an infinite spew of:

dwc2 f72c0000.usb: dwc2_hsotg_ep_sethalt(ep ffffffc0790ecb18 ep1out, 0)
dwc2 f72c0000.usb: dwc2_hsotg_ep_sethalt(ep ffffffc0790eca18 ep1in, 0)

It seems that the usb autosuspend is suspending the bus shortly
after bootup when the gadget cable is attached. So when adbd
then tries to use the device, it doesn't work and it then tries
to restart it over and over via the ep_sethalt calls (via
FUNCTIONFS_CLEAR_HALT ioctl).

Chen Yu suggested this patch to avoid suspending if we're
in device mode, and it avoids the problem.

Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>
Cc: Amit Pundir <amit.pundir@linaro.org>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: John Youn <johnyoun@synopsys.com>
Cc: Douglas Anderson <dianders@chromium.org>
Cc: Chen Yu <chenyu56@huawei.com>
Cc: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Suggested-by: Chen Yu <chenyu56@huawei.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
8 years agoAdd overlay for mcp3008 adc (#1818)
Scott Ellis [Fri, 27 Jan 2017 11:42:42 +0000 (06:42 -0500)]
Add overlay for mcp3008 adc (#1818)

Some example usage:

SPI0.0
dtparam=spi=on
dtoverlay=mcp3008:spi0-0-present

SPI0.1
dtparam=spi=on
dtoverlay=mcp3008:spi0-1-present

SPI0.0 and SPI0.1
dtparam=spi=on
dtoverlay=mcp3008:spi0-0-present,spi0-1-present

SPI1.0
dtparam=spi=on
dtoverlay=spi1-1cs
dtoverlay=mcp3008:spi1-0-present

SPI1.2
dtparam=spi=on
dtoverlay=spi1-1cs:cs0_pin=16
dtoverlay=mcp3008:spi1-0-present

SPI1.0 and SPI1.1
dtoverlay=spi1-2cs
dtoverlay=mcp3008:spi1-0-present,spi1-1-present

Changing the speed

SPI0.0
dtparam=spi=on
dtoverlay=mcp3008:spi0-0-present,spi0-0-speed=2000000

8 years agoconfig: Add SND_SOC_ADAU7002 codec module
Phil Elwell [Wed, 25 Jan 2017 21:17:23 +0000 (21:17 +0000)]
config: Add SND_SOC_ADAU7002 codec module

As there is now an overlay requiring it, build the codec module.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agoASoC: A simple-card overlay for ADAU7002
chris johnson [Sun, 22 Jan 2017 03:27:31 +0000 (03:27 +0000)]
ASoC: A simple-card overlay for ADAU7002

Usage: `dtoverlay=adau7002-simple`

8 years agoconfig: Add additional network scheduling modules
popcornmix [Wed, 25 Jan 2017 11:30:38 +0000 (11:30 +0000)]
config: Add additional network scheduling modules

8 years agoBCM270X_DT: Add reference to audio_pins to CM dtb
Phil Elwell [Mon, 23 Jan 2017 17:36:50 +0000 (17:36 +0000)]
BCM270X_DT: Add reference to audio_pins to CM dtb

The CM1 dtb contains an empty audio_pins node, but no reference to it.
Adding the usual pinctrl reference from the audio node enables the
audremap overlay (and others) to easily turn on audio.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agoARM64: Use dwc_otg driver by default for USB.
Michael Zoran [Sun, 15 Jan 2017 05:46:04 +0000 (21:46 -0800)]
ARM64: Use dwc_otg driver by default for USB.

If it breaks on anybody, they can use the standard device tree
overlays to switch back to the dwc2 driver.

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
8 years agoARM64: Enable DWC_OTG Driver In ARM64 Build Config(bcmrpi3_defconfig)
Michael Zoran [Sun, 15 Jan 2017 05:45:03 +0000 (21:45 -0800)]
ARM64: Enable DWC_OTG Driver In ARM64 Build Config(bcmrpi3_defconfig)

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
8 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>
8 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>
8 years agoconfig: Add CONFIG_MD_M25P80 and CONFIG_MD_SPI_NOR
Phil Elwell [Tue, 17 Jan 2017 14:39:39 +0000 (14:39 +0000)]
config: Add CONFIG_MD_M25P80 and CONFIG_MD_SPI_NOR

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agoBCM270X_DT: Enable UART0 on CM3
Phil Elwell [Tue, 17 Jan 2017 11:34:58 +0000 (11:34 +0000)]
BCM270X_DT: Enable UART0 on CM3

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agoconfig: Add CONFIG_TCP_CONG_BBR
popcornmix [Mon, 16 Jan 2017 16:33:54 +0000 (16:33 +0000)]
config: Add CONFIG_TCP_CONG_BBR
See: https://github.com/raspberrypi/linux/issues/1784

8 years agospi-bcm2835: Disable forced software CS
Phil Elwell [Fri, 1 Jul 2016 21:09:24 +0000 (22:09 +0100)]
spi-bcm2835: Disable forced software CS

Select software CS in bcm2708_common.dtsi, and disable the automatic
conversion in the driver to allow hardware CS to be re-enabled with an
overlay.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agoBCM270X_DT: Add spi0-cs overlay
Phil Elwell [Mon, 16 Jan 2017 14:53:12 +0000 (14:53 +0000)]
BCM270X_DT: Add spi0-cs overlay

The spi0-cs overlay allows the software chip selectts to be modified
using the cs0_pin and cs1_pin parameters.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agoARM64: Enable RTL8187/RTL8192CU wifi in build config
Michael Zoran [Sun, 15 Jan 2017 15:31:59 +0000 (07:31 -0800)]
ARM64: Enable RTL8187/RTL8192CU wifi in build config

These drivers build now, so they can be enabled back
in the build configuration just like they are for
32 bit.

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
8 years agoARM64: Fix build break for RTL8187/RTL8192CU wifi
Michael Zoran [Sun, 15 Jan 2017 15:25:18 +0000 (07:25 -0800)]
ARM64: Fix build break for RTL8187/RTL8192CU wifi

These drivers use an ASM function from the base
system to compute the ipv6 checksum.  These functions
are not available on ARM64, probably because nobody
has bother to write them.  The base system does have
a generic "C" version, so a simple fix is to include
the header to use the generic version on ARM64 only.

A longer term solution would be to submit the necessary
ASM function to the upstream source.

With this change, these drivers now compile without
any errors on ARM64.

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
8 years agoARM64: Enable Kernel Address Space Randomization (#1792)
Electron752 [Sat, 14 Jan 2017 10:54:26 +0000 (02:54 -0800)]
ARM64: Enable Kernel Address Space Randomization (#1792)

Randomization allows the mapping between virtual addresses and physical
address to be different on each boot.  This makes it more difficult
to exploit security vulnerabilities that require knowledge of fixed
hardware addresses.

The firmware generates a 8 byte random number during bootup and stores
it in the device tree under chosen/kaslr-seed. This number is used
to randomize the address mapping.

This change enables this feature in the build configuration for ARM64.

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
8 years agoARM64: Make it work again on 4.9 (#1790)
Electron752 [Thu, 12 Jan 2017 15:07:08 +0000 (07:07 -0800)]
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>
8 years agoBCM270X_DT: Add pi3-disable-wifi overlay
Phil Elwell [Wed, 11 Jan 2017 13:01:21 +0000 (13:01 +0000)]
BCM270X_DT: Add pi3-disable-wifi overlay

pi3-disable-wifi is a minimal overlay to disable the onboard WiFi.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agoAdd driver_name paramater
Aaron Shaw [Tue, 10 Jan 2017 16:11:04 +0000 (16:11 +0000)]
Add driver_name paramater

Add driver_name parameter for use with 5.1 passthrough audio in LibreElec and other Kodi OSs

8 years agoAdd driver_name property
Aaron Shaw [Tue, 10 Jan 2017 16:05:41 +0000 (16:05 +0000)]
Add driver_name property

Add driver name property for use with 5.1 passthrough audio in LibreElec and other Kodi based OSs

8 years agopisound improvements:
Giedrius Trainavicius [Thu, 5 Jan 2017 00:38:16 +0000 (02:38 +0200)]
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.

Signed-off-by: Giedrius Trainavicius <giedrius@blokas.io>
8 years agoDocument the si7020 option
Phil Elwell [Tue, 3 Jan 2017 21:27:46 +0000 (21:27 +0000)]
Document the si7020 option

8 years agoAdd support for Silicon Labs Si7013/20/21 humidity/temperature sensor.
Alex Tucker [Tue, 13 Dec 2016 19:50:18 +0000 (19:50 +0000)]
Add support for Silicon Labs Si7013/20/21 humidity/temperature sensor.

8 years agoarm64: Add CONFIG_ARCH_BCM2835
popcornmix [Sat, 31 Dec 2016 14:15:50 +0000 (14:15 +0000)]
arm64: Add CONFIG_ARCH_BCM2835

8 years agoi2c: bcm2835: Add debug support
Noralf Trønnes [Tue, 1 Nov 2016 14:15:41 +0000 (15:15 +0100)]
i2c: bcm2835: Add debug support

This adds a debug module parameter to aid in debugging transfer issues
by printing info to the kernel log. When enabled, status values are
collected in the interrupt routine and msg info in
bcm2835_i2c_start_transfer(). This is done in a way that tries to avoid
affecting timing. Having printk in the isr can mask issues.

debug values (additive):
1: Print info on error
2: Print info on all transfers
3: Print messages before transfer is started

The value can be changed at runtime:
/sys/module/i2c_bcm2835/parameters/debug

Example output, debug=3:
[  747.114448] bcm2835_i2c_xfer: msg(1/2) write addr=0x54, len=2 flags= [i2c1]
[  747.114463] bcm2835_i2c_xfer: msg(2/2) read addr=0x54, len=32 flags= [i2c1]
[  747.117809] start_transfer: msg(1/2) write addr=0x54, len=2 flags= [i2c1]
[  747.117825] isr: remain=2, status=0x30000055 : TA TXW TXD TXE  [i2c1]
[  747.117839] start_transfer: msg(2/2) read addr=0x54, len=32 flags= [i2c1]
[  747.117849] isr: remain=32, status=0xd0000039 : TA RXR TXD RXD  [i2c1]
[  747.117861] isr: remain=20, status=0xd0000039 : TA RXR TXD RXD  [i2c1]
[  747.117870] isr: remain=8, status=0x32 : DONE TXD RXD  [i2c1]

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
8 years agoi2c: bcm2835: Add support for dynamic clock
Noralf Trønnes [Mon, 26 Sep 2016 23:00:08 +0000 (01:00 +0200)]
i2c: bcm2835: Add support for dynamic clock

Support a dynamic clock by reading the frequency and setting the
divisor in the transfer function instead of during probe.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Martin Sperl <kernel@martin.sperl.org>
8 years agoi2c: bcm2835: Support i2c-dev ioctl I2C_TIMEOUT
Noralf Trønnes [Fri, 23 Sep 2016 02:57:17 +0000 (04:57 +0200)]
i2c: bcm2835: Support i2c-dev ioctl I2C_TIMEOUT

Use i2c_adapter->timeout for the completion timeout value. The core
default is 1 second.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
8 years agoi2c: bcm2835: Add support for Repeated Start Condition
Noralf Trønnes [Fri, 23 Sep 2016 02:54:27 +0000 (04:54 +0200)]
i2c: bcm2835: Add support for Repeated Start Condition

Documentation/i2c/i2c-protocol states that Combined transactions should
separate messages with a Start bit and end the whole transaction with a
Stop bit. This patch adds support for issuing only a Start between
messages instead of a Stop followed by a Start.

This implementation differs from downstream i2c-bcm2708 in 2 respects:
- it uses an interrupt to detect that the transfer is active instead
  of using polling. There is no interrupt for Transfer Active, but by
  not prefilling the FIFO it's possible to use the TXW interrupt.
- when resetting/disabling the controller between transfers it writes
  CLEAR to the control register instead of just zero.
  Using just zero gave many errors. This might be the reason why
  downstream had to disable this feature and make it available with a
  module parameter.

I have run thousands of transfers to a DS1307 (rtc), MMA8451 (accel)
and AT24C32 (eeprom) in parallel without problems.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Eric Anholt <eric@anholt.net>
8 years agoi2c: bcm2835: Can't support I2C_M_IGNORE_NAK
Noralf Trønnes [Thu, 22 Sep 2016 20:05:50 +0000 (22:05 +0200)]
i2c: bcm2835: Can't support I2C_M_IGNORE_NAK

The controller can't support this flag, so remove it.

Documentation/i2c/i2c-protocol states that all of the message is sent:

I2C_M_IGNORE_NAK:
    Normally message is interrupted immediately if there is [NA] from the
    client. Setting this flag treats any [NA] as [A], and all of
    message is sent.

From the BCM2835 ARM Peripherals datasheet:

    The ERR field is set when the slave fails to acknowledge either
    its address or a data byte written to it.

So when the controller doesn't receive an ack, it sets ERR and raises
an interrupt. In other words, the whole message is not sent.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
8 years agoi2c: bcm2835: Use dev_dbg logging on transfer errors
Noralf Trønnes [Mon, 19 Sep 2016 15:19:41 +0000 (17:19 +0200)]
i2c: bcm2835: Use dev_dbg logging on transfer errors

Writing to an AT24C32 generates on average 2x i2c transfer errors per
32-byte page write. Which amounts to a lot for a 4k write. This is due
to the fact that the chip doesn't respond during it's internal write
cycle when the at24 driver tries and retries the next write.
Only a handful drivers use dev_err() on transfer error, so switch to
dev_dbg() instead.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
8 years agoi2c: bcm2835: Protect against unexpected TXW/RXR interrupts
Noralf Trønnes [Fri, 23 Sep 2016 16:24:38 +0000 (18:24 +0200)]
i2c: bcm2835: Protect against unexpected TXW/RXR interrupts

If an unexpected TXW or RXR interrupt occurs (msg_buf_remaining == 0),
the driver has no way to fill/drain the FIFO to stop the interrupts.
In this case the controller has to be disabled and the transfer
completed to avoid hang.

(CLKT | ERR) and DONE interrupts are completed in their own paths, and
the controller is disabled in the transfer function after completion.
Unite the code paths and do disabling inside the interrupt routine.

Clear interrupt status bits in the united completion path instead of
trying to do it on every interrupt which isn't necessary.
Only CLKT, ERR and DONE can be cleared that way.

Add the status value to the error value in case of TXW/RXR errors to
distinguish them from the other S_LEN error.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
8 years agoi2c: bcm2835: Fix hang for writing messages larger than 16 bytes
Noralf Trønnes [Sat, 17 Sep 2016 13:07:10 +0000 (15:07 +0200)]
i2c: bcm2835: Fix hang for writing messages larger than 16 bytes

Writing messages larger than the FIFO size results in a hang, rendering
the machine unusable. This is because the RXD status flag is set on the
first interrupt which results in bcm2835_drain_rxfifo() stealing bytes
from the buffer. The controller continues to trigger interrupts waiting
for the missing bytes, but bcm2835_fill_txfifo() has none to give.
In this situation wait_for_completion_timeout() apparently is unable to
stop the madness.

The BCM2835 ARM Peripherals datasheet has this to say about the flags:
  TXD: is set when the FIFO has space for at least one byte of data.
  RXD: is set when the FIFO contains at least one byte of data.
  TXW: is set during a write transfer and the FIFO is less than full.
  RXR: is set during a read transfer and the FIFO is or more full.

Implementing the logic from the downstream i2c-bcm2708 driver solved
the hang problem.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Martin Sperl <kernel@martin.sperl.org>
8 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>
8 years agoraspberrypi-firmware: Define the MBOX channel in the header.
Eric Anholt [Wed, 14 Sep 2016 08:18:09 +0000 (09:18 +0100)]
raspberrypi-firmware: Define the MBOX channel in the header.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 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>
8 years agodrivers/vchi: Remove dependency on CONFIG_BROKEN.
Eric Anholt [Mon, 3 Oct 2016 17:21:17 +0000 (10:21 -0700)]
drivers/vchi: Remove dependency on CONFIG_BROKEN.

The driver builds now.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agostaging/vchi: Update for rename of page_cache_release() to put_page().
Eric Anholt [Mon, 3 Oct 2016 17:16:03 +0000 (10:16 -0700)]
staging/vchi: Update for rename of page_cache_release() to put_page().

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agostaging/vchi: Convert to current get_user_pages() arguments.
Eric Anholt [Mon, 3 Oct 2016 17:14:10 +0000 (10:14 -0700)]
staging/vchi: Convert to current get_user_pages() arguments.

Signed-off-by: Eric Anholt <eric@anholt.net>
8 years agovchiq_arm: Avoid use of mutex in add_completion
Phil Elwell [Mon, 20 Jun 2016 12:51:44 +0000 (13:51 +0100)]
vchiq_arm: Avoid use of mutex in add_completion

Claiming the completion_mutex within add_completion did prevent some
messages appearing twice, but provokes a deadlock caused by vcsm using
vchiq within a page fault handler.

Revert the use of completion_mutex, and instead fix the original
problem using more memory barriers.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agovchiq_arm: Add completion records under the mutex
Phil Elwell [Thu, 21 Apr 2016 12:49:32 +0000 (13:49 +0100)]
vchiq_arm: Add completion records under the mutex

An issue was observed when flushing openmax components
which generate a large number of messages returning
buffers to host.

We occasionally found a duplicate message from 16
messages prior, resulting in a buffer returned twice.

While only one thread adds completions, without the
mutex you don't get the protection of the automatic
memory barrier you get with synchronisation objects.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agovchiq_arm: Service callbacks must not fail
Phil Elwell [Wed, 23 Mar 2016 20:53:47 +0000 (20:53 +0000)]
vchiq_arm: Service callbacks must not fail

Service callbacks are not allowed to return an error. The internal callback
that delivers events and messages to user tasks does not enqueue them if
the service is closing, but this is not an error and should not be
reported as such.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agovchiq_arm: Access the dequeue_pending flag locked
Phil Elwell [Wed, 23 Mar 2016 14:16:25 +0000 (14:16 +0000)]
vchiq_arm: Access the dequeue_pending flag locked

Reading through this code looking for another problem (now found in userland)
the use of dequeue_pending outside a lock didn't seem safe.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agovchiq_arm: Tweak the logging output
Phil Elwell [Mon, 7 Mar 2016 15:05:11 +0000 (15:05 +0000)]
vchiq_arm: Tweak the logging output

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
8 years agoAdd arm64 configuration and device tree differences.
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.

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

8 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.

8 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>
8 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>
8 years agonet: Fix rtl8192cu build errors on other platforms
Phil Elwell [Wed, 23 Mar 2016 17:20:58 +0000 (17:20 +0000)]
net: Fix rtl8192cu build errors on other platforms

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

Add #if for 3.14 kernel change (#87)

Fixes compiling after changes in https://github.com/torvalds/linux/commit/f663dd9aaf9ed124f25f0f8452edf238f087ad50 and https://github.com/torvalds/linux/commit/99932d4fc03a13bb3e94938fe25458fabc8f2fc3

Fixes #86

Set dev_type to wlan

Fixes #23

Tentatively added support for more 8188CUS based devices.

Add support for more 8188CUS and 8192CUS devices

Add ProductId for the Netgear N150 - WNA1000M

Fixes CONFIG_CONCURRENT_MODE CONFIG_MULTI_VIR_IFACES

Fixes compatibility with 3.13

Enables warning in the compiler and fixes some issues, reference => https://github.com/diederikdehaas/rtl8812AU

Starts device in station mode instead of monitor, fixes NetworkManager issues

Enable cfg80211 support

Fix cfg80211 for kernel >= 4.7

Fixes rtl8192cu for kernel >= 4.8

8 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

Add non-mainline source for rtl8192cu wireless driver version v4.0.2_9000 as
this is widely used. Disable older rtlwifi driver.

8192cu needs old wireless extensions

The obsolete WIRELESS_EXT configuration is used
by the old Realtek code and is needed for AP support.

8192cu: CONFIG_AP_MODE hardcoded in autoconf.h

rtl8192c_rf6052: PHY_RFShadowRefresh(): fix off-by-one

Signed-off-by: Marc Kleine-Budde <mkl@blackshift.org>
rtl8192cu: Add PID for D-Link DWA 131

8 years agoamba_pl011: Don't use DT aliases for numbering
Phil Elwell [Tue, 23 Feb 2016 17:26:48 +0000 (17:26 +0000)]
amba_pl011: Don't use DT aliases for numbering

The pl011 driver looks for DT aliases of the form "serial<n>",
and if found uses <n> as the device ID. This can cause
/dev/ttyAMA0 to become /dev/ttyAMA1, which is confusing if the
other serial port is provided by the 8250 driver which doesn't
use the same logic.

8 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.

8 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>
8 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.

8 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>
8 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>
8 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

8 years agoAdd IQAudIO Digi WM8804 board support
DigitalDreamtime [Thu, 30 Jun 2016 17:38:42 +0000 (18:38 +0100)]
Add IQAudIO Digi WM8804 board support

Support IQAudIO Digi board with iqaudio_digi machine driver and
 iqaudio-digi-wm8804-audio overlay.

NB. Machine driver is a cut and paste of hifiberry_digi code, with format
    and general cleanup to comply with kernel coding standards.

Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>