-
Notifications
You must be signed in to change notification settings - Fork 5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Genet jumbo frame support #5534
Draft
6by9
wants to merge
578
commits into
raspberrypi:rpi-6.4.y
Choose a base branch
from
6by9:rpi-6.4.y-genet
base: rpi-6.4.y
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Tested on Raspberry Pi running libcamera. Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
… space RAW color spaces are more usually reported as having full range quantization. Tested using libcamera. Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
The driver was making big assumptions about the source device using pad 0 and 1, which doesn't follow for more complex devices where Unicam's source device may be a sink device for something else. Read the pad numbers through media controller, and reference them appropriately. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Adds Media Controller API support for more complex pipelines. libcamera is about to switch to using this mechanism for configuring sensors. This can be enabled by either a module parameter, or device tree. Various functions have been moved to group video-centric and mc-centric functions together. Based on a similar conversion done to ti-vpe. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> media: bcm2835-unicam: Fixup for 5.18 and new get_mbus_config struct The number of active CSI2 data lanes has moved within the struct v4l2_mbus_config used by the get_mbus_config API call. Update the driver to match the changes in mainline. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Gergo Koteles <soyer@irl.hu>
Signed-off-by: Gergo Koteles <soyer@irl.hu>
An unwanted side effect of enabling the BRCMDBG config setting is redefining brcmf_info to be brcmf_err. This can be alarming to users and makes it harder to spot real errors, so don't do it. See: raspberrypi#4663 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Add these missing V4L2 controls. Tested binned and full resolution modes in all four orientations using Raspberry Pi running libcamera. Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Add a second (identical) set of device nodes to allow concurrent use of the ISP hardware by another user. This change effectively creates a second state structure (struct bcm2835_isp_dev) to maintain independent state for the second user. Node and media entity names are appened with the instance index appropriately. Further users can be added by changing the BCM2835_ISP_NUM_INSTANCES define. Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Fix a possible division by 0 bug when setting up the mmal port for the stats port. Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
As happens occasionally, an upstream change has once again prevented spidev from being loaded via Device Tree. We now need "spidev" to be included in the new spi_device_id list, otherwise although the spidev driver gets loaded no /dev/spidev*.* entries will appear. Signed-off-by: Phil Elwell <phil@raspberrypi.com>
The ft5x06 is unreliable in sending touch up events, so some touch IDs can become stuck in the detected state. Ensure that IDs that are unreported by the controller are released. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
If a dummy buffer is still active on a frame start, it indicates that this frame will be dropped. The explicit logging helps users identify performance issues. Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
The I2C to the Atmel is very fussy, and locks up easily on Pi0-3 particularly on reads. The LCD power status is controlled solely by this driver, so rather than reading it back from the Atmel, use the cached status last set. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Register 0x02 in the FT5x06 is TD_STATUS containing the number of valid touch points being reported. Iterate over that number of points rather than all that are supported on the device. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
See: raspberrypi/firmware#1065 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
panel-dpi doesn't know the bit depth, so in the same way that DPI is guessed for the connector type, guess that it'll be 8bpc. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
The "panel-dpi" compatible string configures panel from device tree, but it doesn't provide any way of configuring the bus format (colour representation), nor does it populate it. Add a DT parameter "bus-format" that allows the MEDIA_BUS_FMT_xxx value to be specified from device tree. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
The VL805 controller can't cope with the TR Dequeue Pointer for an endpoint being set to a Link TRB. The hardware-maintained endpoint context ends up stuck at the address of the Link TRB, leading to erroneous ring expansion events whenever the enqueue pointer wraps to the dequeue position. If the search for the end of the current TD and ring cycle state lands on a Link TRB, move to the next segment. See: raspberrypi#3919 Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
Don't calculate space based on the number of TRBs in the current segment, as it's OK to wrap to the start (and flip the cycle state bit). Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
In anticipation of adjusting the number of utilised TRBs in a ring segment, add trbs_per_seg to struct xhci_ring and use this instead of a compile-time define. Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
The VL805 fetches up to 4 transfer TRBs at a time. TRB reads don't cross a 64B boundary, and if a TRB is fetched and is not on a 64B boundary, the read is sized up to the next 64B boundary. However the VL805 implements a readahead prefetch for TRBs on a transfer ring. This fetches the next 64B after any TRB read has happened. Near the end of a ring segment, the prefetcher can read the first 64B of the next page in physical memory and this is where the behaviour causes a bug. The controller does not tag reads with which endpoint they are for, so if the start of the next page is a ring segment used by a victim endpoint, and the victim endpoint is about to fetch TRBs from the start of the segment, the victim endpoint will read from the prefetched data and not perform a read to main memory. If the data is stale, the ring cycle state bit may not be correct and the endpoint will silently halt. Adjust trbs_per_seg for transfer rings allocated for this controller. See raspberrypi#4685 Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
The driver supported using GPIOs to control the shutdown line, but no regulator control. Add regulator hooks. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Not all implementations wire up the enable GPIO and may just tie it to a supply rail. Make it optional. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
bcm2835_isp_remove is called on an initialisation failure, but at that point the drvdata hasn't been set. This causes a crash when e.g. using the cutdown firmware (gpu_mem=16). Move platform_set_drvdata before the instance probing loop to avoid the problem. See: raspberrypi#4774 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
raspberrypi#4440 Upstream has added additional device specific controls, so the V4L2_CID_USER_BASE + 0x10e0 value that had been defined for use with the ISP has been taken by something else (and +0x10f0 has been used as well) Duplicate the use on V4L2_CID_USER_BASE + 0x10e0 so that userspace (libcamera) doesn't need to change. Once the driver is upstream, then we'll update libcamera to adopt the new value as it then won't change. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Use GitHubs issue form for bug reports. - modern look - user don't need to mess with given markdown parts while filling the issue template Setup config.yml for general questions and problems with the Raspbian distribution packages.
ISP device allocation is dynamic hence the locks too. struct mutex queue_lock is not initialized which result in bug. Fixing same by initializing it. [ 29.847138] INFO: trying to register non-static key. [ 29.847156] The code is fine but needs lockdep annotation, or maybe [ 29.847159] you didn't initialize this object before use? [ 29.847161] turning off the locking correctness validator. [ 29.847167] CPU: 1 PID: 343 Comm: v4l_id Tainted: G C 5.15.11-rt24-v8+ raspberrypi#8 [ 29.847187] Hardware name: Raspberry Pi 4 Model B Rev 1.4 (DT) [ 29.847194] Call trace: [ 29.847197] dump_backtrace+0x0/0x1b8 [ 29.847227] show_stack+0x20/0x30 [ 29.847240] dump_stack_lvl+0x8c/0xb8 [ 29.847254] dump_stack+0x18/0x34 [ 29.847263] register_lock_class+0x494/0x4a0 [ 29.847278] __lock_acquire+0x80/0x1680 [ 29.847289] lock_acquire+0x214/0x3a0 [ 29.847300] mutex_lock_nested+0x70/0xc8 [ 29.847312] _vb2_fop_release+0x3c/0xa8 [videobuf2_v4l2] [ 29.847346] vb2_fop_release+0x34/0x60 [videobuf2_v4l2] [ 29.847367] v4l2_release+0xc8/0x108 [videodev] [ 29.847453] __fput+0x8c/0x258 [ 29.847476] ____fput+0x18/0x28 [ 29.847487] task_work_run+0x98/0x180 [ 29.847502] do_notify_resume+0x228/0x3f8 [ 29.847515] el0_svc+0xec/0xf0 [ 29.847523] el0t_64_sync_handler+0x90/0xb8 [ 29.847531] el0t_64_sync+0x180/0x184 Signed-off-by: Padmanabha Srinivasaiah <treasure4paddy@gmail.com>
The Raspbery Pi PoE+ HAT exposes a fan controller and power supply status reporting via a single I2C address. Create an MFD device that allows loading of the relevant sub-drivers, with a shared I2C regmap. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
The firmware can only use I2C0 if the kernel isn't, therefore with libcamera and DRM using it the PoE HAT fan control needs to move to the kernel. Add the option for the driver to be created by the PoE HAT core MFD driver, and use the I2C regmap that provides to control fan functions. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
There is a problem with the current abort scheme when dma is blocked on a DREQ which prevents halting. This is triggered by SPI driver which aborts dma in this state and so leads to a halt timeout. Discussion with Broadcom suggests the sequence: CS.ACTIVE=0 while (CS.OUTSTANDING_TRANSACTIONS == 0) wait() DEBUG.RESET=1 should be safe on a dma40 channel. Unfortunately the non-dma40 channels don't have OUTSTANDING_TRANSACTIONS, so we need a more complicated scheme. We attempt to abort the channel, which will work if there is no blocked DREQ. It it times out, we can assume there is no AXI transfer in progress and reset anyway. The length of the timeout is observed at ~20us. Signed-off-by: Dom Cobley <popcornmix@gmail.com>
Fixes: 654368f ("bcm2835-dma: Need to keep PROT bits set in CS on 40bit controller") Signed-off-by: Dom Cobley <popcornmix@gmail.com>
Disable enumerating and setting of the 2x2 binned mode entirely as it does not seem to work for either mono or colour sensor variants. Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
A DSI write is issued in st7701_prepare even when the probed panel runs on SPI. In practice, this results in a panic with the vc4-kms-dpi-hyperpixel2r overlay active. Perform the equivalent write over SPI in this case. Signed-off-by: Jack Andersen <jackoalan@gmail.com>
At a high FPS with RAW10, there is frame corruption for 480p because the rate_factor of 2 is used with the normal 2x2 bining [1]. This commit ties the rate_factor to the selected binning mode. For the 480p mode, analog 2x2 binning mode with a rate_factor of 2 is always used. For the 1232p mode the normal 2x2 binning mode is used for RAW10 while analog 2x2 binning mode is used for RAW8. [1] raspberrypi#5493 Signed-off-by: Vinay Varma <varmavinaym@gmail.com>
This patch sets the driver modem line state to the actual line state at driver startup. See: raspberrypi#5501 Signed-off-by: Earl Schmidt <schmidt.earl.f@gmail.com> Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Ensure that the frame sequence counter is incremented only if a previous frame start interrupt has occurred, or a frame start + frame end has occurred simultaneously. This corresponds the sequence number with the actual number of frames produced by the sensor, not the number of frame buffers dequeued back to userland. Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
…rypi#5508) The overlays configured both irq-gpio and an interrupts/ interrupt-parent configuration for the stmpe MFD device. irq-gpio was reworked in 6.1 and has issues with the configuration as provided. Removing it and using the interrupts/interrupt-parent configuration works fine, so do that. See: https://forums.raspberrypi.com/viewtopic.php?t=351394 Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
In converting to using the standard u16_fract type, commit [1] made the obvious mistake and failed to take account of the difference in numerator and denominator ordering, breaking all uses of the cs43130 codec. Fix it. [1] commit e14bd35 ("ASoC: cs43130: Re-use generic struct u16_fract") Fixes: e14bd35 ("ASoC: cs43130: Re-use generic struct u16_fract") Signed-off-by: Phil Elwell <phil@raspberrypi.com>
The temperature sensor enable register write got lost at some point. Re-enable it. Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Higher speeds have been shown to cause data corruption on a Pi 4, possibly due to clock-stretching. See: raspberrypi#5511 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Add a speed parameter to the jedec-spi-nor overlay to allow much faster accesses, taking the opportunity to simplify the internals. Signed-off-by: Phil Elwell <phil@raspberrypi.com>
commit 04b49b9 upstream. The SADs of compressed formats contain the channel and sample rate info of the audio data inside the compressed stream, but when building constraints we must use the rates and channels used to transport the compressed streams. eg 48kHz 6ch EAC3 needs to be transmitted as a 2ch 192kHz stream. This patch fixes the constraints for the common AC3 and DTS formats, the constraints for the less common MPEG, DSD etc formats are copied directly from the info in the SADs as before as I don't have the specs and equipment to test those. Signed-off-by: Matthias Reichl <hias@horus.com> Link: https://lore.kernel.org/r/20230624165216.5719-1-hias@horus.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
commit 4e08713 upstream. According to CTA 861 the channel/speaker allocation info in the audio infoframe only applies to uncompressed (PCM) audio streams. The channel count info should indicate the number of channels in the transmitted audio, which usually won't match the number of channels used to transmit the compressed bitstream. Some devices (eg some Sony TVs) will refuse to decode compressed audio if these values are not set correctly. To fix this we can simply set the channel count to 0 (which means "refer to stream header") and set the channel/speaker allocation to 0 as well (which would mean stereo FL/FR for PCM, a safe value all sinks will support) when transmitting compressed audio. Signed-off-by: Matthias Reichl <hias@horus.com> Link: https://lore.kernel.org/r/20230624165232.5751-1-hias@horus.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
Arducam 64MP has specific requirements for the line length, and if these conditions are not met, the camera will not function properly. Under the previous configuration, once a stream off operation is performed, the camera will not output any data, even if a stream on operation is performed. This prevents us from switching from 1280x720 to another resolution. Signed-off-by: Lee Jackson <lee.jackson@arducam.com>
Added 8000x6000 10-bit (cropped) @ 3fps mode for Arducam 64MP Signed-off-by: Lee Jackson <lee.jackson@arducam.com>
Enable PDAF output for all modes, and also need to modify Embedded Line Width to 11560 * 3 (two lines of Embedded Data + one line of PDAF). Signed-off-by: Lee Jackson <lee.jackson@arducam.com>
Update all the defines to allow for an increased MTU. 9000 is being permitted, but currently the hardware appears limited to 3840 without fragmenting received frames. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Set the RBUF_PKT_RDY_THLD register to the max value that it can take to allow for larger frames. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
popcornmix
force-pushed
the
rpi-6.4.y
branch
2 times, most recently
from
July 20, 2023 12:25
6193f52
to
57d9259
Compare
popcornmix
force-pushed
the
rpi-6.4.y
branch
2 times, most recently
from
July 27, 2023 14:11
7da51fa
to
368412b
Compare
popcornmix
force-pushed
the
rpi-6.4.y
branch
2 times, most recently
from
August 9, 2023 10:38
5b2bc2c
to
07aaa51
Compare
popcornmix
force-pushed
the
rpi-6.4.y
branch
2 times, most recently
from
September 8, 2023 12:24
e91775b
to
fc51809
Compare
popcornmix
force-pushed
the
rpi-6.4.y
branch
from
September 13, 2023 16:44
b4ecf4a
to
f189217
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
From #5419 some progress has been made to cleanly increase the MTU permitted by the driver, and to add support for up to 3840 bytes. Going beyond that fragments received frames into multiple buffers, and the driver doesn't support reassembling them.
PR created for experimentation by others, and to start a conversation on net-dev.