Skip to content

Commit 1357dfd

Browse files
lsun100andy-shev
authored andcommitted
platform/mellanox: Add TmFifo driver for Mellanox BlueField Soc
This commit adds the TmFifo platform driver for Mellanox BlueField Soc. TmFifo is a shared FIFO which enables external host machine to exchange data with the SoC via USB or PCIe. The driver is based on virtio framework and has console and network access enabled. Reviewed-by: Vadim Pasternak <[email protected]> Signed-off-by: Liming Sun <[email protected]> Signed-off-by: Andy Shevchenko <[email protected]>
1 parent d33a7e5 commit 1357dfd

File tree

4 files changed

+1356
-1
lines changed

4 files changed

+1356
-1
lines changed

drivers/platform/mellanox/Kconfig

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
menuconfig MELLANOX_PLATFORM
77
bool "Platform support for Mellanox hardware"
8-
depends on X86 || ARM || COMPILE_TEST
8+
depends on X86 || ARM || ARM64 || COMPILE_TEST
99
---help---
1010
Say Y here to get to see options for platform support for
1111
Mellanox systems. This option alone does not add any kernel code.
@@ -34,4 +34,14 @@ config MLXREG_IO
3434
to system resets operation, system reset causes monitoring and some
3535
kinds of mux selection.
3636

37+
config MLXBF_TMFIFO
38+
tristate "Mellanox BlueField SoC TmFifo platform driver"
39+
depends on ARM64
40+
depends on ACPI
41+
depends on VIRTIO_CONSOLE && VIRTIO_NET
42+
help
43+
Say y here to enable TmFifo support. The TmFifo driver provides
44+
platform driver support for the TmFifo which supports console
45+
and networking based on the virtio framework.
46+
3747
endif # MELLANOX_PLATFORM

drivers/platform/mellanox/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
# Makefile for linux/drivers/platform/mellanox
44
# Mellanox Platform-Specific Drivers
55
#
6+
obj-$(CONFIG_MLXBF_TMFIFO) += mlxbf-tmfifo.o
67
obj-$(CONFIG_MLXREG_HOTPLUG) += mlxreg-hotplug.o
78
obj-$(CONFIG_MLXREG_IO) += mlxreg-io.o
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/* SPDX-License-Identifier: GPL-2.0 */
2+
/*
3+
* Copyright (c) 2019, Mellanox Technologies. All rights reserved.
4+
*/
5+
6+
#ifndef __MLXBF_TMFIFO_REGS_H__
7+
#define __MLXBF_TMFIFO_REGS_H__
8+
9+
#include <linux/types.h>
10+
#include <linux/bits.h>
11+
12+
#define MLXBF_TMFIFO_TX_DATA 0x00
13+
#define MLXBF_TMFIFO_TX_STS 0x08
14+
#define MLXBF_TMFIFO_TX_STS__LENGTH 0x0001
15+
#define MLXBF_TMFIFO_TX_STS__COUNT_SHIFT 0
16+
#define MLXBF_TMFIFO_TX_STS__COUNT_WIDTH 9
17+
#define MLXBF_TMFIFO_TX_STS__COUNT_RESET_VAL 0
18+
#define MLXBF_TMFIFO_TX_STS__COUNT_RMASK GENMASK_ULL(8, 0)
19+
#define MLXBF_TMFIFO_TX_STS__COUNT_MASK GENMASK_ULL(8, 0)
20+
#define MLXBF_TMFIFO_TX_CTL 0x10
21+
#define MLXBF_TMFIFO_TX_CTL__LENGTH 0x0001
22+
#define MLXBF_TMFIFO_TX_CTL__LWM_SHIFT 0
23+
#define MLXBF_TMFIFO_TX_CTL__LWM_WIDTH 8
24+
#define MLXBF_TMFIFO_TX_CTL__LWM_RESET_VAL 128
25+
#define MLXBF_TMFIFO_TX_CTL__LWM_RMASK GENMASK_ULL(7, 0)
26+
#define MLXBF_TMFIFO_TX_CTL__LWM_MASK GENMASK_ULL(7, 0)
27+
#define MLXBF_TMFIFO_TX_CTL__HWM_SHIFT 8
28+
#define MLXBF_TMFIFO_TX_CTL__HWM_WIDTH 8
29+
#define MLXBF_TMFIFO_TX_CTL__HWM_RESET_VAL 128
30+
#define MLXBF_TMFIFO_TX_CTL__HWM_RMASK GENMASK_ULL(7, 0)
31+
#define MLXBF_TMFIFO_TX_CTL__HWM_MASK GENMASK_ULL(15, 8)
32+
#define MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_SHIFT 32
33+
#define MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_WIDTH 9
34+
#define MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_RESET_VAL 256
35+
#define MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_RMASK GENMASK_ULL(8, 0)
36+
#define MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_MASK GENMASK_ULL(40, 32)
37+
#define MLXBF_TMFIFO_RX_DATA 0x00
38+
#define MLXBF_TMFIFO_RX_STS 0x08
39+
#define MLXBF_TMFIFO_RX_STS__LENGTH 0x0001
40+
#define MLXBF_TMFIFO_RX_STS__COUNT_SHIFT 0
41+
#define MLXBF_TMFIFO_RX_STS__COUNT_WIDTH 9
42+
#define MLXBF_TMFIFO_RX_STS__COUNT_RESET_VAL 0
43+
#define MLXBF_TMFIFO_RX_STS__COUNT_RMASK GENMASK_ULL(8, 0)
44+
#define MLXBF_TMFIFO_RX_STS__COUNT_MASK GENMASK_ULL(8, 0)
45+
#define MLXBF_TMFIFO_RX_CTL 0x10
46+
#define MLXBF_TMFIFO_RX_CTL__LENGTH 0x0001
47+
#define MLXBF_TMFIFO_RX_CTL__LWM_SHIFT 0
48+
#define MLXBF_TMFIFO_RX_CTL__LWM_WIDTH 8
49+
#define MLXBF_TMFIFO_RX_CTL__LWM_RESET_VAL 128
50+
#define MLXBF_TMFIFO_RX_CTL__LWM_RMASK GENMASK_ULL(7, 0)
51+
#define MLXBF_TMFIFO_RX_CTL__LWM_MASK GENMASK_ULL(7, 0)
52+
#define MLXBF_TMFIFO_RX_CTL__HWM_SHIFT 8
53+
#define MLXBF_TMFIFO_RX_CTL__HWM_WIDTH 8
54+
#define MLXBF_TMFIFO_RX_CTL__HWM_RESET_VAL 128
55+
#define MLXBF_TMFIFO_RX_CTL__HWM_RMASK GENMASK_ULL(7, 0)
56+
#define MLXBF_TMFIFO_RX_CTL__HWM_MASK GENMASK_ULL(15, 8)
57+
#define MLXBF_TMFIFO_RX_CTL__MAX_ENTRIES_SHIFT 32
58+
#define MLXBF_TMFIFO_RX_CTL__MAX_ENTRIES_WIDTH 9
59+
#define MLXBF_TMFIFO_RX_CTL__MAX_ENTRIES_RESET_VAL 256
60+
#define MLXBF_TMFIFO_RX_CTL__MAX_ENTRIES_RMASK GENMASK_ULL(8, 0)
61+
#define MLXBF_TMFIFO_RX_CTL__MAX_ENTRIES_MASK GENMASK_ULL(40, 32)
62+
63+
#endif /* !defined(__MLXBF_TMFIFO_REGS_H__) */

0 commit comments

Comments
 (0)