-
Notifications
You must be signed in to change notification settings - Fork 115
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[NOT-FOR-UPSTREAM] Add build instructions
For convenience this also adds a small beaglev_defconfig and the firmware needed for the brcmfmac driver along with the signed regulatory database. The firmware is from the linux-firmware repo and the regulatory database from the wireless-regdb Fedora package. Signed-off-by: Emil Renner Berthing <[email protected]> Signed-off-by: Geert Uytterhoeven <[email protected]> Signed-off-by: Drew Fustini <[email protected]>
- Loading branch information
Showing
9 changed files
with
464 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
# Linux kernel for the BeagleV Starlight Beta board | ||
|
||
## What is this? | ||
|
||
The [BeagleV Starlight Beta][beta] board is a Linux-capable 64bit RISC-V | ||
development board using the [StarFive JH7100 SoC][soc]. About 300 was sent out | ||
to developers in April 2021 in preparation for an eventual BeagleV branded | ||
board using the updated JH7110 chip. | ||
The BeagleBoard organization has since [cancelled that project][beaglev], but | ||
instead StarFive has [teamed up with Radxa][radxa] to produce new boards with | ||
the JH7100 later in 2021 and the updated JH7110 is still scheduled to be out in | ||
2022. | ||
|
||
This tree is meant to collect all the in-development patches for running Linux on | ||
the JH7100 based boards. | ||
|
||
[beta]: https://github.com/beagleboard/beaglev-starlight | ||
[soc]: https://github.com/starfive-tech/StarLight_Docs | ||
[beaglev]: https://beaglev.org/blog/2021-07-30-the-future-of-beaglev-community | ||
[radxa]: https://www.starfivetech.com/en/site/new_details/836 | ||
|
||
## Cross-compiling | ||
|
||
Cross-compiling the Linux kernel is surprisingly easy since it doesn't depend | ||
on any (target) libraries and most distributions already have packages with a | ||
working cross-compiler. We'll also need a few other tools to build everything: | ||
```shell | ||
# Debian/Ubuntu | ||
sudo apt-get install libncurses-dev libssl-dev bc flex bison make gcc gcc-riscv64-linux-gnu | ||
# Fedora | ||
sudo dnf install ncurses-devel openssl openssl-devel bc flex bison make gcc gcc-riscv64-linux-gnu | ||
# Archlinux | ||
sudo pacman -S --needed ncurses openssl bc flex bison make gcc riscv64-linux-gnu-gcc | ||
``` | ||
|
||
The build system needs to know that we want to cross-compile a kernel for | ||
RISC-V by setting `ARCH=riscv`. It also needs to know the prefix of our | ||
cross-compiler using `CROSS_COMPILE=riscv64-linux-gnu-`. Also let's assume | ||
we're building on an 8-core machine so compilation can be greatly sped up by | ||
telling make to use all 8 cores with `-j8`. | ||
|
||
First we need to configure the kernel though. Linux has a *very* extensive | ||
configuration system, but you can get a good baseline configuration for the | ||
board using: | ||
```shell | ||
make -j8 ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- starlight_defconfig | ||
``` | ||
|
||
There is nothing magic about this configuration other than it has all the | ||
drivers enabled that are working for the hardware on the board. In fact it has | ||
very little extra features enabled which is great for compile times, but you | ||
are very much encouraged to add additional drivers and configure your kernel | ||
further using | ||
```shell | ||
make -j8 ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- nconfig | ||
``` | ||
|
||
Now compile the whole thing with | ||
``` | ||
make -j8 ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- | ||
``` | ||
|
||
|
||
## Installing | ||
|
||
Once the build has finished the resulting kernel can be found at | ||
```shell | ||
arch/riscv/boot/Image | ||
``` | ||
You'll also need the matching device tree at | ||
```shell | ||
arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dtb | ||
``` | ||
These two files should be copied to the boot partition on the SD card. That is | ||
onto the same file system that contains the `extlinux/extlinux.conf`. On the | ||
default Fedora image this is mounted at `/boot`. | ||
|
||
Now add the following entry to the `extlinux/extlinux.conf` file: | ||
``` | ||
label My New Kernel | ||
kernel /Image | ||
fdt /jh7100-beaglev-starlight.dtb | ||
append earlycon console=ttyS0,115200n8 root=/dev/mmcblk0p2 rootwait stmmac.chain_mode=1 | ||
``` | ||
|
||
This assumes your root file system is at `/dev/mmcblk0p2` which it is on the | ||
default Fedora image. Also if your kernel is very big it might be beneficial to | ||
use the compressed `Image.gz` rather than the uncompressed `Image`. | ||
|
||
The `starlight_defconfig` doesn't enable modules, but if you enabled them in | ||
your build you'll also need to install them in `/lib/modules/` on the root file | ||
system. How to do that best is out of scope for this README though. | ||
|
||
|
||
## Status | ||
|
||
#### SoC | ||
|
||
- [x] Pinctrl/Pinmux | ||
- [x] GPIO | ||
- [x] Serial port | ||
- [x] I2C | ||
- [x] SPI | ||
- [x] MMC / SDIO / SD card | ||
- [x] Random number generator | ||
- [x] Temperature sensor | ||
- [x] Ethernet, though a little flaky and `stmmac.chain_mode=1` needed on the cmdline | ||
- [x] USB, USB 3.0 is broken with `CONFIG_PM` enabled | ||
- [x] DRM driver | ||
- [x] NVDLA | ||
- [x] Clock tree, WIP clock driver is mostly read-only for now | ||
- [ ] Watchdog | ||
- [ ] Security Engine | ||
- [ ] MIPI-DSI | ||
- [ ] ISP | ||
- [ ] MIPI-CSI | ||
- [ ] Video Decode | ||
- [ ] Video Encode | ||
- [ ] NNE50 | ||
- [ ] Vision DSP | ||
|
||
#### Board | ||
|
||
- [x] LED | ||
- [x] PMIC / Reboot | ||
- [x] Ethernet PHY | ||
- [x] HDMI | ||
- [x] AP6236 Wifi | ||
- [x] AP6236 Bluetooth, with a [userspace tool][patchram] | ||
- [ ] GD25LQ256D SPI flash | ||
|
||
[patchram]: https://github.com/AsteroidOS/brcm-patchram-plus | ||
|
||
## Contributing | ||
|
||
If you're working on cleaning up or upstreaming some of this or adding support | ||
for more of the SoC I'd very much like to incorporate it into this tree. Either | ||
send a pull request, mail or contact Esmil on IRC/Slack. | ||
|
||
Also I think of this tree mostly as a collection of patches that will hopefully | ||
mature enough to be submitted upstream. So expect regular rebases. |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,211 @@ | ||
CONFIG_LOCALVERSION="-starlight" | ||
CONFIG_SYSVIPC=y | ||
CONFIG_POSIX_MQUEUE=y | ||
CONFIG_WATCH_QUEUE=y | ||
# CONFIG_CROSS_MEMORY_ATTACH is not set | ||
CONFIG_NO_HZ_IDLE=y | ||
CONFIG_HIGH_RES_TIMERS=y | ||
CONFIG_BPF_SYSCALL=y | ||
CONFIG_PSI=y | ||
# CONFIG_CPU_ISOLATION is not set | ||
CONFIG_IKCONFIG=y | ||
CONFIG_IKCONFIG_PROC=y | ||
CONFIG_CGROUPS=y | ||
CONFIG_CGROUP_SCHED=y | ||
CONFIG_CFS_BANDWIDTH=y | ||
CONFIG_CGROUP_PIDS=y | ||
CONFIG_CGROUP_CPUACCT=y | ||
CONFIG_NAMESPACES=y | ||
CONFIG_BLK_DEV_INITRD=y | ||
# CONFIG_RD_BZIP2 is not set | ||
# CONFIG_RD_LZMA is not set | ||
# CONFIG_RD_XZ is not set | ||
# CONFIG_RD_LZO is not set | ||
# CONFIG_RD_LZ4 is not set | ||
CONFIG_EXPERT=y | ||
# CONFIG_SYSFS_SYSCALL is not set | ||
CONFIG_USERFAULTFD=y | ||
CONFIG_PERF_EVENTS=y | ||
# CONFIG_VM_EVENT_COUNTERS is not set | ||
# CONFIG_SLUB_DEBUG is not set | ||
CONFIG_SHUFFLE_PAGE_ALLOCATOR=y | ||
CONFIG_SOC_STARFIVE_VIC7100=y | ||
CONFIG_SMP=y | ||
CONFIG_NR_CPUS=4 | ||
# CONFIG_RISCV_SBI_V01 is not set | ||
CONFIG_JUMP_LABEL=y | ||
# CONFIG_STACKPROTECTOR is not set | ||
# CONFIG_GCC_PLUGINS is not set | ||
CONFIG_BLK_WBT=y | ||
# CONFIG_BLK_DEBUG_FS is not set | ||
CONFIG_PARTITION_ADVANCED=y | ||
# CONFIG_MQ_IOSCHED_DEADLINE is not set | ||
# CONFIG_MQ_IOSCHED_KYBER is not set | ||
CONFIG_IOSCHED_BFQ=y | ||
CONFIG_KSM=y | ||
CONFIG_CMA=y | ||
CONFIG_ZSMALLOC=y | ||
CONFIG_NET=y | ||
CONFIG_PACKET=y | ||
CONFIG_UNIX=y | ||
CONFIG_INET=y | ||
CONFIG_IP_ADVANCED_ROUTER=y | ||
CONFIG_IP_MULTIPLE_TABLES=y | ||
CONFIG_IP_PNP=y | ||
CONFIG_IP_PNP_DHCP=y | ||
# CONFIG_INET_DIAG is not set | ||
# CONFIG_IPV6_SIT is not set | ||
CONFIG_IPV6_MULTIPLE_TABLES=y | ||
CONFIG_NET_SCHED=y | ||
CONFIG_NET_SCH_FQ_CODEL=y | ||
CONFIG_BT=y | ||
CONFIG_BT_RFCOMM=y | ||
CONFIG_BT_RFCOMM_TTY=y | ||
CONFIG_BT_BNEP=y | ||
CONFIG_BT_HIDP=y | ||
CONFIG_BT_HS=y | ||
CONFIG_BT_HCIUART=y | ||
CONFIG_BT_HCIUART_H4=y | ||
CONFIG_CFG80211=y | ||
# CONFIG_CFG80211_DEFAULT_PS is not set | ||
CONFIG_RFKILL=y | ||
CONFIG_DEVTMPFS=y | ||
CONFIG_DEVTMPFS_MOUNT=y | ||
# CONFIG_STANDALONE is not set | ||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set | ||
CONFIG_EXTRA_FIRMWARE="regulatory.db regulatory.db.p7s brcm/brcmfmac43430-sdio.bin brcm/brcmfmac43430-sdio.clm_blob brcm/brcmfmac43430-sdio.beagle,beaglev-starlight-jh7100.txt" | ||
CONFIG_EXTRA_FIRMWARE_DIR="firmware" | ||
CONFIG_MTD=y | ||
CONFIG_MTD_BLOCK=y | ||
CONFIG_MTD_PARTITIONED_MASTER=y | ||
CONFIG_MTD_SPI_NOR=y | ||
# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set | ||
CONFIG_ZRAM=y | ||
CONFIG_ZRAM_MEMORY_TRACKING=y | ||
CONFIG_BLK_DEV_LOOP=y | ||
CONFIG_BLK_DEV_LOOP_MIN_COUNT=1 | ||
CONFIG_BLK_DEV_NBD=y | ||
CONFIG_SCSI=y | ||
# CONFIG_SCSI_PROC_FS is not set | ||
CONFIG_BLK_DEV_SD=y | ||
CONFIG_CHR_DEV_SG=y | ||
CONFIG_SCSI_CONSTANTS=y | ||
CONFIG_SCSI_SCAN_ASYNC=y | ||
# CONFIG_SCSI_LOWLEVEL is not set | ||
CONFIG_NETDEVICES=y | ||
CONFIG_WIREGUARD=y | ||
CONFIG_TUN=y | ||
CONFIG_STMMAC_ETH=y | ||
CONFIG_MICREL_PHY=y | ||
CONFIG_BRCMFMAC=y | ||
CONFIG_INPUT_EVDEV=y | ||
# CONFIG_INPUT_KEYBOARD is not set | ||
# CONFIG_INPUT_MOUSE is not set | ||
# CONFIG_SERIO is not set | ||
# CONFIG_LEGACY_PTYS is not set | ||
# CONFIG_LDISC_AUTOLOAD is not set | ||
CONFIG_SERIAL_8250=y | ||
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set | ||
# CONFIG_SERIAL_8250_16550A_VARIANTS is not set | ||
CONFIG_SERIAL_8250_CONSOLE=y | ||
CONFIG_SERIAL_8250_DW=y | ||
# CONFIG_DEVMEM is not set | ||
# CONFIG_I2C_COMPAT is not set | ||
CONFIG_I2C_CHARDEV=y | ||
# CONFIG_I2C_HELPER_AUTO is not set | ||
CONFIG_I2C_DESIGNWARE_PLATFORM=y | ||
CONFIG_SPI=y | ||
CONFIG_SPI_CADENCE_QUADSPI=y | ||
CONFIG_SPI_DESIGNWARE=y | ||
CONFIG_SPI_DW_DMA=y | ||
CONFIG_SPI_DW_MMIO=y | ||
CONFIG_SPI_SPIDEV=y | ||
# CONFIG_PTP_1588_CLOCK is not set | ||
CONFIG_GPIOLIB_FASTPATH_LIMIT=256 | ||
CONFIG_GPIO_SYSFS=y | ||
CONFIG_GPIO_TPS65086=y | ||
CONFIG_POWER_RESET=y | ||
CONFIG_POWER_RESET_TPS65086=y | ||
CONFIG_SENSORS_SFCTEMP=y | ||
CONFIG_THERMAL=y | ||
CONFIG_THERMAL_NETLINK=y | ||
CONFIG_THERMAL_STATISTICS=y | ||
CONFIG_THERMAL_WRITABLE_TRIPS=y | ||
CONFIG_CPU_THERMAL=y | ||
CONFIG_MFD_TPS65086=y | ||
CONFIG_DRM=y | ||
CONFIG_DRM_I2C_NXP_TDA998X=y | ||
CONFIG_DRM_STARFIVE=y | ||
CONFIG_FB=y | ||
# CONFIG_VGA_CONSOLE is not set | ||
CONFIG_FRAMEBUFFER_CONSOLE=y | ||
CONFIG_USB=y | ||
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | ||
CONFIG_USB_MON=y | ||
CONFIG_USB_XHCI_HCD=y | ||
CONFIG_USB_XHCI_DBGCAP=y | ||
CONFIG_USB_STORAGE=y | ||
CONFIG_USB_UAS=y | ||
CONFIG_USB_CDNS_SUPPORT=y | ||
CONFIG_USB_CDNS3=y | ||
CONFIG_USB_CDNS3_HOST=y | ||
CONFIG_MMC=y | ||
# CONFIG_PWRSEQ_EMMC is not set | ||
CONFIG_MMC_DW=y | ||
CONFIG_NEW_LEDS=y | ||
CONFIG_LEDS_CLASS=y | ||
CONFIG_LEDS_GPIO=y | ||
CONFIG_LEDS_TRIGGERS=y | ||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y | ||
CONFIG_DMADEVICES=y | ||
CONFIG_DW_AXI_DMAC=y | ||
CONFIG_DMABUF_HEAPS=y | ||
CONFIG_DMABUF_HEAPS_SYSTEM=y | ||
# CONFIG_VIRTIO_MENU is not set | ||
# CONFIG_VHOST_MENU is not set | ||
# CONFIG_IOMMU_SUPPORT is not set | ||
CONFIG_PWM=y | ||
CONFIG_PWM_SIFIVE_PTC=y | ||
CONFIG_EXT4_FS=y | ||
CONFIG_EXT4_FS_POSIX_ACL=y | ||
CONFIG_EXT4_FS_SECURITY=y | ||
CONFIG_BTRFS_FS=y | ||
CONFIG_BTRFS_FS_POSIX_ACL=y | ||
# CONFIG_MANDATORY_FILE_LOCKING is not set | ||
# CONFIG_DNOTIFY is not set | ||
CONFIG_FANOTIFY=y | ||
CONFIG_AUTOFS_FS=y | ||
CONFIG_VFAT_FS=y | ||
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-15" | ||
CONFIG_FAT_DEFAULT_UTF8=y | ||
CONFIG_EXFAT_FS=y | ||
CONFIG_PROC_KCORE=y | ||
CONFIG_TMPFS=y | ||
CONFIG_TMPFS_POSIX_ACL=y | ||
# CONFIG_MISC_FILESYSTEMS is not set | ||
CONFIG_NFS_FS=y | ||
CONFIG_ROOT_NFS=y | ||
CONFIG_NLS_DEFAULT="utf8" | ||
CONFIG_NLS_CODEPAGE_437=y | ||
CONFIG_NLS_ISO8859_15=y | ||
CONFIG_NLS_UTF8=y | ||
CONFIG_LSM="" | ||
CONFIG_CRYPTO_ZSTD=y | ||
# CONFIG_CRYPTO_HW is not set | ||
# CONFIG_RAID6_PQ_BENCHMARK is not set | ||
CONFIG_DMA_CMA=y | ||
# CONFIG_SYMBOLIC_ERRNAME is not set | ||
CONFIG_STRIP_ASM_SYMS=y | ||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set | ||
CONFIG_DEBUG_FS=y | ||
# CONFIG_DEBUG_MISC is not set | ||
CONFIG_DEBUG_RODATA_TEST=y | ||
CONFIG_DEBUG_WX=y | ||
CONFIG_SOFTLOCKUP_DETECTOR=y | ||
CONFIG_WQ_WATCHDOG=y | ||
# CONFIG_SCHED_DEBUG is not set | ||
CONFIG_STACKTRACE=y | ||
CONFIG_RCU_CPU_STALL_TIMEOUT=60 | ||
# CONFIG_RCU_TRACE is not set | ||
# CONFIG_FTRACE is not set | ||
# CONFIG_RUNTIME_TESTING_MENU is not set |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
# SPDX-License-Identifier: GPL-2.0+ | ||
# (C) Copyright 2018 Linaro Ltd | ||
# NVRAM config file for the Ampak AP6212 43430 WiFi/BT module | ||
aa2g=1 | ||
ag0=255 | ||
AvVmid_c0=0x0,0xc8 | ||
boardflags=0x00404201 | ||
# boardflags3 is not set | ||
boardnum=22 | ||
boardrev=0x1101 | ||
boardtype=0x0726 | ||
# btc_params is not set | ||
cckbw202gpo=0x5555 | ||
cckpwroffset0=5 | ||
ccode=ALL | ||
# cldo_pwm is not set | ||
deadman_to=0xffffffff | ||
devid=0x43e2 | ||
extpagain2g=0 | ||
il0macaddr=00:90:4c:c5:12:38 | ||
legofdmbw202gpo=0x77777777 | ||
macaddr=00:90:4c:c5:12:38 | ||
manfid=0x2d0 | ||
maxp2ga0=90 | ||
mcsbw202gpo=0xaaaaaaaa | ||
muxenab=0x10 | ||
nocrc=1 | ||
ofdmdigfilttype=7 | ||
# ofdmdigfilttypebe is not set | ||
pa0itssit=0x20 | ||
pa2ga0=-168,7161,-820 | ||
# pacalidx2g is not set | ||
# papdendidx is not set | ||
# papdepsoffset is not set | ||
papdmode=2 | ||
# papdvalidtest is not set | ||
prodid=0x0726 | ||
# propbw202gpois not set | ||
# spurconfig is not set | ||
sromrev=11 | ||
txpwrbckof=6 | ||
vendid=0x14e4 | ||
wl0id=0x431b | ||
xtalfreq=26000 |
Oops, something went wrong.