Use custom sunxi-tools for the F1C100s

This commit is contained in:
George Hilliard 2019-04-30 00:44:23 -05:00
parent bd882ee3cf
commit c5cb181546
6 changed files with 206 additions and 1 deletions

View file

@ -0,0 +1,2 @@
source "$BR2_EXTERNAL_BUSINESSCARD_PATH/package/sunxi-tools-f1c100s/Config.in.host"
source "$BR2_EXTERNAL_BUSINESSCARD_PATH/package/sunxi-tools-f1c100s/Config.in"

View file

@ -45,4 +45,4 @@ BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y
BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin"
BR2_PACKAGE_HOST_MKPASSWD=y
BR2_PACKAGE_HOST_SUNXI_TOOLS=y
BR2_PACKAGE_HOST_SUNXI_TOOLS_F1C100S=y

View file

@ -0,0 +1,59 @@
From 5c0a443ba336f10a8db6a99c769aa84ad37ed4d2 Mon Sep 17 00:00:00 2001
From: Vadim Kochan <vadim4j@gmail.com>
Date: Wed, 20 Feb 2019 02:48:43 +0200
Subject: [PATCH] meminfo: Access to io memory via pointers
The main reason for this is to be able compile with musl library,
because there is no support of inx/outx functions for ARM platform.
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
---
meminfo.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/meminfo.c b/meminfo.c
index 0b0ff23..7d9f10f 100644
--- a/meminfo.c
+++ b/meminfo.c
@@ -22,7 +22,6 @@
#include <sys/mman.h>
#include <stdint.h>
#include <errno.h>
-#include <sys/io.h>
#include <stdbool.h>
#include "common.h"
@@ -74,24 +73,26 @@ static enum sunxi_soc_version soc_version;
unsigned int
sunxi_io_read(void *base, int offset)
{
- return inl((unsigned long) (base + offset));
+ unsigned long port = (unsigned long) (base + offset);
+ return *((volatile unsigned long *) port);
}
void
sunxi_io_write(void *base, int offset, unsigned int value)
{
- outl(value, (unsigned long) (base + offset));
+ unsigned long port = (unsigned long) (base + offset);
+ *((volatile unsigned long *) port) = value;
}
void
sunxi_io_mask(void *base, int offset, unsigned int value, unsigned int mask)
{
- unsigned int tmp = inl((unsigned long) (base + offset));
+ unsigned int tmp = sunxi_io_read(base, offset);
tmp &= ~mask;
tmp |= value & mask;
- outl(tmp, (unsigned long) (base + offset));
+ sunxi_io_write(base, offset, tmp);
}
--
2.14.1

View file

@ -0,0 +1,69 @@
config BR2_PACKAGE_SUNXI_TOOLS_F1C100S
bool "sunxi-tools for F1C100s"
depends on BR2_arm
help
Tools for Allwinner A10 (aka sun4i) and A13 (aka sun5i)
and suniv based devices.
http://linux-sunxi.org/Sunxi-tools
if BR2_PACKAGE_SUNXI_TOOLS_F1C100S
config BR2_PACKAGE_SUNXI_TOOLS_F1C100S_FEXC
bool "sunxi-fexc (fex2bin & bin2fex)"
help
Convert between .fex board definition files and binary
format. These tools are specific for the linux-sunxi kernel
and do not apply to the mainline Linux kernel version.
config BR2_PACKAGE_SUNXI_TOOLS_F1C100S_BOOTINFO
bool "sunxi-bootinfo"
help
Displays information about sunxi boot code.
config BR2_PACKAGE_SUNXI_TOOLS_F1C100S_FEL
bool "sunxi-fel"
depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
select BR2_PACKAGE_LIBUSB
help
The sunxi-fel command can interact with a sunxi device in
fel mode. This allows do download code to memory and execute
it.
comment "sunxi-fel needs a toolchain w/ threads"
depends on !BR2_TOOLCHAIN_HAS_THREADS
config BR2_PACKAGE_SUNXI_TOOLS_F1C100S_NAND_PART
bool "sunxi-nand-part"
default y
help
The sunxi-nand-part command allows to repartition the internal
NAND on sunxi devices.
config BR2_PACKAGE_SUNXI_TOOLS_F1C100S_PIO
bool "sunxi-pio"
help
GPIO manipulation tool for sunxi boards.
config BR2_PACKAGE_SUNXI_TOOLS_F1C100S_MEMINFO
bool "sunxi-meminfo"
help
Utility to retrieve DRAM information from registers on
Allwinner SoCs. Specific for the linux-sunxi kernel - does
not apply to the mainline Linux kernel version.
config BR2_PACKAGE_SUNXI_TOOLS_F1C100S_PHOENIX_INFO
bool "phoenix_info"
help
Display information about self-installing SD card images
(created with Phoenix Card).
https://linux-sunxi.org/PhoenixCard
config BR2_PACKAGE_SUNXI_TOOLS_F1C100S_NAND_IMAGE_BUILDER
bool "sunxi-nand-image-builder"
help
Creates a raw NAND image that can be read by the sunxi NAND
controller.
endif # BR2_PACKAGE_SUNXI_TOOLS_F1C100S

View file

@ -0,0 +1,12 @@
config BR2_PACKAGE_HOST_SUNXI_TOOLS_F1C100S
bool "host sunxi-tools for F1C100s"
depends on BR2_arm
help
Tools for Allwinner A10 (aka sun4i) and A13 (aka sun5i)
based devices. This includes fex2bin which can be used to
compile .fex board definition files to the binary script.bin
format required by the linux-sunxi kernel. These tools are
specific for linux-sunxi kernel and do not apply to the
mainline Linux kernel version.
http://linux-sunxi.org/Sunxi-tools

View file

@ -0,0 +1,63 @@
################################################################################
#
# sunxi-tools
#
################################################################################
SUNXI_TOOLS_F1C100S_VERSION = 6dac68fbcaaefe61eb6cad78098416812d9d70fc
SUNXI_TOOLS_F1C100S_SITE = $(call github,thirtythreeforty,sunxi-tools,$(SUNXI_TOOLS_F1C100S_VERSION))
SUNXI_TOOLS_F1C100S_LICENSE = GPL-2.0+
SUNXI_TOOLS_F1C100S_LICENSE_FILES = LICENSE.md
HOST_SUNXI_TOOLS_F1C100S_DEPENDENCIES = host-libusb host-pkgconf
FEX2BIN = $(HOST_DIR)/bin/fex2bin
SUNXI_TOOLS_F1C100S_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_F1C100S_FEXC) += sunxi-fexc
SUNXI_TOOLS_F1C100S_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_F1C100S_BOOTINFO) += sunxi-bootinfo
SUNXI_TOOLS_F1C100S_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_F1C100S_FEL) += sunxi-fel
SUNXI_TOOLS_F1C100S_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_F1C100S_NAND_PART) += sunxi-nand-part
SUNXI_TOOLS_F1C100S_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_F1C100S_PIO) += sunxi-pio
SUNXI_TOOLS_F1C100S_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_F1C100S_MEMINFO) += sunxi-meminfo
SUNXI_TOOLS_F1C100S_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_F1C100S_PHOENIX_INFO) += phoenix_info
SUNXI_TOOLS_F1C100S_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_F1C100S_NAND_IMAGE_BUILDER) += \
sunxi-nand-image-builder
ifeq ($(BR2_PACKAGE_SUNXI_TOOLS_F1C100S_FEXC),y)
SUNXI_TOOLS_F1C100S_FEXC_LINKS += fex2bin bin2fex
endif
ifeq ($(BR2_PACKAGE_SUNXI_TOOLS_F1C100S_FEL),y)
SUNXI_TOOLS_F1C100S_DEPENDENCIES += libusb host-pkgconf
endif
define HOST_SUNXI_TOOLS_F1C100S_BUILD_CMDS
$(HOST_MAKE_ENV) $(MAKE) CROSS_COMPILE="" CC="$(HOSTCC)" \
PREFIX=$(HOST_DIR) EXTRA_CFLAGS="$(HOST_CFLAGS)" \
LDFLAGS="$(HOST_LDFLAGS)" -C $(@D) tools misc
endef
define HOST_SUNXI_TOOLS_F1C100S_INSTALL_CMDS
$(HOST_MAKE_ENV) $(MAKE) CROSS_COMPILE="" CC="$(HOSTCC)" \
PREFIX=$(HOST_DIR) EXTRA_CFLAGS="$(HOST_CFLAGS)" \
LDFLAGS="$(HOST_LDFLAGS)" -C $(@D) install-tools install-misc
endef
define SUNXI_TOOLS_F1C100S_BUILD_CMDS
$(foreach t,$(SUNXI_TOOLS_F1C100S_TARGETS_y), \
$(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" \
CC="$(TARGET_CC)" PREFIX=/usr \
EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) $(t)
)
endef
define SUNXI_TOOLS_F1C100S_INSTALL_TARGET_CMDS
$(foreach t,$(SUNXI_TOOLS_F1C100S_TARGETS_y), \
$(INSTALL) -D -m 0755 $(@D)/$(t) $(TARGET_DIR)/usr/bin/$(t)
)
$(foreach t,$(SUNXI_TOOLS_F1C100S_FEXC_LINKS), \
ln -nfs sunxi-fexc $(TARGET_DIR)/usr/bin/$(t)
)
endef
$(eval $(generic-package))
$(eval $(host-generic-package))