mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
cb911a05b0
The linux-4.14.99 had introduced below upstream patch. 6636dc5e01c6 arm64: io: Ensure value passed to __iormb() is held in a 64-bit register It was causing VFIO driver build issue. This patch is to fix it. CC drivers/vfio/fsl-mc/vfio_fsl_mc.o In file included from ./include/linux/scatterlist.h:9:0, from ./include/linux/iommu.h:22, from drivers/vfio/fsl-mc/vfio_fsl_mc.c:14: drivers/vfio/fsl-mc/vfio_fsl_mc.c: In function 'vfio_fsl_mc_dprc_wait_for_response': ./arch/arm64/include/asm/io.h:122:45: error: expected expression before ')' token : "=r" (tmp) : "r" ((unsigned long)(v)) \ ^ drivers/vfio/fsl-mc/vfio_fsl_mc.c:334:3: note: in expansion of macro '__iormb' __iormb(); ^~~~~~~ ./arch/arm64/include/asm/io.h:122:45: error: expected expression before ')' token : "=r" (tmp) : "r" ((unsigned long)(v)) \ ^ drivers/vfio/fsl-mc/vfio_fsl_mc.c:336:3: note: in expansion of macro '__iormb' __iormb(); ^~~~~~~ Reported-by: Mathew McBride <matt@traverse.com.au> Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> |
||
---|---|---|
.. | ||
armv7 | ||
armv8_32b | ||
armv8_64b | ||
base-files | ||
files/arch/arm64/boot/dts/freescale | ||
image | ||
patches-4.14 | ||
Makefile | ||
modules.mk | ||
README |
Layerscape Quick Start 1. Layerscape target support ---------------------------- * ARMv8 64-bit LS1012ARDB LS1012AFRWY LS1043ARDB LS1046ARDB LS1088ARDB LS2088ARDB (SD card boot support on LS1043ARDB/LS1046ARDB/LS1088ARDB) * ARMv8 32-bit LS1012ARDB LS1012AFRWY LS1043ARDB LS1046ARDB * ARMv7 LS1021ATWR LS1021AIOT (SD card boot support on LS1021ATWR/LS1021AIOT) 2. Build -------- Before configuration and build, update and install package feeds. $ ./scripts/feeds update -a $ ./scripts/feeds install -a * make menuconfig Target System: "NXP Layerscape" Subtarget: (Select subtarget) Target Profile: (Select device, or "Multiple devices") Target Devices: (Select devices. Available when Target Profile is "Multiple devices") Target Images: (Disable "GZip images" if don't want to unzip manually to use the images.) Note: The first time make menuconfig would create a .config file which would include all dependencies for selected target. After that, make menuconfig still could be used to modify packages. If want to change other target, please remove .config and make menuconfig to select again. Otherwise the packages selected in .config would be a mess. * make download (or make download -j<n>) * make (or make -j<n>) * Final firmware/image Path: bin/targets/layerscape/<subtarget>/ Firmware for flash: openwrt-layerscape-<subtarget>-<device>-<rootfs>-firmware.bin Image for SD card: openwrt-layerscape-<subtarget>-<device>-<rootfs>-sdcard.img 3. Program NOR/QSPI flash or SD card ------------------------------------ The firmware.bin or sdcard.img is an all-in-one image including all things for OpenWrt staring up. (except LS1012AFRWY. Refer to 3.3.) If you want to install all things into flash, please use firmware.bin. If you want to install all things into SD card, please use sdcard.img. 3.1 Program sdcard.img to SD card --------------------------------- sdcard.img could be programmed to SD card in either u-boot environment or linux environment. After programming, configure the board to boot from SD card. * u-boot environment => tftp a0000000 <image_name>-sdcard.img => mmc write a0000000 0 a0000 Note: The default sdcard.img size is 320MB. a0000 is the block number for 320MB. blk_num = filesize / 512. * linux environment $ dd if=./<image_name>-sdcard.img of=/dev/mmcblkx Note: Need to check the SD card device name to replace "mmcblkx". 3.2 Program firmware.bin to flash --------------------------------- * LS1012ARDB (QSPI flash) Start up from bank1, and program firmware to bank2 with below commands. Switch to bank2 to start up OpenWrt. => tftp a0000000 <firmware_name>-firmware.bin => i2c mw 0x24 0x7 0xfc;i2c mw 0x24 0x3 0xf5 => sf probe 0:0 => sf erase 0 +$filesize => sf write a0000000 0 $filesize => reset * LS1043ARDB (NOR flash) Start up from bank0, and program firmware to bank4 with below commands. Switch to bank4 to start up OpenWrt. => tftp a0000000 <firmware_name>-firmware.bin => protect off all => erase 64000000 +$filesize => cp.b a0000000 64000000 $filesize => cpld reset altbank * LS1046ARDB (QSPI flash) Start up from bank1, and program firmware to bank2 with below commands. Switch to bank2 to start up OpenWrt. => tftp a0000000 <firmware_name>-firmware.bin => sf probe 0:1 => sf erase 0 +$filesize => sf write a0000000 0 $filesize => cpld reset altbank * LS1088ARDB (QSPI flash) Start up from bank0, and program firmware to bank1 with below commands. Switch to bank1 to start up OpenWrt. => tftp a0000000 <firmware_name>-firmware.bin => sf probe 0:1 => sf erase 0 +$filesize => sf write a0000000 0 $filesize => qix altbank Note: old version u-boot of ls1088ardb may use below commands to switch to bank1 instead of 'qix altbank'. => i2c mw 66 50 20;i2c mw 66 10 20;i2c mw 66 10 21 * LS2088ARDB (NOR flash) Start up from bank0, and program firmware to bank4 with below commands. Switch to bank4 to start up OpenWrt. => tftp a0000000 <firmware_name>-firmware.bin => protect off all => erase 584000000 +$filesize => cp.b a0000000 584000000 $filesize => qix altbank 3.3 Program LS1012AFRWY ----------------------- * LS1012AFRWY (QSPI flash + SD card) LS1012AFRWY only supports 2MB QSPI flash. We have to put u-boot, and some firmwares on QSPI flash, and kernel/dtb/rootfs on SD card. So both firmware.bin and sdcard.img are needed for OpenWrt starting up. To program sdcard.img, please use linux command described in 3.1 on a linux machine. To program firmware.bin, start up board from QSPI flash, and program firmware with below commands. Reset to start up OpenWrt. (LS1012AFRWY supports only one bank.) => tftp 96000000 <firmware_name>-firmware.bin => sf probe 0:0 => sf erase 0 +$filesize => sf write 96000000 0 $filesize => reset 4. Known issues and limitation ------------------------------ * u-boot may fail to read MAC addresses from EEPROM on some boards and there won't be MAC addresses set in environment. This may cause kernel fails to probe these network interfaces. The workaround is to set MAC addresses manually, for example, => setenv ethaddr 00:04:9F:04:65:4b => setenv eth1addr 00:04:9F:04:65:4c 5. Other references ------------------- - NXP LSDK site: https://lsdk.github.io/ - OpenWrt documentation: https://openwrt.org/docs/start