FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Add support for Novarq Tactical-1000 by troglobit · Pull Request #1648 · kernelkit/infix · GitHub

Add support for Novarq Tactical-1000 - #1648

Open
troglobit wants to merge 7 commits into
mainfrom
tactical
Open

troglobit wants to merge 7 commits into
mainfrom
tactical

Conversation

Copy link
Copy Markdown
Contributor

Description

  • Initial board support for Novarq Tactical-1000
  • New image-itb-boot image format, for bootloaders without SquashFS
  • Document microchip,ev23x71a in AT91 binding
  • Update microchip-ev23x71a board README and tidy up

Note: no bootloader support yet.

Checklist

Tick relevant boxes, this PR is-a or has-a:

  • Bugfix
    • Regression tests
    • ChangeLog updates (for next release)
  • Feature
    • YANG model change => revision updated?
    • Regression tests added?
    • ChangeLog updates (for next release)
    • Documentation added?
  • Test changes
    • Checked in changed Readme.adoc (make test-spec)
    • Added new test to group Readme.adoc and yaml file
  • Code style update (formatting, renaming)
  • Refactoring (please detail in commit messages)
  • Build related changes
  • Documentation content changes
    • ChangeLog updated (for major changes)
  • Other (please describe):

Comment thread configs/aarch64_defconfig Outdated
Add board support for the Novarq Tactical 1000, a cut down LAN969x
reference design: a Cortex-A53 with a TSN capable switch core, 24 GbE
copper ports over QSGMII, four 10G SFP+ cages, and an RGMII management
port.  The sample reports part 0x9697, a LAN9696TSN, so it has PTP and
PSFP but not the RedBox the EV23X71A's LAN9696RED offers.

The device tree comes from Novarq, cherry-picked unsquashed so the
patches can be traced and rebuilt at the next kernel upgrade.  Their
tree targets 7.3, and a fourth patch drops the three things 6.18 has no
support for: the QSPI controller, the tmon fan PWM, and the thermal
cooling maps that drove it.  Revert that one at 7.3.

The rename rule matches the device tree node path, as the EV23X71A's
does, but the names follow the port labels.  Copper ports run backwards
inside each QSGMII quad, port@0 is lan4 and port@3 is lan1, so
numbering them by probe order would silently reverse every group of
four.

There is no genimage.cfg.in.  The only FIP we can build for a Laguna
board today is the EV23X71A's, and its DDR parameters describe 896 MiB
where this board has 2 GiB.  Writing that over the vendor boot chain
would be unrecoverable: BL1 is mask ROM and authenticates BL2, and we
have not found how VCORE[3:0] is strapped here, so there is no way back
through NOR or the TF-A monitor.  Netboot until Novarq answer that.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
6.18 ships lan9696-ev23x71a.dts but does not document microchip,ev23x71a
in the AT91 binding, so dtbs_check has nothing to validate the board
against.  Take the upstream commit that adds it.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
The part number decides whether the driver offers PTP and PSFP, and it
is the only thing that tells two otherwise identical Laguna boards
apart, so it is worth having before Linux is up.

Trim the prose while here: a handful of sentences that set the scene
before getting to the point, and one comma splice.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Infix netboots from rootfs.itb alone: the bootloader maps the SquashFS
inside it and runs sysboot, which picks the kernel and device tree out of
/boot.  That needs BLKMAP, SquashFS, and sysboot, which our own U-Boot
gets from board/common/uboot/extras.config.  The Tactical 1000 ships a
vendor U-Boot with none of the three, and we cannot replace it until
Novarq tell us how VCORE[3:0] is strapped, so there is no way back from a
bad FIP.

Pack the kernel, the device tree, and the root filesystem into one FIT
instead, which that bootloader can start with a single bootm.  Enabled by
default when a board that needs it is, and unsigned: nothing that needs
this image can check a signature, and the verified path is still
rootfs.itb by way of sysboot.

The device tree gets a load address rather than being left where mkimage
packed it.  U-Boot grows the tree in place to add the kernel command line
and the ramdisk bounds, and inside the image that growth lands on the
ramdisk behind it.  The kernel is then handed a tree it cannot parse and
dies before earlycon, with nothing on the console to say why.

A boot script comes with it, to hand out as the DHCP boot file so a test
system needs no typing at the prompt.  It takes the image name from
${bootfile}, so it finds whatever sits beside it on the server, and reads
the root filesystem size out of the FIT rather than having it built in.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
First boot after a factory reset does not enter the regular code path
because factory-config essentially becomes the startup-config.  So it
left the status LED blinking.

Follow-up to a7c95cd.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
One configuration per device tree in the build, named after it, so the
same image boots any board with bootm <addr>#<board>.  The board this
build was configured for stays behind 'boot', which the boot script uses,
so nothing about the tested path changes.

The kernel is gzipped, three to one, and the data is external with each
blob on a 4 KiB boundary, as rootfs.itb has it.  Not at a fixed offset,
though: with a configuration per board the header outgrows the 4 KiB
rootfs.itb reserves, and mkimage places the data after it either way.

The device trees go last.  U-Boot grows the selected tree in place to add
the kernel command line and the ramdisk bounds, and packed ahead of the
ramdisk that growth overruns it.  After the ramdisk it only ever reaches
another board's tree.  The default board's tree keeps a load address of
its own as well, since that is the path that has been booted.

This is what the removed mkfit.sh did, refactored into the image package
its removal asked for, and reading the device trees from the target tree
rather than from images/, which is where it broke.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
The root filesystem carries the kernel in /boot for the bootloaders that
read it from there.  boot.itb already has it, so drop the copy, 13 MiB
compressed, or about a twelfth of the image.

Done under fakeroot so ownership survives the round trip, and with the
block size and compression read off the rootfs itself so it matches
whatever the build used.  It is a knob, on by default: it costs an
unsquash and resquash of the rootfs on every build, and the rootfs that
boots is then not byte for byte the one in rootfs.itb.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>

This branch has not been deployed

No deployments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants


Back | FazBrowse Home | New Git URL