- Feb 25, 2020
-
-
Phil Elwell authored
Some combinations of Pi 4Bs and Ethernet switches don't reliably get a DCHP-assigned IP address, leaving the unit with a self=assigned 169.254 address. In the failure case, the Pi is left able to receive packets but not send them, suggesting that the MAC<->PHY link is getting into a bad state. It has been found empirically that skipping a reset step by the genet driver prevents the failures. No downsides have been discovered yet, and unlike the forced renegotiation it doesn't increase the time to get an IP address, so the workaround is enabled by default; add genet.skip_umac_reset=n to the command line to disable it. See: https://github.com/raspberrypi/linux/issues/3108 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
-
Dave Stevenson authored
vc4_crtc_consume_event wasn't checking crtc->state->event was set before dereferencing it, leading to an OOPS. Fixes "a5b534bb drm/vc4: Resolve the vblank warnings on mode switching" Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
The handling of format changed events incorrectly set bytesperline to the cropped width, which ignored padding and formats with more than 8bpp. Fix these. Reported by: zillevdr <zillevdr@gmx.de> Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
Adds some more useful logging during format changed events and s_fmt. Reported by: zillevdr <zillevdr@gmx.de> Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
"89d13761 drm/vc4: Add support for margins to fkms" removed the requirement for having the mode structure from vc4_plane_to_mb, but didn't remove it as a local to the function, causing a compiler warning. Remove the unused variable. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
The details over when and how a driver is to service the vblank events are sketchy, and the fkms driver was triggering a kernel warning every time the crtc was enabled or disabled. Copy the event handling as used by the vc4-kms driver slightly more closely, and we avoid the warnings. https://github.com/raspberrypi/linux/issues/3020 Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
James Hughes authored
For generic ALSA, all you need is the bcm2835.h change, but have also added structures for IEC958 HDMI. Not sure how to test those.
-
Chen-Yu Tsai authored
Instead of filling in the struct v4l2_capability device_caps field, fill in the struct video_device device_caps field. That way the V4L2 core knows what the capabilities of the video device are. This is similar to a cleanup series by Hans Verkuil [1]. [1] https://www.spinics.net/lists/linux-media/msg153313.html Signed-off-by: Chen-Yu Tsai <wens@csie.org>
-
Chen-Yu Tsai authored
The stateful decoder specification shows an optional step for retrieving the miminum number of capture buffers required for the decoder to proceed. While not a required parameter, having it makes some applications happy. bcm2835-codec is a little different from other decoder implementations in that there is an intermediate format conversion between the hardware and V4L2 buffers. The number of capture buffers required is therefore independent of the stream and DPB etc. There are plans to remove the conversion, but it requires a fair amount of rework within the firmware. Until that is done, simply return a value of 1. Signed-off-by: Chen-Yu Tsai <wens@csie.org>
-
Chen-Yu Tsai authored
There are two APIs for mem2mem devices, the older single-planar API and the newer multi-planar one. Without making things overly complex, the driver can only support one or the other. However the userspace libv4l2 library has a plugin that allows multi-planar API devices to service single-planar consumers. Chromium supports the multi-planar API exclusively, though this is currently limited to ChromiumOS. It would be possible to add support for generic Linux. Switching to the multi-planar API would allow usage of both APIs from userspace. Signed-off-by: Chen-Yu Tsai <wens@csie.org>
-
Dave Stevenson authored
Now that the TV margins are properly parsed and filled into drm_cmdline_mode, we just need to initialise the first state at reset to get those values and start using them. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
Some HDMI monitors do not abide by the full or limited (16-235) range RGB flags in the AVI infoframe. This can result in images looking washed out (if given limited and interpreting as full), or detail disappearing at the extremes (given full and interpreting as limited). Copy the Intel i915 driver's approach of adding an override property ("Broadcast RGB") to force one mode or the other. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Jonathan Bell authored
These wireless mouse/keyboard combo remote control devices specify multiple "wheel" events in their report descriptors. The wheel events are incorrectly defined and apparently map to accelerometer data, leading to spurious mouse scroll events being generated at an extreme rate when the device is moved. As a workaround, use HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE to mask feeding the extra wheel events to the input subsystem. See: https://github.com/raspberrypi/firmware/issues/1189 Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
-
Jonathan Bell authored
Based on the gpiomem driver, allow mapping of the decoder register spaces such that userspace can access control/status registers. This driver is intended for use with a custom ffmpeg backend accelerator prior to a v4l2 driver being written. Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> driver: char: rpivid: Destroy the legacy device on remove The legacy name support created a new device that was never destroyed. If the driver was unloaded and reloaded, it failed due to the device already existing. Fixes: "75f1d14c driver: char: rpivid - also support legacy name" Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> driver: char: rpivid: Clean up error handling use of ERR_PTR/IS_ERR The driver used an unnecessary intermediate void* variable so it only called ERR_PTR once to convert to the error value. Switch to converting as the error arises to remove these intermediate variables. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> driver: char: rpivid: Add error handling to the legacy device load The return value from device_create for the legacy device was never checked or handled. Add the required error handling. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> driver: char: rpivid: Fix coding style whitespace issues. Makes checkpatch happier. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> driver: char: rpimem: Add SPDX licence header. Stops checkpatch complaining. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> driver: char: rpivid: Fix access to freed memory The error path during probe frees the private memory block, and then promptly dereferences it to log an error message. Use the base device instead of the pointer to it in the private structure. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
-
James Hughes authored
If an errant interrupt flag was received from a non-existent display, a NULL pointer access was made. Protect against this by checking if a second display is present prior to checking the interrupt flags.
-
Phil Elwell authored
Overlays are unable to remove properties in the base DTB, but they can overwrite them. Allow a present but empty 'dmas' property to also disable the HDMI audio interface. See: https://github.com/raspberrypi/linux/issues/2489 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
-
Dave Stevenson authored
The compiler is warning that default_zpos can be used uninitialised as there is no default case to catch all plane types. No other plane types should ever be presented to vc4_fkms_plane_init, but add a default case regardless. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
Allows for overscan to be configured under FKMS. NB This is rescaling the planes, not reducing the size of the display mode. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
More for completeness than need, but use drm_mode_vrefresh to compute the vrefresh value, and pass that down to the firmware on mode set. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
Allow custom HDMI modes to be specified from config.txt, and these then override EDID parsing. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
yaroslavros authored
Ported pcie-brcmstb bounce buffer implementation to ARM64. This enables full 4G RAM usage on Raspberry Pi in 64-bit mode. Signed-off-by: Yaroslav Rosomakho <yaroslavros@gmail.com> pcie-brcmstb: Correct SoC name The Pi 4 SoC is called BCM2711, not BCM2838. Fixes: "bcm2835-dma: Add proper 40-bit DMA support" Fixes: "Ported pcie-brcmstb bounce buffer implementation to ARM64." Signed-off-by: Phil Elwell <phil@raspberrypi.com> pcie-brcmstb-bounce64.c: dev_err() -> dev_info() for info messages "dmabounce: initialised" is not an error, so do not log it as such. Prevents screen polution on OS with "quiet" as kernel parameter. Closes #3266 pcie-brcmstb: Remove brcm_to_*, add pcie_to_dma40 The DMA framework performs the necessary address conversions for the common cases based on the dma-ranges DT property. brcm_to_pci and brcm_to_cpu were probably designed for non-DT use cases, something which isn't an issue for 2711. This second level of mapping causes breakage with a non-identity PCIe<->system address mapping, so remove it completely. The non-identity mapping also broke the DMA40 support, so add back a simple translation from PCIe to sys addresses. arm64 builds also require a wider coherent_dma_mask, otherwise the bounce buffer allocation is rejected. Signed-off-by: Phil Elwell <phil@raspberrypi.org>
-
Eric Anholt authored
My various attempts at re-enabling runtime PM have failed, so just crank the clock down when V3D is idle to reduce power consumption. Signed-off-by: Eric Anholt <eric@anholt.net>
-
Eric Anholt authored
Something is still unstable -- on starting a new glxgears from an idle X11, I get an MMU violation in high addresses. The CTS also failed quite quickly. With this, CTS progresses for an hour before OOMing (allocating some big buffers when my board only has 600MB available to Linux) Signed-off-by: Eric Anholt <eric@anholt.net>
-
Hui Wang authored
If we build the kernel with "-O=$non-src-folder", this driver will introdcue a building error because of the header's location. Signed-off-by: Hui Wang <hui.wang@canonical.com>
-
Phil Elwell authored
Firmware KMS uses a mixture of VC4 processing and dedicated code. The load tracking support in VC4 assumes it is dealing with vc4_plane_state objects when up-casting with container_of, but FKMS uses unadorned drm_plane_state structures causing the VC4 code to read off the end into random portions of memory. Work around the problem in a minimally- invasive way by over-allocating the FKMS plane state structures to be large enough to contain a vc4_plane_state, filling the remainder with zeroes. Signed-off-by: Phil Elwell <phil@raspberrypi.org>
-
Phil Elwell authored
A change to arm_get_dma_map_ops has stopped get_dma_ops from working on the root complex, causing an error to be logged. However, there is no need to override the DMA ops in that case, so skip it and eliminate the error message. Signed-off-by: Phil Elwell <phil@raspberrypi.org>
-
popcornmix authored
clk_desc_array[BCM2835_PLLB] doesn't exist so we dereference null when iterating Signed-off-by: popcornmix <popcornmix@gmail.com>
-
Marek Behún authored
The vc04_services Makefiles do not respect the O=path argument correctly: include paths in CFLAGS are given relatively to object path, not source path. Compiling in a separate directory yields #include errors. Signed-off-by: Marek Behún <marek.behun@nic.cz>
-
Andrei Gherzan authored
On RaspberryPi, only the first 1Gb can be used for DMA[1]. [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2019-July/665986.html Signed-off-by: Andrei Gherzan <andrei@balena.io>
-
Phil Elwell authored
The BCM2835 I2C blocks have a register to set the clock-stretch timeout - how long the device is allowed to hold SCL low - in bus cycles. The current driver doesn't write to the register, therefore the default value of 64 cycles is being used for all devices. Set the timeout to the value recommended for SMBus - 35ms. See: https://github.com/raspberrypi/linux/issues/3064 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
-
Jonathan Bell authored
Seen on a VLI VL805 PCIe to USB controller. For non-stream endpoints at least, if the xHC halts on a particular TRB due to an error then the DCS field in the Out Endpoint Context maintained by the hardware is not updated with the current cycle state. Using the quirk XHCI_EP_CTX_BROKEN_DCS and instead fetch the DCS bit from the TRB that the xHC stopped on. See: https://github.com/raspberrypi/linux/issues/3060 Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
-
Dave Stevenson authored
Adds signalling for BT601/709/2020, and limited/full range (on BT601). Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Chris Miller authored
Signed-off-by: Chris G Miller <chris@creative-electronics.net>
-
Phil Elwell authored
An upstream commit to report HVS underruns causes VC4 in firmware KMS mode to cross into the HVS side, where it crashes due to a NULL hvs pointer. Make the underrun masking conditional on the hvs pointer being initialised. Fixes: 531a1b62 ("drm/vc4: Report HVS underrun errors") Signed-off-by: Phil Elwell <phil@raspberrypi.org>
-
Dave Stevenson authored
Selecting 1080p100 and 120 has very limited gain, but don't want to block VGA85 and similar. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
Incorrect masking was used in the switch for the modifier, therefore for SAND (which puts the column pitch in the modifier) it didn't match. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
Previously multiple displays were slaved off the same SMI interrupt, triggered by HVS channel 1 (HDMI0). This doesn't work if you only have a DPI or DSI screen (HVS channel 0), and gives slightly erroneous results with dual HDMI as the events for HDMI1 are incorrect. Use SMIDSW0 and SMIDSW1 registers to denote which display has triggered the vblank. Handling should be backwards compatible with older firmware. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
Firmware TMDS scrambling is now being correctly configured, so we can use it. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
The wrong vc_image formats were being checked for in the switch statement. Correct these. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-
Dave Stevenson authored
The max resolution had been increased from 2048 to 7680 for all platforms. This code is common with Pi0-3 which have a max render target for GL of 2048, therefore the increased resolution has to be conditional on the platform. Switch based on whether the bcm2835-v3d node is found, as that is not present on Pi4. (There is a potential configuration on Pi0-3 with no v3d, but this is very unlikely). Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
-