[PATCH 7/8] nvme: apple: Add driver for Apple NVMe storage controller
Simon Glass
sjg at chromium.org
Sat Jan 22 18:17:08 CET 2022
Hi Mark,
On Sat, 22 Jan 2022 at 07:45, Mark Kettenis <mark.kettenis at xs4all.nl> wrote:
>
> > From: Simon Glass <sjg at chromium.org>
> > Date: Fri, 21 Jan 2022 18:40:24 -0700
> >
> > Hi Mark,
> >
> > On Fri, 14 Jan 2022 at 04:05, Mark Kettenis <kettenis at openbsd.org> wrote:
> > >
> > > Add a driver for the NVMe storage controller integrated on
> > > Apple SoCs. This NVMe controller isn't PCI based and deviates
> > > from the NVMe standard in its implementation of the command
> > > submission queue and the integration of an NVMMU that needs
> > > to be managed. This commit tweaks the core NVMe code to
> > > support the linear command submission queue implemented by
> > > this controller. But setting up the submission queue and
> > > managing the NVMMU controller is handled by implementing
> > > the driver ops that were added in an earlier commit.
> > >
> > > Signed-off-by: Mark Kettenis <kettenis at openbsd.org>
> > > Tested-on: firefly-rk3399
> > > Tested-by: Mark Kettenis <kettenis at openbsd.org>
> > > ---
> > > configs/apple_m1_defconfig | 1 +
> > > drivers/nvme/Kconfig | 11 ++
> > > drivers/nvme/Makefile | 1 +
> > > drivers/nvme/nvme_apple.c | 233 +++++++++++++++++++++++++++++++++++++
> > > 4 files changed, 246 insertions(+)
> > > create mode 100644 drivers/nvme/nvme_apple.c
> >
> > Tested on: Macbook Air M1
> > Tested-by: Simon Glass <sjg at chromium.org>
> >
> > >
> > > diff --git a/configs/apple_m1_defconfig b/configs/apple_m1_defconfig
> > > index cb235e4e7d..1528217b17 100644
> > > --- a/configs/apple_m1_defconfig
> > > +++ b/configs/apple_m1_defconfig
> > > @@ -11,6 +11,7 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y
> > > # CONFIG_NET is not set
> > > # CONFIG_MMC is not set
> > > CONFIG_DEBUG_UART_ANNOUNCE=y
> > > +CONFIG_NVME_APPLE=y
> > > CONFIG_USB_XHCI_HCD=y
> > > CONFIG_USB_XHCI_DWC3=y
> > > CONFIG_USB_KEYBOARD=y
> > > diff --git a/drivers/nvme/Kconfig b/drivers/nvme/Kconfig
> > > index 78da444c8b..0cb465160b 100644
> > > --- a/drivers/nvme/Kconfig
> > > +++ b/drivers/nvme/Kconfig
> > > @@ -10,6 +10,17 @@ config NVME
> > > This option enables support for NVM Express devices.
> > > It supports basic functions of NVMe (read/write).
> > >
> > > +config NVME_APPLE
> > > + bool "Apple NVMe controller support"
> > > + select NVME
> > > + help
> > > + This option enables support for the NVMe storage
> > > + controller integrated on Apple SoCs. This controller
> > > + isn't PCI-based based and deviates from the NVMe
> > > + standard implementation in its implementation of
> > > + the command submission queue and the integration
> > > + of an NVMMU that needs to be managed.
> > > +
> > > config NVME_PCI
> > > bool "NVM Express PCI device support"
> > > depends on PCI
> > > diff --git a/drivers/nvme/Makefile b/drivers/nvme/Makefile
> > > index fad9724e17..fa7b619446 100644
> > > --- a/drivers/nvme/Makefile
> > > +++ b/drivers/nvme/Makefile
> > > @@ -3,4 +3,5 @@
> > > # Copyright (C) 2017, Bin Meng <bmeng.cn at gmail.com>
> > >
> > > obj-y += nvme-uclass.o nvme.o nvme_show.o
> > > +obj-$(CONFIG_NVME_APPLE) += nvme_apple.o
> > > obj-$(CONFIG_NVME_PCI) += nvme_pci.o
> > > diff --git a/drivers/nvme/nvme_apple.c b/drivers/nvme/nvme_apple.c
> > > new file mode 100644
> > > index 0000000000..b0dc8492f0
> > > --- /dev/null
> > > +++ b/drivers/nvme/nvme_apple.c
> > > @@ -0,0 +1,233 @@
> > > +// SPDX-License-Identifier: GPL-2.0+
> > > +/*
> > > + * (C) Copyright 2021 Mark Kettenis <kettenis at openbsd.org>
> > > + */
> > > +
> > > +#include <common.h>
> > > +#include <dm.h>
> > > +#include <mailbox.h>
> > > +#include <mapmem.h>
> > > +#include "nvme.h"
> > > +#include <reset.h>
> > > +
> > > +#include <asm/io.h>
> > > +#include <asm/arch-apple/rtkit.h>
> >
> > asm/arch/ should work
>
> It doesn't. For some reason I end up with
>
> arch/arm/include/asm/arch -> arch-m1
>
> But this rtkit stuff is expected to be generic and apply to all Apple
> SoCs, not just the M1.
Hmm so you plan to have an arch/m2 as well? Can we not put everything
in arch/apple then? We don't normally have arch directories for
different generations unless they are completely different.
[..]
Regards,
Simon
More information about the U-Boot
mailing list