RE: [PATCH v8 1/2] platform/mellanox: Add TmFifo driver for Mellanox BlueField Soc
Thanks Andy. Sorry I had email issue earlier today. Not sure the reply was sent out or not. So sent another one just in case... v9 of this patch has been posted to address the 'devm_' comment. It also has the coding-style changes according to the comments I got for another patch. Regards, Liming > -Original Message- > From: Andy Shevchenko > Sent: Tuesday, January 29, 2019 5:07 PM > To: Liming Sun > Cc: Rob Herring ; Mark Rutland ; > Arnd Bergmann ; David Woods > ; Andy Shevchenko ; Darren Hart > ; Vadim Pasternak > ; devicetree ; Linux Kernel > Mailing List ; > Platform Driver > Subject: Re: [PATCH v8 1/2] platform/mellanox: Add TmFifo driver for Mellanox > BlueField Soc > > On Mon, Jan 28, 2019 at 7:28 PM Liming Sun wrote: > > > > 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: David Woods > > Signed-off-by: Liming Sun > > > Please, go through this series taking into account review I just did > for your another patch. > > On top of that, see recent (for few years I think) drivers what modern > APIs they are using, e.g. devm_. > > -- > With Best Regards, > Andy Shevchenko
RE: [PATCH v8 1/2] platform/mellanox: Add TmFifo driver for Mellanox BlueField Soc
> -Original Message- > From: Liming Sun > Sent: Monday, January 28, 2019 7:28 PM > To: Rob Herring ; Mark Rutland > ; Arnd Bergmann ; David Woods > ; Andy Shevchenko ; Darren > Hart ; Vadim Pasternak > Cc: Liming Sun ; devicet...@vger.kernel.org; linux- > ker...@vger.kernel.org; platform-driver-...@vger.kernel.org > Subject: [PATCH v8 1/2] 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: David Woods > Signed-off-by: Liming Sun > --- > drivers/platform/mellanox/Kconfig | 13 +- > drivers/platform/mellanox/Makefile|1 + > drivers/platform/mellanox/mlxbf-tmfifo-regs.h | 67 ++ > drivers/platform/mellanox/mlxbf-tmfifo.c | 1289 > + > 4 files changed, 1369 insertions(+), 1 deletion(-) create mode 100644 > drivers/platform/mellanox/mlxbf-tmfifo-regs.h > create mode 100644 drivers/platform/mellanox/mlxbf-tmfifo.c > > diff --git a/drivers/platform/mellanox/Kconfig > b/drivers/platform/mellanox/Kconfig > index cd8a908..a565070 100644 > --- a/drivers/platform/mellanox/Kconfig > +++ b/drivers/platform/mellanox/Kconfig > @@ -5,7 +5,7 @@ > > menuconfig MELLANOX_PLATFORM > bool "Platform support for Mellanox hardware" > - depends on X86 || ARM || COMPILE_TEST > + depends on X86 || ARM || ARM64 || COMPILE_TEST > ---help--- > Say Y here to get to see options for platform support for > Mellanox systems. This option alone does not add any kernel code. > @@ -34,4 +34,15 @@ config MLXREG_IO > to system resets operation, system reset causes monitoring and some > kinds of mux selection. > > +config MLXBF_TMFIFO > + tristate "Mellanox BlueField SoC TmFifo platform driver" > + depends on ARM64 Why you make it dependent on ARM64? Should not it work on any host, x86? > + default m User who needs it should select this option. No need default 'm'. > + select VIRTIO_CONSOLE > + select VIRTIO_NET > + help > + Say y here to enable TmFifo support. The TmFifo driver provides > + platform driver support for the TmFifo which supports console > + and networking based on the virtio framework. > + > endif # MELLANOX_PLATFORM > diff --git a/drivers/platform/mellanox/Makefile > b/drivers/platform/mellanox/Makefile > index 57074d9c..f0c061d 100644 > --- a/drivers/platform/mellanox/Makefile > +++ b/drivers/platform/mellanox/Makefile > @@ -5,3 +5,4 @@ > # > obj-$(CONFIG_MLXREG_HOTPLUG) += mlxreg-hotplug.o > obj-$(CONFIG_MLXREG_IO) += mlxreg-io.o > +obj-$(CONFIG_MLXBF_TMFIFO) += mlxbf-tmfifo.o > diff --git a/drivers/platform/mellanox/mlxbf-tmfifo-regs.h > b/drivers/platform/mellanox/mlxbf-tmfifo-regs.h > new file mode 100644 > index 000..90c9c2cf > --- /dev/null > +++ b/drivers/platform/mellanox/mlxbf-tmfifo-regs.h > @@ -0,0 +1,67 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Copyright (c) 2019, Mellanox Technologies. All rights reserved. > + */ > + > +#ifndef __MLXBF_TMFIFO_REGS_H__ > +#define __MLXBF_TMFIFO_REGS_H__ > + > +#include > + > +#define MLXBF_TMFIFO_TX_DATA 0x0 > + > +#define MLXBF_TMFIFO_TX_STS 0x8 > +#define MLXBF_TMFIFO_TX_STS__LENGTH 0x0001 #define > +MLXBF_TMFIFO_TX_STS__COUNT_SHIFT 0 #define > +MLXBF_TMFIFO_TX_STS__COUNT_WIDTH 9 #define > +MLXBF_TMFIFO_TX_STS__COUNT_RESET_VAL 0 #define > +MLXBF_TMFIFO_TX_STS__COUNT_RMASK 0x1ff #define > +MLXBF_TMFIFO_TX_STS__COUNT_MASK 0x1ff > + > +#define MLXBF_TMFIFO_TX_CTL 0x10 > +#define MLXBF_TMFIFO_TX_CTL__LENGTH 0x0001 #define > +MLXBF_TMFIFO_TX_CTL__LWM_SHIFT 0 #define > MLXBF_TMFIFO_TX_CTL__LWM_WIDTH > +8 #define MLXBF_TMFIFO_TX_CTL__LWM_RESET_VAL 128 #define > +MLXBF_TMFIFO_TX_CTL__LWM_RMASK 0xff #define > +MLXBF_TMFIFO_TX_CTL__LWM_MASK 0xff #define > +MLXBF_TMFIFO_TX_CTL__HWM_SHIFT 8 #define > MLXBF_TMFIFO_TX_CTL__HWM_WIDTH > +8 #define MLXBF_TMFIFO_TX_CTL__HWM_RESET_VAL 128 #define > +MLXBF_TMFIFO_TX_CTL__HWM_RMASK 0xff #define > +MLXBF_TMFIFO_TX_CTL__HWM_MASK 0xff00 #define > +MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_SHIFT 32 #define > +MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_WIDTH 9 #define > +MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_RESET_VAL 256 #define > +MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_RMASK 0x1ff #define > +MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_MASK 0x1ffULL > + > +#define MLXBF_TMFIFO_RX_DATA 0x0 &g
Re: [PATCH v8 1/2] platform/mellanox: Add TmFifo driver for Mellanox BlueField Soc
On Mon, Jan 28, 2019 at 7:28 PM Liming Sun wrote: > > 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: David Woods > Signed-off-by: Liming Sun Please, go through this series taking into account review I just did for your another patch. On top of that, see recent (for few years I think) drivers what modern APIs they are using, e.g. devm_. -- With Best Regards, Andy Shevchenko
[PATCH v8 1/2] 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: David Woods Signed-off-by: Liming Sun --- drivers/platform/mellanox/Kconfig | 13 +- drivers/platform/mellanox/Makefile|1 + drivers/platform/mellanox/mlxbf-tmfifo-regs.h | 67 ++ drivers/platform/mellanox/mlxbf-tmfifo.c | 1289 + 4 files changed, 1369 insertions(+), 1 deletion(-) create mode 100644 drivers/platform/mellanox/mlxbf-tmfifo-regs.h create mode 100644 drivers/platform/mellanox/mlxbf-tmfifo.c diff --git a/drivers/platform/mellanox/Kconfig b/drivers/platform/mellanox/Kconfig index cd8a908..a565070 100644 --- a/drivers/platform/mellanox/Kconfig +++ b/drivers/platform/mellanox/Kconfig @@ -5,7 +5,7 @@ menuconfig MELLANOX_PLATFORM bool "Platform support for Mellanox hardware" - depends on X86 || ARM || COMPILE_TEST + depends on X86 || ARM || ARM64 || COMPILE_TEST ---help--- Say Y here to get to see options for platform support for Mellanox systems. This option alone does not add any kernel code. @@ -34,4 +34,15 @@ config MLXREG_IO to system resets operation, system reset causes monitoring and some kinds of mux selection. +config MLXBF_TMFIFO + tristate "Mellanox BlueField SoC TmFifo platform driver" + depends on ARM64 + default m + select VIRTIO_CONSOLE + select VIRTIO_NET + help + Say y here to enable TmFifo support. The TmFifo driver provides + platform driver support for the TmFifo which supports console + and networking based on the virtio framework. + endif # MELLANOX_PLATFORM diff --git a/drivers/platform/mellanox/Makefile b/drivers/platform/mellanox/Makefile index 57074d9c..f0c061d 100644 --- a/drivers/platform/mellanox/Makefile +++ b/drivers/platform/mellanox/Makefile @@ -5,3 +5,4 @@ # obj-$(CONFIG_MLXREG_HOTPLUG) += mlxreg-hotplug.o obj-$(CONFIG_MLXREG_IO) += mlxreg-io.o +obj-$(CONFIG_MLXBF_TMFIFO) += mlxbf-tmfifo.o diff --git a/drivers/platform/mellanox/mlxbf-tmfifo-regs.h b/drivers/platform/mellanox/mlxbf-tmfifo-regs.h new file mode 100644 index 000..90c9c2cf --- /dev/null +++ b/drivers/platform/mellanox/mlxbf-tmfifo-regs.h @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2019, Mellanox Technologies. All rights reserved. + */ + +#ifndef __MLXBF_TMFIFO_REGS_H__ +#define __MLXBF_TMFIFO_REGS_H__ + +#include + +#define MLXBF_TMFIFO_TX_DATA 0x0 + +#define MLXBF_TMFIFO_TX_STS 0x8 +#define MLXBF_TMFIFO_TX_STS__LENGTH 0x0001 +#define MLXBF_TMFIFO_TX_STS__COUNT_SHIFT 0 +#define MLXBF_TMFIFO_TX_STS__COUNT_WIDTH 9 +#define MLXBF_TMFIFO_TX_STS__COUNT_RESET_VAL 0 +#define MLXBF_TMFIFO_TX_STS__COUNT_RMASK 0x1ff +#define MLXBF_TMFIFO_TX_STS__COUNT_MASK 0x1ff + +#define MLXBF_TMFIFO_TX_CTL 0x10 +#define MLXBF_TMFIFO_TX_CTL__LENGTH 0x0001 +#define MLXBF_TMFIFO_TX_CTL__LWM_SHIFT 0 +#define MLXBF_TMFIFO_TX_CTL__LWM_WIDTH 8 +#define MLXBF_TMFIFO_TX_CTL__LWM_RESET_VAL 128 +#define MLXBF_TMFIFO_TX_CTL__LWM_RMASK 0xff +#define MLXBF_TMFIFO_TX_CTL__LWM_MASK 0xff +#define MLXBF_TMFIFO_TX_CTL__HWM_SHIFT 8 +#define MLXBF_TMFIFO_TX_CTL__HWM_WIDTH 8 +#define MLXBF_TMFIFO_TX_CTL__HWM_RESET_VAL 128 +#define MLXBF_TMFIFO_TX_CTL__HWM_RMASK 0xff +#define MLXBF_TMFIFO_TX_CTL__HWM_MASK 0xff00 +#define MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_SHIFT 32 +#define MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_WIDTH 9 +#define MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_RESET_VAL 256 +#define MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_RMASK 0x1ff +#define MLXBF_TMFIFO_TX_CTL__MAX_ENTRIES_MASK 0x1ffULL + +#define MLXBF_TMFIFO_RX_DATA 0x0 + +#define MLXBF_TMFIFO_RX_STS 0x8 +#define MLXBF_TMFIFO_RX_STS__LENGTH 0x0001 +#define MLXBF_TMFIFO_RX_STS__COUNT_SHIFT 0 +#define MLXBF_TMFIFO_RX_STS__COUNT_WIDTH 9 +#define MLXBF_TMFIFO_RX_STS__COUNT_RESET_VAL 0 +#define MLXBF_TMFIFO_RX_STS__COUNT_RMASK 0x1ff +#define MLXBF_TMFIFO_RX_STS__COUNT_MASK 0x1ff + +#define MLXBF_TMFIFO_RX_CTL 0x10 +#define MLXBF_TMFIFO_RX_CTL__LENGTH 0x0001 +#define MLXBF_TMFIFO_RX_CTL__LWM_SHIFT 0 +#define MLXBF_TMFIFO_RX_CTL__LWM_WIDTH 8 +#define MLXBF_TMFIFO_RX_CTL__LWM_RESET_VAL 128 +#define MLXBF_TMFIFO_RX_CTL__LWM_RMASK 0xff +#define MLXBF_TMFIFO_RX_CTL__LWM_MASK 0xff +#define MLXBF_TMFIFO_RX_CTL__HWM_SHIFT 8 +#define MLXBF_TMFIFO_RX_CTL__HWM_WIDTH 8 +#define MLXBF_TMFIFO_RX_CTL__HWM_RESET_VAL 128 +#define MLXBF_TMFIFO_RX_CTL__HWM_RMASK 0xff +#define MLXBF_TMFIFO_RX_CTL__HWM_MASK 0xff00 +#define MLXBF_TMFIFO_RX_CTL__MAX_ENTRIES_SHIFT 32 +#define MLXBF_TMFIFO_RX_CTL__MAX_ENTRIES_WIDTH 9 +#define MLXBF_TMFIFO_RX_CTL__MAX_ENTRIES_RESET_VAL 256 +#define MLXBF_TMFIFO_RX_CTL__MAX_ENTRIES_RMASK 0x1ff +#define MLXBF_TMFIFO_RX_CTL__MAX_ENTRIES_MASK 0x1ffULL + +#endif /* !d