Hi, These 4 patches add supports to the ArmChina Zhouyi NPU IPs. The Zhouyi NPUs (and software for it) are designed by Arm Technology (China) Co. Ltd., i.e. short for ArmChina, for edge AI computing devices in markets like smart home, auto, IoT, mobile, etc. The brand name "Zhouyi" comes from a Chinese traditional classic about changes and predictions. Currently two versions of Zhouyi IP (Z1 and Z2) are released, and they are integrated into SoC chips Allwinner R329 and Siengine SE1000, respectively. This driver supports the control of Zhouyi Z1 and Z2 NPUs. By using the user mode driver APIs, application program can schedule AI inference tasks on Zhouyi NPUs efficiently. The user mode part of this driver is opensourced now and anyone can fetch it from github: https://github.com/dejsha01/armchina-zhouyi. We found that a few days ago someone submitted a legacy version of Zhouyi NPU driver: https://lore.kernel.org/lkml/20211126021904.32325-1-caihuoqing@xxxxxxxxx/#t. We think that the current version in these 4 patches is better for upstreaming because it contains bug-fixes and code optimizations compared with the legacy version, and the corresponding user mode driver for this kernel driver is opensourced. I would appricate any feedback, question or review :) Thanks, Dejia Dejia Shang (4): misc: add ArmChina Zhouyi NPU driver Documentation: add sysfs entries for Zhouyi NPU dt-bindings: add vendor-prefix and documentation for Zhouyi NPU MAINTAINERS: add maintainer info. for Zhouyi NPU .../sysfs-devices-platform-armchina-npu | 13 + .../bindings/misc/armchina,zhouyi-npu.yaml | 57 ++ .../devicetree/bindings/vendor-prefixes.yaml | 2 + MAINTAINERS | 10 + drivers/misc/Kconfig | 1 + drivers/misc/Makefile | 1 + drivers/misc/armchina-npu/Kconfig | 15 + drivers/misc/armchina-npu/Makefile | 11 + drivers/misc/armchina-npu/aipu.c | 312 ++++++++ drivers/misc/armchina-npu/aipu_core.c | 418 ++++++++++ drivers/misc/armchina-npu/aipu_core.h | 100 +++ drivers/misc/armchina-npu/aipu_io.c | 74 ++ drivers/misc/armchina-npu/aipu_io.h | 27 + drivers/misc/armchina-npu/aipu_irq.c | 113 +++ drivers/misc/armchina-npu/aipu_irq.h | 36 + drivers/misc/armchina-npu/aipu_job_manager.c | 689 ++++++++++++++++ drivers/misc/armchina-npu/aipu_job_manager.h | 110 +++ drivers/misc/armchina-npu/aipu_mm.c | 740 ++++++++++++++++++ drivers/misc/armchina-npu/aipu_mm.h | 127 +++ drivers/misc/armchina-npu/aipu_priv.c | 280 +++++++ drivers/misc/armchina-npu/aipu_priv.h | 58 ++ drivers/misc/armchina-npu/aipu_soc_default.c | 82 ++ drivers/misc/armchina-npu/config.h | 12 + .../armchina-npu/include/armchina_aipu_soc.h | 52 ++ drivers/misc/armchina-npu/zhouyi/Makefile | 4 + drivers/misc/armchina-npu/zhouyi/z1.c | 244 ++++++ drivers/misc/armchina-npu/zhouyi/z1.h | 33 + drivers/misc/armchina-npu/zhouyi/z2.c | 311 ++++++++ drivers/misc/armchina-npu/zhouyi/z2.h | 47 ++ drivers/misc/armchina-npu/zhouyi/zhouyi.c | 142 ++++ drivers/misc/armchina-npu/zhouyi/zhouyi.h | 73 ++ include/uapi/misc/armchina_aipu.h | 335 ++++++++ 32 files changed, 4529 insertions(+) create mode 100644 Documentation/ABI/testing/sysfs-devices-platform-armchina-npu create mode 100644 Documentation/devicetree/bindings/misc/armchina,zhouyi-npu.yaml create mode 100644 drivers/misc/armchina-npu/Kconfig create mode 100644 drivers/misc/armchina-npu/Makefile create mode 100644 drivers/misc/armchina-npu/aipu.c create mode 100644 drivers/misc/armchina-npu/aipu_core.c create mode 100644 drivers/misc/armchina-npu/aipu_core.h create mode 100644 drivers/misc/armchina-npu/aipu_io.c create mode 100644 drivers/misc/armchina-npu/aipu_io.h create mode 100644 drivers/misc/armchina-npu/aipu_irq.c create mode 100644 drivers/misc/armchina-npu/aipu_irq.h create mode 100644 drivers/misc/armchina-npu/aipu_job_manager.c create mode 100644 drivers/misc/armchina-npu/aipu_job_manager.h create mode 100644 drivers/misc/armchina-npu/aipu_mm.c create mode 100644 drivers/misc/armchina-npu/aipu_mm.h create mode 100644 drivers/misc/armchina-npu/aipu_priv.c create mode 100644 drivers/misc/armchina-npu/aipu_priv.h create mode 100644 drivers/misc/armchina-npu/aipu_soc_default.c create mode 100644 drivers/misc/armchina-npu/config.h create mode 100644 drivers/misc/armchina-npu/include/armchina_aipu_soc.h create mode 100644 drivers/misc/armchina-npu/zhouyi/Makefile create mode 100644 drivers/misc/armchina-npu/zhouyi/z1.c create mode 100644 drivers/misc/armchina-npu/zhouyi/z1.h create mode 100644 drivers/misc/armchina-npu/zhouyi/z2.c create mode 100644 drivers/misc/armchina-npu/zhouyi/z2.h create mode 100644 drivers/misc/armchina-npu/zhouyi/zhouyi.c create mode 100644 drivers/misc/armchina-npu/zhouyi/zhouyi.h create mode 100644 include/uapi/misc/armchina_aipu.h -- 2.17.1 IMPORTANT NOTICE: The contents of this email and any attachments may be privileged and confidential. If you are not the intended recipient, please delete the email immediately. It is strictly prohibited to disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. ©Arm Technology (China) Co., Ltd copyright and reserve all rights. 重要提示:本邮件(包括任何附件)可能含有专供明确的个人或目的使用的机密信息,并受法律保护。如果您并非该收件人,请立即删除此邮件。严禁通过任何渠道,以任何目的,向任何人披露、储存或复制邮件信息或者据此采取任何行动。感谢您的配合。 ©安谋科技(中国)有限公司 版权所有并保留一切权利。