So this series is an effort to start a conversation in the community, with the intent to free the Intel(R) Myriad(TM) ma24xx stack, as found within: * USB Intel Neural Compute Stick (ma2450) * USB Intel Neural Compute Stick 2 (ma2485) What this patch series is: * RFC for a helper driver that loads a (currently) non-redistributable firmware binary blob for this hotswappable AI inference hardware. What this patch series is NOT: * Kernel driver that provides clean API access to this AI accelerator. * Any usermode support. Hardware: ======================================================================= The Myriad ma24xx in the USB Intel Neural Compute Stick and Intel Neural Compute Stick 2 provides an API to accelerate AI inference calculations on the dedicated SHAVE VLIW vector co-processors, which are orchestrated by one or more LEON SPARC v8 real time cores. This VPU chip is positioned as a specialised low-power processor chip for computer vision inference applications. It contains a dedicated hardware accelerator for neural network deep-learning inferences. It was originally designed by Movidius Ltd, who announced they were to be acquired by Intel in September 2016. Boot process: ======================================================================= The core chip is housed within a USB enclosure (there is a different variant embedded on a SoC over a local bus, but that's out of scope). When physically connected to a host system, the accelerator card first needs firmware to be loaded for the device to be useable. An uninitialised Myriad ma24xx presents with a distinctive USB ID. After firmware loading, the device detaches from the USB bus and reattaches with a new device ID. It can then be claimed by the usermode driver. Current software stack: ======================================================================= + * + * The firmware is non-free and must be extracted by the user. + */ Intel packages and distributes a downstream vendor Intel(R) Distribution of OpenVINO(TM) toolkit [0] (under a limited proprietary license) for these devices which, amongst other binary packages, contains the Deep Learning Deployment Toolkit [1] (Apache License Version 2.0). However, the non-redistributable firmware binary blob that must be loaded onto the Myriad ma24xx is not available under a suitable FOSS license. There have been periods of time during which support for non-x86 host platforms (e.g. Raspberry Pi ARMv8 64-bit) were missing or delayed in the Intel-distributed downstream vendor fork OpenVINO. Whilst Movidius was an independent company, a separate (also non-FOSS) "Myriad Development Kit" was made available for developers, although it is no longer actively supported nor new features developed for it. Let's try to open more of this stack to FOSS mainline, on any host! This patch series would provide mainline Linux kernel support to load the Myriad ma24xx firmware, were it to become freely licensed. As the linux-accelerators list is forming as somewhat of a home for Linux AI accelerators (training and inference) subsystem, I have copied that list as a heads-up to the larger effort to integrate this hardware into a fully open stack. May the RFC comments flood in! [0] https://software.intel.com/en-us/openvino-toolkit [1] https://github.com/opencv/dldt Note: Intel, the Intel logo, Movidius, Myriad, OpenVINO and the OpenVINO logo are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries. Rhys Kidd (1): USB: myriad-ma24xx-vsc: Firmware loader driver for USB Myriad ma24xx MAINTAINERS | 6 + drivers/usb/misc/Kconfig | 8 ++ drivers/usb/misc/Makefile | 1 + drivers/usb/misc/myriad-ma24xx-vsc.c | 171 +++++++++++++++++++++++++++ 4 files changed, 186 insertions(+) create mode 100644 drivers/usb/misc/myriad-ma24xx-vsc.c -- 2.20.1