Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) ======================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) Texas Instruments Keystone Navigator Queue Management SubSystem driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) ======================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) Driver source code path
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)   drivers/soc/ti/knav_qmss.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7)   drivers/soc/ti/knav_qmss_acc.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) the main hardware sub system which forms the backbone of the Keystone
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) multi-core Navigator. QMSS consist of queue managers, packed-data structure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) processors(PDSP), linking RAM, descriptor pools and infrastructure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Packet DMA.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) The Queue Manager is a hardware module that is responsible for accelerating
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) management of the packet queues. Packets are queued/de-queued by writing or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) reading descriptor address to a particular memory mapped location. The PDSPs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) perform QMSS related functions like accumulation, QoS, or event management.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) Linking RAM registers are used to link the descriptors which are stored in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) descriptor RAM. Descriptor RAM is configurable as internal or external memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) The QMSS driver manages the PDSP setups, linking RAM regions,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) queue pool management (allocation, push, pop and notify) and descriptor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) pool management.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) allocate descriptor pools, map the descriptors, push/pop to queues etc. For
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) DT documentation is available at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) Accumulator QMSS queues using PDSP firmware
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) ============================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) The QMSS PDSP firmware support accumulator channel that can monitor a single
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) queue or multiple contiguous queues. drivers/soc/ti/knav_qmss_acc.c is the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) driver that interface with the accumulator PDSP. This configures
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) accumulator channels defined in DTS (example in DT documentation) to monitor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 1 or 32 queues per channel. More description on the firmware is available in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) CPPI/QMSS Low Level Driver document (docs/CPPI_QMSS_LLD_SDS.pdf) at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	git://git.ti.com/keystone-rtos/qmss-lld.git
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin firmware supports upto 48 accumulator
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) channels. This firmware is available under ti-keystone folder of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) firmware.git at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)    git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) To use copy the firmware image to lib/firmware folder of the initramfs or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) ubifs file system and provide a sym link to k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) in the file system and boot up the kernel. User would see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)  "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) in the boot up log if loading of firmware to PDSP is successful.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) Use of accumulated queues requires the firmware image to be present in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) file system. The driver doesn't acc queues to the supported queue range if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) PDSP is not running in the SoC. The API call fails if there is a queue open
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) request to an acc queue and PDSP is not running. So make sure to copy firmware
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) to file system before using these queue types.