[PATCH 0/5] Apple M1 Support

Simon Glass sjg at chromium.org
Sat Sep 25 16:42:30 CEST 2021


Hi Mark,

On Sat, 25 Sept 2021 at 07:52, Mark Kettenis <mark.kettenis at xs4all.nl> wrote:
>
> > From: Simon Glass <sjg at chromium.org>
> > Date: Sat, 25 Sep 2021 07:27:41 -0600
> >
> > Hi Mark,
> >
> > On Sat, 25 Sept 2021 at 02:11, Mark Kettenis <mark.kettenis at xs4all.nl> wrote:
> > >
> > > > From: Simon Glass <sjg at chromium.org>
> > > > Date: Fri, 24 Sep 2021 19:20:32 -0600
> > > >
> > > > Hi Mark,
> > > >
> > > > On Sat, 18 Sept 2021 at 07:54, Mark Kettenis <kettenis at openbsd.org> wrote:
> > > > >
> > > > > This series adds basic support for Apple's M1 SoC to U-Boot.
> > > > > This builds a basic U-Boot that can be used as a payload
> > > > > for the m1n1 boot loader being developed by the Asahi Linux
> > > > > project.
> > > > >
> > > > > The goal here is to privide an UEFI interface on these machines that
> > > >
> > > > provide
> > > >
> > > > > allows booting various open source OSes.  This initial series provides
> > > > > support for the serial port, framebuffer and the USB 3.1 Type-C ports.
> > > > > It can boot a support OS (e.g. OpenBSD/arm64) from a USB disk.
> > > > >
> > > > > Mark Kettenis (5):
> > > > >   arm: apple: Add initial support for Apple's M1 SoC
> > > > >   serial: s5p: Add Apple M1 support
> > > > >   misc: Add Apple DART driver
> > > > >   arm: dts: apple: Add preliminary device trees
> > > > >   doc: board: apple: Add Apple M1 documentation
> > > > >
> > > > >  arch/arm/Kconfig                              |  22 +
> > > > >  arch/arm/Makefile                             |   1 +
> > > > >  arch/arm/dts/t8103-j274.dts                   | 135 +++++
> > > > >  arch/arm/dts/t8103-j293.dts                   |  97 ++++
> > > > >  arch/arm/dts/t8103.dtsi                       | 506 ++++++++++++++++++
> > > > >  arch/arm/include/asm/arch-m1/clk.h            |  11 +
> > > > >  arch/arm/include/asm/arch-m1/uart.h           |  41 ++
> > > > >  arch/arm/mach-apple/Kconfig                   |  18 +
> > > > >  arch/arm/mach-apple/Makefile                  |   4 +
> > > > >  arch/arm/mach-apple/board.c                   | 163 ++++++
> > > > >  arch/arm/mach-apple/lowlevel_init.S           |  16 +
> > > > >  configs/apple_m1_defconfig                    |  14 +
> > > > >  doc/board/apple/index.rst                     |   9 +
> > > > >  doc/board/apple/m1.rst                        |  54 ++
> > > > >  doc/board/index.rst                           |   1 +
> > > > >  drivers/misc/Kconfig                          |   7 +
> > > > >  drivers/misc/Makefile                         |   1 +
> > > > >  drivers/misc/apple_dart.c                     | 171 ++++++
> > > > >  drivers/serial/Kconfig                        |   2 +-
> > > > >  drivers/serial/serial_s5p.c                   |  22 +
> > > > >  include/configs/apple.h                       |  38 ++
> > > > >  .../interrupt-controller/apple-aic.h          |  15 +
> > > > >  include/dt-bindings/pinctrl/apple.h           |  13 +
> > > > >  include/dt-bindings/spmi/spmi.h               |  10 +
> > > > >  24 files changed, 1370 insertions(+), 1 deletion(-)
> > > > >  create mode 100644 arch/arm/dts/t8103-j274.dts
> > > > >  create mode 100644 arch/arm/dts/t8103-j293.dts
> > > > >  create mode 100644 arch/arm/dts/t8103.dtsi
> > > > >  create mode 100644 arch/arm/include/asm/arch-m1/clk.h
> > > > >  create mode 100644 arch/arm/include/asm/arch-m1/uart.h
> > > > >  create mode 100644 arch/arm/mach-apple/Kconfig
> > > > >  create mode 100644 arch/arm/mach-apple/Makefile
> > > > >  create mode 100644 arch/arm/mach-apple/board.c
> > > > >  create mode 100644 arch/arm/mach-apple/lowlevel_init.S
> > > > >  create mode 100644 configs/apple_m1_defconfig
> > > > >  create mode 100644 doc/board/apple/index.rst
> > > > >  create mode 100644 doc/board/apple/m1.rst
> > > > >  create mode 100644 drivers/misc/apple_dart.c
> > > > >  create mode 100644 include/configs/apple.h
> > > > >  create mode 100644 include/dt-bindings/interrupt-controller/apple-aic.h
> > > > >  create mode 100644 include/dt-bindings/pinctrl/apple.h
> > > > >  create mode 100644 include/dt-bindings/spmi/spmi.h
> > > > >
> > > > > --
> > > > > 2.33.0
> > > > >
> > > >
> > > > I gave this a whirl on a Macbook Air A2337 and needed the patch below
> > > > to build the devicetree files. Sorry the formatting is broken.
> > > >
> > > > Also when booting I get this:
> > > >
> > > > ...
> > > > Preparing to boot kernel at 0x808200000 with fdt at 0x8082e8000
> > > > Valid payload found
> > > > Preparing to run next stage at 0x808200000...
> > > > MMU: shutting down...
> > > > MMU: shutdown successful, clearing caches
> > > >
> > > >
> > > > Then the display clears and it hangs. If I try the J274 devicetree it
> > > > just reboots at that point.
> > > >
> > > > What should I expect? I was hoping for console output as I don't have
> > > > serial connected. I don't have a suitable serial cable, and the USB
> > > > gadget mode did not result in a ttyACM0 device appearing.
> > >
> > > For framebuffer support you also need the "30bpp framebuffer support"
> > > series I posted earlier:
> > >
> > > https://patchwork.ozlabs.org/project/uboot/list/?series=262617
> > >
> > > With that your should get the usual U-Boot output on the screen.  I've
> > > not tested the Air, but it should work there.
> >
> > Ah OK, yes that fixes it, thanks!
> >
> > So how do I get the keyboard to work in U-Boot? Or are you using
> > serial somehow?
>
> The laptop keyboard doesn't work yet, so I'm using a USB keyboard when
> I'm not using a serial console.  You need the xhci-dwc3 diff I sent
> earlier for that:
>
> https://patchwork.ozlabs.org/project/uboot/patch/20210916140009.59009-1-kettenis@openbsd.org/

Actually that seems to be applied in mainline now. Yes USB keyboard works.

It looks like the keyboard needs SPI and there is some sort of linux
keyboard driver, but perhaps not for M1.

>
> > Also it takes for ever to put a test version on the device...how are
> > you doing that for development?
>
> If you install m1n1.macho without a payload, you can then use the
> python scripts that come with m1n1 to upload kernels over serial.
> There is a USB gadget implementation in m1n1, so you don't need a real
> serial connection.  Just connect a Linux machine to the M1 Mac using a
> USB cable and a USB serial device should show up on the Linux machine
> once m1n1 is running on the Mac.  Set the M1N1DEVICE environment
> variable to the right device name and run:
>
> $ python3 linux.py --compression=none u-boot-nodtb.bin t8103-j274.dtb

OK I see. I did try the USB serial thing but was missing the fact that
U-Boot seems to kill it. So this works fine, thank you will await your
next series. Any way to get U-Boot serial console going in the same
way?

[..]

Regards,
Simon


More information about the U-Boot mailing list