drivers/platform/raspberrypi/vchiq-interface/TESTING
Source file repositories/reference/linux-study-clean/drivers/platform/raspberrypi/vchiq-interface/TESTING
File Facts
- System
- Linux kernel
- Corpus path
drivers/platform/raspberrypi/vchiq-interface/TESTING- Extension
[no extension]- Size
- 4489 bytes
- Lines
- 126
- Domain
- Driver Families
- Bucket
- drivers/platform
- Inferred role
- Driver Families: drivers/platform
- Status
- atlas-only
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
This document contains some hints to test the function of the VCHIQ driver
without having additional hardware to the Raspberry Pi.
* Requirements & limitations
Testing the VCHIQ driver requires a Raspberry Pi with one of the following SoC:
- BCM2835 ( e.g. Raspberry Pi Zero W )
- BCM2836 ( e.g. Raspberry Pi 2 )
- BCM2837 ( e.g. Raspberry Pi 3 B+ )
The BCM2711 used in the Raspberry Pi 4 is currently not supported in the
mainline kernel.
There are no specific requirements to the VideoCore firmware to get VCHIQ
working.
The test scenarios described in this document based on the tool vchiq_test.
Its source code is available here: https://github.com/raspberrypi/userland
* Configuration
Here are the most common kernel configurations:
1. BCM2835 target SoC (ARM 32 bit)
Just use bcm2835_defconfig which already has VCHIQ enabled.
2. BCM2836/7 target SoC (ARM 32 bit)
Use the multi_v7_defconfig as a base and then enable all VCHIQ options.
3. BCM2837 target SoC (ARM 64 bit)
Use the defconfig which has most of the VCHIQ options enabled.
* Scenarios
* Initial test
Check the driver is probed and /dev/vchiq is created
* Functional test
Command: vchiq_test -f 10
Expected output:
Functional test - iters:10
======== iteration 1 ========
Testing bulk transfer for alignment.
Testing bulk transfer at PAGE_SIZE.
...
* Ping test
Command: vchiq_test -p
Expected output:
Ping test - service:echo, iters:1000, version 3
vchi ping (size 0) -> 57.000000us
vchi ping (size 0, 0 async, 0 oneway) -> 122.000000us
vchi bulk (size 0, 0 async, 0 oneway) -> 546.000000us
vchi bulk (size 0, 0 oneway) -> 230.000000us
vchi ping (size 0) -> 49.000000us
vchi ping (size 0, 0 async, 0 oneway) -> 70.000000us
vchi bulk (size 0, 0 async, 0 oneway) -> 296.000000us
vchi bulk (size 0, 0 oneway) -> 266.000000us
vchi ping (size 0, 1 async, 0 oneway) -> 65.000000us
vchi bulk (size 0, 0 oneway) -> 456.000000us
vchi ping (size 0, 2 async, 0 oneway) -> 74.000000us
vchi bulk (size 0, 0 oneway) -> 640.000000us
Annotation
- Atlas domain: Driver Families / drivers/platform.
- Implementation status: atlas-only.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.