linux-4.9.git
7 years agodwc_otg: fix several potential crash sources
P33M [Fri, 12 May 2017 11:24:00 +0000 (12:24 +0100)]
dwc_otg: fix several potential crash sources

On root port disconnect events, the host driver state is cleared and
in-progress host channels are forcibly stopped. This doesn't play
well with the FIQ running in the background, so:
- Guard the disconnect callback with both the host spinlock and FIQ
  spinlock
- Move qtd dereference in dwc_otg_handle_hc_fsm() after the early-out
  so we don't dereference a qtd that has gone away
- Turn catch-all BUG()s in dwc_otg_handle_hc_fsm() into warnings.

7 years agoSQUASH: BCM270X_DT: Fix typo in mmc overlay
Phil Elwell [Thu, 11 May 2017 21:00:20 +0000 (22:00 +0100)]
SQUASH: BCM270X_DT: Fix typo in mmc overlay

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoBCM270X_DT: Tidy up mmc, sdhost, sdio overlays
Phil Elwell [Thu, 11 May 2017 15:58:16 +0000 (16:58 +0100)]
BCM270X_DT: Tidy up mmc, sdhost, sdio overlays

The mmc, sdhost, sdio and sdio-1bit overlays had a few
anachronisms and oddities which were overdue for fixing.
The new versions should be functionally equivalent.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agodwcotg: Allow to build without FIQ on ARM64
popcornmix [Wed, 10 May 2017 11:47:46 +0000 (12:47 +0100)]
dwcotg: Allow to build without FIQ on ARM64

Signed-off-by: popcornmix <popcornmix@gmail.com>
7 years agoAccording to RFC 2460, IPv6 UDP calculated checksum yields a result
Nisar Sayed [Tue, 9 May 2017 17:51:42 +0000 (18:51 +0100)]
According to RFC 2460, IPv6 UDP calculated checksum yields a result
of zero must be changed to 0xffff, however this feature is not
supported by smsc95xx family hence enable csum offload only for
IPv4 TCP/UDP packets.

Signed-off-by: Nisar Sayed <Nisar.Sayed@microchip.com>
Reported-by: popcorn mix <popcornmix@gmail.com>
7 years agoirq_bcm2836: Send event when onlining sleeping cores
Phil Elwell [Mon, 8 May 2017 15:43:40 +0000 (16:43 +0100)]
irq_bcm2836: Send event when onlining sleeping cores

In order to reduce power consumption and bus traffic, it is sensible
for secondary cores to enter a low-power idle state when waiting to
be started. The wfe instruction causes a core to wait until an event
or interrupt arrives before continuing to the next instruction.
The sev instruction sends a wakeup event to the other cores, so call
it from bcm2836_smp_boot_secondary, the function that wakes up the
waiting cores during booting.

It is harmless to use this patch without the corresponding change
adding wfe to the ARMv7/ARMv8-32 stubs, but if the stubs are updated
and this patch is not applied then the other cores will sleep forever.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoARM: dts: bcm283x: Reserve first page for firmware
Phil Elwell [Mon, 8 May 2017 15:30:18 +0000 (16:30 +0100)]
ARM: dts: bcm283x: Reserve first page for firmware

The Raspberry Pi startup stub files for multi-core BCM27XX processors
make the secondary CPUs spin until the corresponding mailbox is
written. These stubs are loaded at physical address 0x00000xxx (as seen
by the ARMs), but this page will be reused by the kernel unless it is
explicitly reserved, causing the waiting cores to execute random code.

Use the /memreserve/ Device Tree directive to mark the first page as
off-limits to the kernel.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoRevert "serial: 8250: Don't crash when nr_uarts is 0"
popcornmix [Fri, 5 May 2017 12:23:10 +0000 (13:23 +0100)]
Revert "serial: 8250: Don't crash when nr_uarts is 0"

This reverts commit 9c297d9ebd0d8c6d5e6e8675d527d6a221613abc.

7 years agobcm2708_fb: Avoid firmware mbox call in vc_mem_copy
popcornmix [Thu, 4 May 2017 16:38:22 +0000 (17:38 +0100)]
bcm2708_fb: Avoid firmware mbox call in vc_mem_copy

If firmware has locked up it is useful to get vcdbg log out without a firmware mbox response.
Issue the mbox call at probe time instead.

Signed-off-by: popcornmix <popcornmix@gmail.com>
7 years agovcsm: Treat EBUSY as success rather than SIGBUS
popcornmix [Tue, 2 May 2017 15:36:05 +0000 (16:36 +0100)]
vcsm: Treat EBUSY as success rather than SIGBUS

Currently if two cores access the same page concurrently one will return VM_FAULT_NOPAGE
and the other VM_FAULT_SIGBUS crashing the user code.

Also report when mapping fails.

Signed-off-by: popcornmix <popcornmix@gmail.com>
7 years agofiq_fsm: Use correct states when starting isoc OUT transfers (#1991)
P33M [Thu, 4 May 2017 13:56:08 +0000 (14:56 +0100)]
fiq_fsm: Use correct states when starting isoc OUT transfers (#1991)

* fiq_fsm: Use correct states when starting isoc OUT transfers

In fiq_fsm_start_next_periodic() if an isochronous OUT transfer
was selected, no regard was given as to whether this was a single-packet
transfer or a multi-packet staged transfer.

For single-packet transfers, this had the effect of repeatedly sending
OUT packets with bogus data and lengths.

Eventually if the channel was repeatedly enabled enough times, this
would lock up the OTG core and no further bus transfers would happen.

Set the FSM state up properly if we select a single-packet transfer.

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

7 years agodwc_otg: fix split transaction data toggle handling around dequeues
P33M [Tue, 2 May 2017 15:31:15 +0000 (16:31 +0100)]
dwc_otg: fix split transaction data toggle handling around dequeues

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

Fix several issues regarding endpoint state when URBs are dequeued
- If the HCD is disconnected, flush FIQ-enabled channels properly
- Save the data toggle state for bulk endpoints if the last transfer
  from an endpoint where URBs were dequeued returned a data packet
- Reset hc->start_pkt_count properly in assign_and_init_hc()

7 years agovc4_fkms: Apply firmware overscan offset to hardware cursor
popcornmix [Tue, 18 Apr 2017 20:43:46 +0000 (21:43 +0100)]
vc4_fkms: Apply firmware overscan offset to hardware cursor

7 years agodwc_otg: make nak_holdoff work as intended with empty queues
P33M [Thu, 27 Apr 2017 15:24:34 +0000 (16:24 +0100)]
dwc_otg: make nak_holdoff work as intended with empty queues

If URBs reading from non-periodic split endpoints were dequeued and
the last transfer from the endpoint was a NAK handshake, the resulting
qh->nak_frame value was stale which would result in unnecessarily long
polling intervals for the first subsequent transfer with a fresh URB.

Fixup qh->nak_frame in dwc_otg_hcd_urb_dequeue and also guard against
a case where a single URB is submitted to the endpoint, a NAK was
received on the transfer immediately prior to receiving data and the
device subsequently resubmits another URB past the qh->nak_frame interval.

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

7 years agoclk: bcm2835: Limit PCM clock to OSC and PLLD_PER
Phil Elwell [Wed, 26 Apr 2017 16:28:47 +0000 (17:28 +0100)]
clk: bcm2835: Limit PCM clock to OSC and PLLD_PER

It is unwise to use sources other than the oscillator and PLLD_PER for
the PCM peripheral (and perhaps others - TBD) because their rate can
change and they may even be switched off, so explicitly restrict the
choice using dummy entries in the list of potential parents (item index
is significant).

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agodwc_otg: Add the dependency on FIQ
popcornmix [Wed, 26 Apr 2017 15:51:48 +0000 (16:51 +0100)]
dwc_otg: Add the dependency on FIQ

Signed-off-by: popcornmix <popcornmix@gmail.com>
7 years agoBCM270X_DT: Add tmp102 to i2c sensor overlay
Scott Ellis [Tue, 25 Apr 2017 17:05:42 +0000 (13:05 -0400)]
BCM270X_DT: Add tmp102 to i2c sensor overlay

Signed-off-by: Scott Ellis <scott@jumpnowtek.com>
7 years agoconfig: Enable TI TMP102 temp sensor module
Scott Ellis [Tue, 25 Apr 2017 14:46:09 +0000 (10:46 -0400)]
config: Enable TI TMP102 temp sensor module

Signed-off-by: Scott Ellis <scott@jumpnowtek.com>
7 years agoconfig: Add CONFIG_BMP280 (and CONFIG_BMP280_I2C)
Phil Elwell [Sun, 23 Apr 2017 18:38:06 +0000 (19:38 +0100)]
config: Add CONFIG_BMP280 (and CONFIG_BMP280_I2C)

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoBCM270X_DT: Add bme280 and bmp180 to i2c-sensor overlay
Phil Elwell [Sun, 23 Apr 2017 18:36:53 +0000 (19:36 +0100)]
BCM270X_DT: Add bme280 and bmp180 to i2c-sensor overlay

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agosmsc95xx: Use skb_cow_head to deal with cloned skbs
James Hughes [Wed, 19 Apr 2017 10:13:40 +0000 (11:13 +0100)]
smsc95xx: Use skb_cow_head to deal with cloned skbs

The driver was failing to check that the SKB wasn't cloned
before adding checksum data.
Replace existing handling to extend/copy the header buffer
with skb_cow_head.

Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
Acked-by: Eric Dumazet <edumazet@google.com>
Acked-by: Woojung Huh <Woojung.Huh@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
7 years agopanel-raspberrypi-touchscreen: Fix NULL deref if probe order goes wrong.
Eric Anholt [Thu, 13 Apr 2017 00:52:56 +0000 (17:52 -0700)]
panel-raspberrypi-touchscreen: Fix NULL deref if probe order goes wrong.

If the i2c driver hadn't pobed before the panel driver probes, then
the client would be NULL but we were looking for an ERR_PTR in the
error case.

Signed-off-by: Eric Anholt <eric@anholt.net>
7 years agoARM: dts: bcm283x: Add HDMI audio related properties
Boris Brezillon [Thu, 2 Feb 2017 10:37:36 +0000 (11:37 +0100)]
ARM: dts: bcm283x: Add HDMI audio related properties

Add the dmas and dma-names properties to support HDMI audio.

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

7 years agodrm/vc4: Add HDMI audio support
Eric Anholt [Mon, 27 Feb 2017 20:28:02 +0000 (12:28 -0800)]
drm/vc4: Add HDMI audio support

The HDMI encoder IP embeds all needed blocks to output audio, with a
custom DAI called MAI moving audio between the two parts of the HDMI
core.  This driver now exposes a sound card to let users stream audio
to their display.

Using the hdmi-codec driver has been considered here, but MAI meant
having to significantly rework hdmi-codec, and it would have left
little shared code with the I2S mode anyway.

The encoder requires that the audio be SPDIF-formatted frames only,
which alsalib will format-convert for us.

This patch is the combined work of Eric Anholt (initial register setup
with a separate dmaengine driver and using simple-audio-card) and
Boris Brezillon (moving it all into HDMI, massive debug to get it
actually working), and which Eric has the permission to release.

v2: Drop "-audio" from sound card name, since that's already implied
    (suggestion by Boris)

Signed-off-by: Eric Anholt <eric@anholt.net>
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170227202803.12855-2-eric@anholt.net
7 years agoRevert "drm/vc4: Verify at boot that CMA doesn't cross a 256MB boundary."
Eric Anholt [Thu, 30 Mar 2017 17:23:27 +0000 (10:23 -0700)]
Revert "drm/vc4: Verify at boot that CMA doesn't cross a 256MB boundary."

This reverts commit 016c804fa69381bd23a1a13cba08a3c4557fcdff.  The
restriction was lifted by the previous commit.

7 years agodrm/vc4: Allow using more than 256MB of CMA memory.
Eric Anholt [Tue, 7 Mar 2017 22:51:03 +0000 (14:51 -0800)]
drm/vc4: Allow using more than 256MB of CMA memory.

Until now, we've had to limit Raspberry Pi to 256MB of CMA memory to
keep from triggering the hardware addressing bug between of the tile
binner of the tile alloc memory (where the top 4 bits come from the
tile state data array's address).

To work around that and allow more memory to be reserved for graphics,
allocate a single BO to store tile state data arrays and tile
alloc/overflow memory while the GPU is active, and make sure that that
one BO doesn't happen to cross a 256MB boundary.  With that in place,
we can allocate textures and shaders anywhere in system memory (still
contiguous, of course).

Signed-off-by: Eric Anholt <eric@anholt.net>
7 years agoBCM2708: Add Raspberry Pi TV HAT Device Tree Support
Yasunari Takiguchi [Thu, 22 Dec 2016 06:34:12 +0000 (15:34 +0900)]
BCM2708: Add Raspberry Pi TV HAT Device Tree Support

This is an EXAMPLE CODE of Raspberry Pi TV HAT device tree overlay.
Although this is not a part of our release code, it has been used to verify
CXD2880 device driver with TV HAT.

Add the following line to /boot/config.txt to enable TV HAT:

dtoverlay=rpi-tv

Reboot Raspberry Pi and check the existance of /proc/device-tree/soc/spi@7e204000/cxd2880@0.
If exists, the installation is successful.  you should be able to find the following three files.
/dev/dvb/adapter0/frontend0
/dev/dvb/adapter0/demux0
/dev/dvb/adapter0/dvr0

Signed-off-by: Yasunari Takiguchi <Yasunari.Takiguchi@sony.com>
Signed-off-by: Masayuki Yamamoto <Masayuki.Yamamoto@sony.com>
Signed-off-by: Hideki Nozawa <Hideki.Nozawa@sony.com>
Signed-off-by: Kota Yonezawa <Kota.Yonezawa@sony.com>
Signed-off-by: Toshihiko Matsumoto <Toshihiko.Matsumoto@sony.com>
Signed-off-by: Satoshi Watanabe <Satoshi.C.Watanabe@sony.com>
7 years agoThis is the driver for Sony CXD2880 DVB-T2/T tuner + demodulator.
Yasunari Takiguchi [Fri, 14 Apr 2017 09:43:57 +0000 (10:43 +0100)]
This is the driver for Sony CXD2880 DVB-T2/T tuner + demodulator.
It includes the CXD2880 driver and the CXD2880 SPI adapter.
The current CXD2880 driver version is 1.4.1 - 1.0.1 released
on April 13, 2017.

Signed-off-by: Yasunari Takiguchi <Yasunari.Takiguchi@sony.com>
Signed-off-by: Masayuki Yamamoto <Masayuki.Yamamoto@sony.com>
Signed-off-by: Hideki Nozawa <Hideki.Nozawa@sony.com>
Signed-off-by: Kota Yonezawa <Kota.Yonezawa@sony.com>
Signed-off-by: Toshihiko Matsumoto <Toshihiko.Matsumoto@sony.com>
Signed-off-by: Satoshi Watanabe <Satoshi.C.Watanabe@sony.com>
7 years agoAudioinjector octo : Make the playback and capture symmetric
Matt Flax [Tue, 4 Apr 2017 09:23:04 +0000 (19:23 +1000)]
Audioinjector octo : Make the playback and capture symmetric

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

7 years agoAudioinjector : make the octo and pi sound cards have different driver names
Matt Flax [Tue, 4 Apr 2017 09:20:59 +0000 (19:20 +1000)]
Audioinjector : make the octo and pi sound cards have different driver names

This patch gives the audioinjector octo and pi soundcards different driver
names. This allows both the be loaded without clashing.

7 years agoAdd clock changes and mute gpios (#1938)
BabuSubashChandar [Fri, 31 Mar 2017 19:16:52 +0000 (00:46 +0530)]
Add clock changes and mute gpios (#1938)

Also improve code style and adhere to ALSA coding conventions.

Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
Reviewed-by: Vijay Kumar B. <vijaykumar@zilogic.com>
Reviewed-by: Raashid Muhammed <raashidmuhammed@zilogic.com>
7 years agoAdd support for new clock rate and mute gpios.
BabuSubashChandar C [Thu, 30 Mar 2017 14:47:27 +0000 (20:17 +0530)]
Add support for new clock rate and mute gpios.

Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
Reviewed-by: Deepak <deepak@zilogic.com>
Reviewed-by: BabuSubashChandar <babusubashchandar@zilogic.com>
7 years agoAudioinjector Octo : add extra sample rates, fix rst and use bcm270x regs
Matt Flax [Thu, 30 Mar 2017 00:43:57 +0000 (11:43 +1100)]
Audioinjector Octo : add extra sample rates, fix rst and use bcm270x regs

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

This patch also replaces the regulators in the device tree overlay with
the ones declared in bcm270x.dtsi include file.

This patch also adds an extra codec reset and delay on probe.

7 years agoleds-gpio: Remove stray assignment to brightness_set
Phil Elwell [Tue, 28 Mar 2017 16:41:30 +0000 (17:41 +0100)]
leds-gpio: Remove stray assignment to brightness_set

The brightness_set method is intended for use cases that must not
block, and can only be used if the GPIO provider can never sleep.
Remove an accidental initialisation (a copy-and-paste error) that
sets it regardless, which has been seen to cause crashes with the
gpio expander driver.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoBCM270X_DT: Allow multiple instances of w1-gpio overlays
Phil Elwell [Tue, 28 Mar 2017 13:22:20 +0000 (14:22 +0100)]
BCM270X_DT: Allow multiple instances of w1-gpio overlays

Upcoming firmware will modify the address portion of node names when
their "reg" property is written by a dtparam. Modify the w1-gpio
overlays to write the gpiopin parameter value to "reg" properties, so
that multiple instances can be loaded simultaneously.

Note: The value of the "address" is unimportant - the w1 subsystem
assigns instance numbers to buses sequentially from 1, and it is
not necessary to know which bus a device is on in order to find it.

7 years ago Add support for Allo Boss DAC add-on board for Raspberry Pi. (#1924)
BabuSubashChandar [Tue, 28 Mar 2017 14:34:42 +0000 (20:04 +0530)]
 Add support for Allo Boss DAC add-on board for Raspberry Pi.  (#1924)

Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
Reviewed-by: Deepak <deepak@zilogic.com>
Reviewed-by: BabuSubashChandar <babusubashchandar@zilogic.com>
7 years agoAdd support for Allo Piano DAC 2.1 plus add-on board for Raspberry Pi.
Raashid Muhammed [Mon, 27 Mar 2017 07:05:00 +0000 (12:35 +0530)]
Add support for Allo Piano DAC 2.1 plus add-on board for Raspberry Pi.

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

Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
Reviewed-by: Vijay Kumar B. <vijaykumar@zilogic.com>
Reviewed-by: Raashid Muhammed <raashidmuhammed@zilogic.com>
7 years agoDriver support for Google voiceHAT soundcard.
Peter Malkin [Mon, 27 Mar 2017 23:38:21 +0000 (16:38 -0700)]
Driver support for Google voiceHAT soundcard.

7 years agoAudioInjector Octo : Consolidate sample rates and add a codec reset.
Matt Flax [Mon, 27 Mar 2017 11:27:26 +0000 (22:27 +1100)]
AudioInjector Octo : Consolidate sample rates and add a codec reset.

This patch consolidates the sample rates which the audioinjector.net octo
sound card can use. The consolidation of sample rates are due to the
capabilities of the cs42448 codec.

This codec also requires a hard reset using the GPIO pin 5 upon probe.

7 years agoAudioinjector addons dts : add reset and regulators for the Octo product.
Matt Flax [Mon, 27 Mar 2017 11:26:49 +0000 (22:26 +1100)]
Audioinjector addons dts : add reset and regulators for the Octo product.

This patch adds a reset GPIO for the AudioInjector.net octo sound card.
This patch adds missing regulators for the cs42448 codec.

7 years agoBCM270X_DT: Enable AUX interrupt controller in DT
Phil Elwell [Thu, 23 Mar 2017 17:08:44 +0000 (17:08 +0000)]
BCM270X_DT: Enable AUX interrupt controller in DT

See: https://github.com/raspberrypi/linux/issues/1484
     https://github.com/raspberrypi/linux/issues/1573

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agobcm2835-aux: Add aux interrupt controller
Phil Elwell [Thu, 23 Mar 2017 16:34:46 +0000 (16:34 +0000)]
bcm2835-aux: Add aux interrupt controller

The AUX block has a shared interrupt line with a register indicating
which devices have active IRQs. Expose this as a nested interrupt
controller to avoid sharing problems.

See: https://github.com/raspberrypi/linux/issues/1484
     https://github.com/raspberrypi/linux/issues/1573

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoASoC: Add prompt for ICS43432 codec
Phil Elwell [Thu, 23 Mar 2017 10:06:56 +0000 (10:06 +0000)]
ASoC: Add prompt for ICS43432 codec

Without a prompt string, a config setting can't be included in a
defconfig. Give CONFIG_SND_SOC_ICS43432 a prompt so that Pi soundcards
can use the driver.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoconfig: Make spidev a loadable module
Phil Elwell [Fri, 17 Mar 2017 12:24:41 +0000 (12:24 +0000)]
config: Make spidev a loadable module

spidev isn't required early in the boot process, and not all users
need it (spi_bcm2835 is a module), so make it a loadable module.

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agobcm2835-camera: Correct port_parameter_get return value
Dave Stevenson [Wed, 15 Mar 2017 11:12:40 +0000 (11:12 +0000)]
bcm2835-camera: Correct port_parameter_get return value

The API for port_parameter_get() requires that the
filled length is returned, or if insufficient space
that the required space is returned.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
7 years agobcm2835-gpio-exp: Copy/paste error adding base twice
Dave Stevenson [Tue, 14 Mar 2017 14:23:06 +0000 (14:23 +0000)]
bcm2835-gpio-exp: Copy/paste error adding base twice

brcmexp_gpio_set was adding gpio->gc.base to the offset
twice, so passing an invalid number to the mailbox service.
The firmware treated it modulo-8 anyway, but was logging an
assert every time.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
7 years agoBCM270X_DT: Add lm75 to i2c-sensor overlay
Phil Elwell [Tue, 14 Mar 2017 09:10:05 +0000 (09:10 +0000)]
BCM270X_DT: Add lm75 to i2c-sensor overlay

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

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoBCM270X_DT: Invert Pi3 power LED to match fw change
Dave Stevenson [Tue, 7 Mar 2017 12:18:20 +0000 (12:18 +0000)]
BCM270X_DT: Invert Pi3 power LED to match fw change

Firmware expgpio driver reworked due to complaint over
hotplug detect.
Requires power LED to change sense as firmware is no longer
inverting the read value.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
7 years agortlwifi: Fix alignment issues
Ping-Ke Shih [Wed, 28 Dec 2016 21:40:04 +0000 (15:40 -0600)]
rtlwifi: Fix alignment issues

commit 40b368af4b750863b2cb66a3a9513241db2f0793 upstream.

The addresses of Wlan NIC registers are natural alignment, but some
drivers have bugs. These are evident on platforms that need natural
alignment to access registers.  This change contains the following:
 1. Function _rtl8821ae_dbi_read() is used to read one byte from DBI,
    thus it should use rtl_read_byte().
 2. Register 0x4C7 of 8192ee is single byte.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agoDrivers: hv: util: Backup: Fix a rescind processing issue
K. Y. Srinivasan [Fri, 23 Dec 2016 00:54:03 +0000 (16:54 -0800)]
Drivers: hv: util: Backup: Fix a rescind processing issue

commit d77044d142e960f7b5f814a91ecb8bcf86aa552c upstream.

VSS may use a char device to support the communication between
the user level daemon and the driver. When the VSS channel is rescinded
we need to make sure that the char device is fully cleaned up before
we can process a new VSS offer from the host. Implement this logic.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agoDrivers: hv: util: Fcopy: Fix a rescind processing issue
K. Y. Srinivasan [Fri, 23 Dec 2016 00:54:02 +0000 (16:54 -0800)]
Drivers: hv: util: Fcopy: Fix a rescind processing issue

commit 20951c7535b5e6af46bc37b7142105f716df739c upstream.

Fcopy may use a char device to support the communication between
the user level daemon and the driver. When the Fcopy channel is rescinded
we need to make sure that the char device is fully cleaned up before
we can process a new Fcopy offer from the host. Implement this logic.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agoDrivers: hv: util: kvp: Fix a rescind processing issue
K. Y. Srinivasan [Fri, 23 Dec 2016 00:54:01 +0000 (16:54 -0800)]
Drivers: hv: util: kvp: Fix a rescind processing issue

commit 5a66fecbf6aa528e375cbebccb1061cc58d80c84 upstream.

KVP may use a char device to support the communication between
the user level daemon and the driver. When the KVP channel is rescinded
we need to make sure that the char device is fully cleaned up before
we can process a new KVP offer from the host. Implement this logic.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agoDrivers: hv: vmbus: Fix a rescind handling bug
K. Y. Srinivasan [Fri, 23 Dec 2016 00:54:00 +0000 (16:54 -0800)]
Drivers: hv: vmbus: Fix a rescind handling bug

commit ccb61f8a99e6c29df4fb96a65dad4fad740d5be9 upstream.

The host can rescind a channel that has been offered to the
guest and once the channel is rescinded, the host does not
respond to any requests on that channel. Deal with the case where
the guest may be blocked waiting for a response from the host.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agoconfig: Add RTL8XXXU wifi module
popcornmix [Sun, 5 Mar 2017 11:46:41 +0000 (11:46 +0000)]
config: Add RTL8XXXU wifi module

7 years agoMatch dwc2 device-tree fifo sizes to the hardware values.
John Greb [Wed, 8 Mar 2017 15:12:29 +0000 (15:12 +0000)]
Match dwc2 device-tree fifo sizes to the hardware values.

Since commit aa381a7259c3f53727bcaa8c5f9359e940a0e3fd was reverted with 3fa9538539ac737096c81f3315a14670b1609092 the g-tx-fifo-size array in the device-tree needs to match the preset values in the bcm2835.

Resolves https://github.com/raspberrypi/linux/issues/1876

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

We now create overlays as .dtbo files.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
7 years agobcm2835-v4l2: Fix buffer overflow problem
Dave Stevenson [Fri, 10 Mar 2017 14:43:15 +0000 (14:43 +0000)]
bcm2835-v4l2: Fix buffer overflow problem

https://github.com/raspberrypi/linux/issues/1447
port_parameter_get() failed to account for the header
(u32 id and u32 size) in the size before memcpying
the response into the response buffer, so overrunning
the provided buffer by 8 bytes.

Account for those bytes, and also a belt-and-braces
check to ensure we never copy more than *value_size
bytes into value.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
7 years agoASoC: bcm2835_i2s.c: relax the ch2 register setting for 8 channels
Matt Flax [Wed, 8 Mar 2017 10:13:24 +0000 (21:13 +1100)]
ASoC: bcm2835_i2s.c: relax the ch2 register setting for 8 channels

This patch allows ch2 registers to be set for 8 channels of audio.

7 years agoAdd support for the AudioInjector.net Octo sound card
Matt Flax [Wed, 8 Mar 2017 09:04:13 +0000 (20:04 +1100)]
Add support for the AudioInjector.net Octo sound card

7 years agopanel-raspberrypi-touchscreen: Round up clk rate to fix DSI panel.
Eric Anholt [Mon, 6 Mar 2017 20:17:16 +0000 (12:17 -0800)]
panel-raspberrypi-touchscreen: Round up clk rate to fix DSI panel.

Commit 488f9bc8e3def93e0baef53cee2026c2cb0d8956 slightly increased the
reported rate of PLLD, so the clk driver decided that PLLD/3/8 was now
higher than our requested pixel clock rate and rejected it in favor of
PLLD/4/8, which then ran the pixel clock way out of spec.

By bumping the requested clock rate just slightly, we get back to
PLLD/3/8 like we wanted and the panel displays content again.

Signed-off-by: Eric Anholt <eric@anholt.net>
7 years agodrm/vc4: Don't wait for vblank when updating the cursor
Michael Zoran [Fri, 24 Feb 2017 01:54:31 +0000 (17:54 -0800)]
drm/vc4: Don't wait for vblank when updating the cursor

Commonly used desktop environments such as xfce4 and gnome
on debian sid can flood the graphics drivers with cursor
updates.  Because the current implementation is waiting
for a vblank between cursor updates, this will cause the
display to hang for a long time since a typical refresh
rate is only 60Hz.

This is unnecessary and unexpected by user mode software,
so simply swap out the cursor frame buffer without waiting.

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
7 years agoconfig: Add CONFIG_CRYPTO_LZ4
Phil Elwell [Tue, 7 Mar 2017 19:48:23 +0000 (19:48 +0000)]
config: Add CONFIG_CRYPTO_LZ4

Enabling this options allows LZ4 memory compression.

Fixes: https://github.com/raspberrypi/linux/issues/1875
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoclk-bcm2835: Read max core clock from firmware
Phil Elwell [Mon, 6 Mar 2017 09:06:18 +0000 (09:06 +0000)]
clk-bcm2835: Read max core clock from firmware

The VPU is responsible for managing the core clock, usually under
direction from the bcm2835-cpufreq driver but not via the clk-bcm2835
driver. Since the core frequency can change without warning, it is
safer to report the maximum clock rate to users of the core clock -
I2C, SPI and the mini UART - to err on the safe side when calculating
clock divisors.

If the DT node for the clock driver includes a reference to the
firmware node, use the firmware API to query the maximum core clock
instead of reading the divider registers.

Prior to this patch, a "100KHz" I2C bus was sometimes clocked at about
160KHz. In particular, switching to the 4.9 kernel was likely to break
SenseHAT usage on a Pi3.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoBCM270X_DT: Add bcm2708-rpi-0-w.dts
Phil Elwell [Tue, 24 May 2016 15:30:05 +0000 (16:30 +0100)]
BCM270X_DT: Add bcm2708-rpi-0-w.dts

Add DT support for the Pi Zero W. N.B. It will not be loaded
automatically without a corresponding change to the firmware.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agobcm2835-gpio-exp: Driver for GPIO expander via mailbox service
Dave Stevenson [Mon, 20 Feb 2017 17:01:21 +0000 (17:01 +0000)]
bcm2835-gpio-exp: Driver for GPIO expander via mailbox service

Pi3 and Compute Module 3 have a GPIO expander that the
VPU communicates with.
There is a mailbox service that now allows control of this
expander, so add a kernel driver that can make use of it.

Pwr_led node added to device-tree for Pi3.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
7 years agoBCM2835-V4L2: Correctly denote key frames in encoded data
Dave Stevenson [Mon, 13 Feb 2017 13:11:41 +0000 (13:11 +0000)]
BCM2835-V4L2: Correctly denote key frames in encoded data

Forward MMAL key frame flags to the V4L2 buffers.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
7 years agoBCM2835-V4L2: Ensure H264 header bytes get a sensible timestamp
Dave Stevenson [Mon, 13 Feb 2017 11:10:50 +0000 (11:10 +0000)]
BCM2835-V4L2: Ensure H264 header bytes get a sensible timestamp

H264 header come off VC with 0 timestamps, which means they get a
strange timestamp when processed with VC/kernel start times,
particularly if used with the inline header option.
Remember the last frame timestamp and use that if set, or otherwise
use the kernel start time.

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

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
7 years agoamba_pl011: Round input clock up
Phil Elwell [Wed, 1 Mar 2017 16:07:39 +0000 (16:07 +0000)]
amba_pl011: Round input clock up

The UART clock is initialised to be as close to the requested
frequency as possible without exceeding it. Now that there is a
clock manager that returns the actual frequencies, an expected
48MHz clock is reported as 47999625. If the requested baudrate
== requested clock/16, there is no headroom and the slight
reduction in actual clock rate results in failure.

Detect cases where it looks like a "round" clock was chosen and
adjust the reported clock to match that "round" value. As the
code comment says:

/*
 * If increasing a clock by less than 0.1% changes it
 * from ..999.. to ..000.., round up.
 */

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoclk-bcm2835: Correct the prediv logic
Phil Elwell [Wed, 1 Mar 2017 16:06:53 +0000 (16:06 +0000)]
clk-bcm2835: Correct the prediv logic

If a clock has the prediv flag set, both the integer and fractional
parts must be scaled when calculating the resulting frequency.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoAdd overlay for ads1115 ADCs (#1864)
Scott Ellis [Wed, 1 Mar 2017 12:22:24 +0000 (07:22 -0500)]
Add overlay for ads1115 ADCs (#1864)

7 years agoAdd support for Fe-Pi audio sound card. (#1867)
Fe-Pi [Wed, 1 Mar 2017 11:42:43 +0000 (04:42 -0700)]
Add support for Fe-Pi audio sound card. (#1867)

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

Signed-off-by: Henry Kupis <fe-pi@cox.net>
7 years agoSQUASH: Add LOCO-V2 overlay from last commit
Phil Elwell [Sun, 26 Feb 2017 01:13:02 +0000 (01:13 +0000)]
SQUASH: Add LOCO-V2 overlay from last commit

7 years agosound: Support for Dion Audio LOCO-V2 DAC-AMP HAT
Miquel [Fri, 24 Feb 2017 19:51:06 +0000 (20:51 +0100)]
sound: Support for Dion Audio LOCO-V2 DAC-AMP HAT

Signed-off-by: Miquel Blauw <info@dionaudio.nl>
7 years agoconfig: add slcan kernel module
popcornmix [Fri, 27 Jan 2017 18:49:30 +0000 (18:49 +0000)]
config: add slcan kernel module

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

7 years agoAdd ads1015 driver to config
Scott Ellis [Thu, 23 Feb 2017 16:56:20 +0000 (11:56 -0500)]
Add ads1015 driver to config

7 years agoclk-bcm2835: Add claim-clocks property
Phil Elwell [Mon, 13 Feb 2017 17:20:08 +0000 (17:20 +0000)]
clk-bcm2835: Add claim-clocks property

The claim-clocks property can be used to prevent PLLs and dividers
from being marked as critical. It contains a vector of clock IDs,
as defined by dt-bindings/clock/bcm2835.h.

Use this mechanism to claim PLLD_DSI0, PLLD_DSI1, PLLH_AUX and
PLLH_PIX for the vc4_kms_v3d driver.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoclk-bcm2835: Mark used PLLs and dividers CRITICAL
Phil Elwell [Mon, 13 Feb 2017 17:20:08 +0000 (17:20 +0000)]
clk-bcm2835: Mark used PLLs and dividers CRITICAL

The VPU configures and relies on several PLLs and dividers. Mark all
enabled dividers and their PLLs as CRITICAL to prevent the kernel from
switching them off.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agobrcmfmac: Mute expected startup 'errors'
Phil Elwell [Fri, 17 Feb 2017 15:26:13 +0000 (15:26 +0000)]
brcmfmac: Mute expected startup 'errors'

The brcmfmac WiFi driver always complains about the '00' country code
and the firmware version is reported as an error. Modify the driver to
ignore '00' silently and display firmware version at INFO level.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agoBCM270X_DT: Add SMSC ethernet controller to DT
Phil Elwell [Fri, 17 Feb 2017 09:47:11 +0000 (09:47 +0000)]
BCM270X_DT: Add SMSC ethernet controller to DT

With an ethernet node in the DT, a suitable firmware can populate the
local-mac-address property, removing the need for a downstream patch
to the driver to read its MAC address from a module parameter.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7 years agodrm/vc4: Verify at boot that CMA doesn't cross a 256MB boundary.
Eric Anholt [Mon, 12 Oct 2015 15:58:08 +0000 (08:58 -0700)]
drm/vc4: Verify at boot that CMA doesn't cross a 256MB boundary.

I've seen lots of users cranking CMA up higher, so throw an error if
they do.

Signed-off-by: Eric Anholt <eric@anholt.net>
7 years agodrm/vc4: Fix OOPSes from trying to cache a partially constructed BO.
Eric Anholt [Thu, 9 Feb 2017 17:23:34 +0000 (09:23 -0800)]
drm/vc4: Fix OOPSes from trying to cache a partially constructed BO.

If a CMA allocation failed, the partially constructed BO would be
unreferenced through the normal path, and we might choose to put it in
the BO cache.  If we then reused it before it expired from the cache,
the kernel would OOPS.

Signed-off-by: Eric Anholt <eric@anholt.net>
Fixes: c826a6e10644 ("drm/vc4: Add a BO cache.")
7 years agodrm/vc4: Fulfill user BO creation requests from the kernel BO cache.
Eric Anholt [Wed, 8 Feb 2017 23:00:54 +0000 (15:00 -0800)]
drm/vc4: Fulfill user BO creation requests from the kernel BO cache.

The from_cache flag was actually "the BO is invisible to userspace",
so we can repurpose to just zero out a cached BO and return it to
userspace.

Improves wall time for a loop of 5 glsl-algebraic-add-add-1 by
-1.44989% +/- 0.862891% (n=28, 1 outlier removed from each that
appeared to be other system noise)

Note that there's an intel-gpu-tools test to check for the proper
zeroing behavior here, which we continue to pass.

Signed-off-by: Eric Anholt <eric@anholt.net>
7 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>
7 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>
7 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>
7 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>
7 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)

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

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

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

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

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

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

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