Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp432225pxb; Wed, 20 Jan 2021 10:25:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJyWbdbUj7JzMDbcY63i6r4umeuow1oR04gbZld3MQDZHg4IsV4B7L2sIkkf0Rz/SsDaZ4nA X-Received: by 2002:a17:906:a011:: with SMTP id p17mr6823821ejy.30.1611167140501; Wed, 20 Jan 2021 10:25:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611167140; cv=none; d=google.com; s=arc-20160816; b=ZjZwzYd0VnEH8WlG2MxPQ15RHcIUWKE7PCQL5axr8VBJy6G4s4WzL4ao6tZOYSklW6 AarpTwK4sUo8lhAMby6dd4UR5S1P/xdC0288R7I4Yu232ICw0qX4s/yah47fFaoJwz1n 4nM+vwGylQR0ieD+oZGpPMyx6zg+lSMhmHwjY+jLCjfmxSpemAl4jo56znn9UYgX5LBw RH3cmHoZUshzSgBQGcuj1VYH09LhVo4o2LY79RbJjnLtxaVr3H1Uch8qA4UeE5pokevk Pw7x+d3e3X4IOJ9sVg+kQ+CW3GHf3+TxGVyf+HhO0WH2VsqnGQytvGyJxv9uqjU3uBGZ 7Vqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-signature:dkim-filter; bh=GT+qMYn5NjeoOS6WEHMDaXcn/M8kw0hhqSjtpVBIT9k=; b=tF4+hRM1ByciMHHR+lHOJVlfshPAUxBCRJfvirTOEIE57aS5G0Y244urs/jQqgCtCC KawvCy6Bva4j1tkiaoQl/+Qe8Lb+j8u7qrbti1jy09NYes+nxAiRSz5uf1Q9MVCV0o1+ VC8y1BiMGLfBHrx5+Z+Ol4DjcE04+LjzFgQIJ7A5qszz4JRrG/faIE4tccqHgdqhmm2k 0sFzDJvPKGetbVJszlNCsUqhSyYNNqe6ea+M7cJvTVqNRi2pAH7iVPrF7L4fEat1mbTC rg9WhdVo/0CGVamy/q8+jktmLN7gluOzRxVUYvbE0MFk5M85Y57DZVW67DB2I7qsFit0 R/2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=AH9RTy31; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dp13si921060ejc.439.2021.01.20.10.25.15; Wed, 20 Jan 2021 10:25:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=AH9RTy31; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404443AbhATSV7 (ORCPT + 99 others); Wed, 20 Jan 2021 13:21:59 -0500 Received: from lpdvacalvio01.broadcom.com ([192.19.229.182]:40998 "EHLO relay.smtp-ext.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404241AbhATSIt (ORCPT ); Wed, 20 Jan 2021 13:08:49 -0500 Received: from lbrmn-lnxub113.broadcom.net (lbrmn-lnxub113.ric.broadcom.net [10.136.13.65]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 788FE2E5D5; Wed, 20 Jan 2021 09:58:32 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 788FE2E5D5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1611165512; bh=N5nXy30MsxbuJJ7fcS4n0aQXS/3LCK9wAf0fgwYYaJw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AH9RTy31GvaPJYMLTJwJ0z9IgrU7whGSIAPuKyNsZNKmJQB66YSNY4xIvjlKWL7Ft eqAuwIXitP8X0MSnYN11TCZOmzohrpBeB8Nj0Zg3X246tuFEb4kluEPeuBu7hVR4Is gdaVEI0z66fH+XMhVvjny/uvRoIHmXpfckHfK5nE= From: Scott Branden To: Arnd Bergmann , Greg Kroah-Hartman , Scott Branden Cc: Kees Cook , linux-kernel@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, Desmond Yan , Olof Johansson Subject: [PATCH v9 01/13] bcm-vk: add bcm_vk UAPI Date: Wed, 20 Jan 2021 09:58:15 -0800 Message-Id: <20210120175827.14820-2-scott.branden@broadcom.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210120175827.14820-1-scott.branden@broadcom.com> References: <20210120175827.14820-1-scott.branden@broadcom.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add user space api for bcm-vk driver. Provide ioctl api to load images and issue reset command to card. FW status registers in PCI BAR space also defined as part of API so that user space is able to interpret these memory locations as needed via direct PCIe access. Signed-off-by: Scott Branden Acked-by: Olof Johansson --- include/uapi/linux/misc/bcm_vk.h | 84 ++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 include/uapi/linux/misc/bcm_vk.h diff --git a/include/uapi/linux/misc/bcm_vk.h b/include/uapi/linux/misc/bcm_vk.h new file mode 100644 index 000000000000..ec28e0bd46a9 --- /dev/null +++ b/include/uapi/linux/misc/bcm_vk.h @@ -0,0 +1,84 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* + * Copyright 2018-2020 Broadcom. + */ + +#ifndef __UAPI_LINUX_MISC_BCM_VK_H +#define __UAPI_LINUX_MISC_BCM_VK_H + +#include +#include + +#define BCM_VK_MAX_FILENAME 64 + +struct vk_image { + __u32 type; /* Type of image */ +#define VK_IMAGE_TYPE_BOOT1 1 /* 1st stage (load to SRAM) */ +#define VK_IMAGE_TYPE_BOOT2 2 /* 2nd stage (load to DDR) */ + __u8 filename[BCM_VK_MAX_FILENAME]; /* Filename of image */ +}; + +struct vk_reset { + __u32 arg1; + __u32 arg2; +}; + +#define VK_MAGIC 0x5e + +/* Load image to Valkyrie */ +#define VK_IOCTL_LOAD_IMAGE _IOW(VK_MAGIC, 0x2, struct vk_image) + +/* Send Reset to Valkyrie */ +#define VK_IOCTL_RESET _IOW(VK_MAGIC, 0x4, struct vk_reset) + +/* + * Firmware Status accessed directly via BAR space + */ +#define VK_BAR_FWSTS 0x41c +#define VK_BAR_COP_FWSTS 0x428 +/* VK_FWSTS definitions */ +#define VK_FWSTS_RELOCATION_ENTRY (1UL << 0) +#define VK_FWSTS_RELOCATION_EXIT (1UL << 1) +#define VK_FWSTS_INIT_START (1UL << 2) +#define VK_FWSTS_ARCH_INIT_DONE (1UL << 3) +#define VK_FWSTS_PRE_KNL1_INIT_DONE (1UL << 4) +#define VK_FWSTS_PRE_KNL2_INIT_DONE (1UL << 5) +#define VK_FWSTS_POST_KNL_INIT_DONE (1UL << 6) +#define VK_FWSTS_INIT_DONE (1UL << 7) +#define VK_FWSTS_APP_INIT_START (1UL << 8) +#define VK_FWSTS_APP_INIT_DONE (1UL << 9) +#define VK_FWSTS_MASK 0xffffffff +#define VK_FWSTS_READY (VK_FWSTS_INIT_START | \ + VK_FWSTS_ARCH_INIT_DONE | \ + VK_FWSTS_PRE_KNL1_INIT_DONE | \ + VK_FWSTS_PRE_KNL2_INIT_DONE | \ + VK_FWSTS_POST_KNL_INIT_DONE | \ + VK_FWSTS_INIT_DONE | \ + VK_FWSTS_APP_INIT_START | \ + VK_FWSTS_APP_INIT_DONE) +/* Deinit */ +#define VK_FWSTS_APP_DEINIT_START (1UL << 23) +#define VK_FWSTS_APP_DEINIT_DONE (1UL << 24) +#define VK_FWSTS_DRV_DEINIT_START (1UL << 25) +#define VK_FWSTS_DRV_DEINIT_DONE (1UL << 26) +#define VK_FWSTS_RESET_DONE (1UL << 27) +#define VK_FWSTS_DEINIT_TRIGGERED (VK_FWSTS_APP_DEINIT_START | \ + VK_FWSTS_APP_DEINIT_DONE | \ + VK_FWSTS_DRV_DEINIT_START | \ + VK_FWSTS_DRV_DEINIT_DONE) +/* Last nibble for reboot reason */ +#define VK_FWSTS_RESET_REASON_SHIFT 28 +#define VK_FWSTS_RESET_REASON_MASK (0xf << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_SYS_PWRUP (0x0 << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_MBOX_DB (0x1 << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_M7_WDOG (0x2 << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_TEMP (0x3 << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_PCI_FLR (0x4 << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_PCI_HOT (0x5 << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_PCI_WARM (0x6 << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_PCI_COLD (0x7 << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_L1 (0x8 << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_L0 (0x9 << VK_FWSTS_RESET_REASON_SHIFT) +#define VK_FWSTS_RESET_UNKNOWN (0xf << VK_FWSTS_RESET_REASON_SHIFT) + +#endif /* __UAPI_LINUX_MISC_BCM_VK_H */ -- 2.17.1