- 05 May, 2016 3 commits
-
-
Bernhard Nortmann authored
This patch makes use of the new aw_fel_readl_n() function to output the first four 32-bit values (SID key) from an SoC-specific address. The corresponding e-fuses may not necessarily start at the SID "base" address, e.g. on H3/A83T they are at <base+0x200>. Note: SoC support is currently incomplete. In particular, reading the SID on A31(s) is unsupported. Accessing it there is complicated by the fact that Allwinner moved this information from the SoC into the PMIC/AXP221. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de> Squashed commit of the following: commit 95f3614357446c4a35ec541bb2c21503c54d3fac Author: Bernhard Nortmann <bernhard.nortmann@web.de> Date: Fri Apr 8 09:10:17 2016 +0200 fel: Add support for multiple sequential readl/writel There are cases where "long" reads/writes might be used to transfer multiple values from/to sequential addresses. When doing so, we can avoid having to setup and upload the entire scratch buffer (ARM code) every time, by making the underlying functions auto-increment the address on each invocation. The patch implements this functionality, and maps the existing aw_fel_readl() and aw_fel_writel() to special cases (count == 1). Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de> commit 20ececdfc7f3c4070469a7b74ba77bb74e01f876 Author: Bernhard Nortmann <bernhard.nortmann@web.de> Date: Fri Apr 8 09:00:20 2016 +0200 fel: Modify handling of command line args for "readl"/"writel" Most other commands use their decoded argument values directly, without storing them to local vars first. Also "writel" needs an (argc > 3). Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de> commit b4216371b97e9f1dd19f7fc2ce720b9cb8e2434e Author: Siarhei Siamashka <siarhei.siamashka@gmail.com> Date: Sat Dec 19 08:22:26 2015 +0200 fel: Add "readl" and "writel" commands The read/write operations done by FEL are not suitable for accessing hardware registers. For example, trying to read a SID value using the "read" or "hexdump" commands results in the following: $ sunxi-fel hexdump 0x01c23800 4 01c23800: 87 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __ Apparently, FEL tries to read data one byte at a time and this does not always work correctly. Introducing new commands to explicitly do 32-bit reads and writes helps: $ sunxi-fel readl 0x01c23800 0x16254187 Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com> Tested-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Siarhei Siamashka authored
Doing certain operations may need uploading and executing code on the device. For example, such operations right now are reading/writing ARM CP15 coprocessor registers. Uploading the code to the device is naturally overwriting some part of SRAM as a side effect. Right now it is not a problem, because the CP15 coprocessor registers are only accessed as part of uploading and executing U-Boot SPL. They are nicely timed not to cause problems and the temporary scratch area gets overwritten by the SPL code anyway. But if we decide to provide access to such operations via command line interface, then any side effects may potentially cause problems for the users. Consider the following scenario: sunxi-fel clear 0x2000 0x100 \ advanced-command-which-uploads-and-executes-code \ hexdump 0x2000 0x100 The user may rightfully expect that clearing a buffer in SRAM to zero and then reading it back should show all zero bytes. But inserting advanced commands in the middle may cause data corruption. In order to resolve this problem, just move the scratch area away from the 0x2000-0x5BFF addresses range. These particular addresses are already known to the users as a safe place for their bare metal expariments in FEL mode. The "sunxi-fel spl" command is a special case though and it is expected to overwrite data in this area too. A possible alternative would be to just backup & restore data in the scratch area. But this has some disadvantages: 1. Extra code in the sunxi-fel tool and extra roundtrips over USB to do the backup/restore job. 2. If we allow the OpenRISC core to use the 0x2000-0x5C00 range in SRAM A1, then this becomes unsafe and racy (we can't really backup & restore data without causing a temporarily glitch for the currently running code on the OpenRISC core). To sum it up. With this patch we make it so that now the 0x2000-0x5BFF range is freely available for the users of the sunxi-fel tool. The 0x1000-0x1FFF range is off limits (the upper part of it is used by the FEL IRQ handler, the lower part of it is reserved for internal use by the sunxi-fel tool). The 0x0000-0x0FFF addresses range is reserved for passing data from the SPL to the main U-Boot binary (via the SPL header) and is also off limits. Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com> Tested-by: Bernhard Nortmann <bernhard.nortmann@web.de> Reviewed-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
- 04 May, 2016 10 commits
-
-
Bernhard Nortmann authored
After eliminating all warnings, we can disallow them for future builds. This is done by passing an additional "-Werror" flag from the Travis build step. Introducing new warnings will cause a (CI) build failure from now on. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
This is done by explicitly setting at least one member field (preferably the one that gets tested for validity later), instead of just using "{ 0 }". Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Just default the "out" variable in save_part() to "stdout". Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Commit 73c20eea removed that symbol from fel.c - this adds it back (in the Makefile) to address #22. Caveat: This probably requires you to use "make OS=NetBSD". I have currently no way of testing it; we're only checking Linux and OSX builds. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
This also avoids a possible compiler warning (-Wstring-plus-int). Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
We'll be testing both gcc and clang builds on Linux. As for now, Travis CI only supports clang for OSX - so exclude gcc currently. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
- 03 May, 2016 5 commits
-
-
Bernhard Nortmann authored
Also add badges for license and build status. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
NiteHawk authored
Add continuous integration support (Travis CI), fix Mac OS X build
-
Bernhard Nortmann authored
The nand-part.c code tries to re-read the partition tables by issuing an ioctl(fd, BLKRRPART, NULL). This isn't available on non-Linux platforms, e.g. Mac OS X. Add preprocessor conditionals to prevent this from breaking the build. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
For Linux, this requires additional #defines, see https://gist.github.com/panzi/6856583#gistcomment-1656524 Placing those #defines into portable_endian.h would mean we depend on the specific order of #includes (whatever pulls in endian.h first, including other system includes). Avoid this by using symbols provided "globally" via the Makefile. Also nuke the _NETBSD_SOURCE definition in fel.c Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
- 20 Apr, 2016 11 commits
-
-
Bernhard Nortmann authored
Our previous include file only supplied a very limited set of wrapper redefinitions for platforms that define __APPLE__ (i.e. Mac OS). In particular, some needed big endian conversions were missing, causing "symbol(s) not found" errors when linking. Instead of patching the existing file, let's do away with it completely and replace it by something more sophisticated. The portable_endian.h used is in the public domain, and was taken from https://gist.github.com/panzi/6856583 Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Commit 472ac475 introduced a possible regression by relying on the availability of libusb_strerror(). There are libusb versions out there _not_ offering this function, which breaks compilation. Introducing a separate helper function allows us to work around this, refactor existing code and have more streamlined error reporting - avoiding the message string retrieval where needed. The usb_error() function can also optionally abort execution with a given exit code. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Move some lines so that the safeguards run (and exit, if needed) before the normal output of header information. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
When declaring 'signed' values for section count and version information in the script_bin_head structure, testing them to be below certain thresholds (SCRIPT_BIN_*_LIMIT) is insufficient; as 'negative' values like in "fexc-bin: script.bin: version: -404840454.-1074397186.-1073906177" would still pass. Fix this by making these member fields unsigned. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
instead of memset() and strcpy() to clear / assign member fields. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
Bernhard Nortmann authored
Gracefully shut down the FEL utility, instead of continuing execution. This avoids a possible "ERROR: Allwinner USB FEL device not found!" when doing a plain `./sunxi-fel` without any arguments (and no suitable USB device connected). Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
-
- 21 Mar, 2016 2 commits
-
-
Jens Kuske authored
The A80 has the V bit in SCTLR set to 0 because of the BROM being at 0x00000000 now, so the SCTLR check has to be relaxed. Signed-off-by: Jens Kuske <jenskuske@gmail.com> Reviewed-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-
Jens Kuske authored
This workaround is necessary for A80, which sometimes fails at reading DACR. Signed-off-by: Jens Kuske <jenskuske@gmail.com> Reviewed-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-
- 20 Mar, 2016 2 commits
-
-
Bernhard Nortmann authored
See https://github.com/linux-sunxi/sunxi-tools/issues/37 The patch was originally inspired by https://github.com/NextThingCo/sunxi-tools/commit/16386a7 and https://github.com/NextThingCo/sunxi-tools/commit/47bafaf It introduces a "--dev" (-d) option to specify the desired FEL device. This is useful if multiple target devices are connected to the same host. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de> Reviewed-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-
Lourens Rozema authored
Closes #24. See https://groups.google.com/forum/#!topic/linux-sunxi/sEJ1eTBoCvw Tested-by: Bernhard Nortmann <bernhard.nortmann@web.de> Reviewed-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-
- 17 Dec, 2015 3 commits
-
-
Bernhard Nortmann authored
The aw_fel_process_spl_and_uboot() was missing a free() for the file buffer. This patch also adds a proper libusb cleanup/shutdown. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de> Reviewed-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-
Bernhard Nortmann authored
This patch forces relevant options to be placed at the beginning of the command line, but also makes sure that their specific order does not matter. Currently this applies to "-p" (--progress) and "-v" (--verbose). Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de> Reviewed-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-
Bernhard Nortmann authored
Commit d99d59c0 introduces a bug when the "spl" command is used with a file that contains a U-Boot binary. "spl" will now try to execute it, while it's not supposed to. (The command should only start the SPL.) This patch brings back the `uboot_autostart` flag, which is meant to remain `false` for the "spl" command, and gets set by "uboot" only. Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de> Reviewed-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-
- 16 Dec, 2015 4 commits
-
-
Justin Swartz authored
The meminfo example has been corrected to match the Makefile's "sunxi-meminfo" target, and an example has been added for the "sunxi-script_extractor" target. Signed-off-by: Justin Swartz <justin.swartz@risingedge.co.za> Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-
Justin Swartz authored
Signed-off-by: Justin Swartz <justin.swartz@risingedge.co.za> Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-
Bernhard Nortmann authored
This patch adds an "echo-gauge" command that is intended for use with sunxi-fel's output piped into the dialog utility. "echo-gauge" will output its string argument in a way that updates (i.e. overwrites) the prompt text that dialog displays, so it's possible to change that inbetween file transfers from sunxi-fel. Example: sunxi-fel uboot ${UBOOT} \ echo-gauge "Uploading kernel (1/2)" \ write-with-gauge 0x42000000 ${KERNEL} \ write 0x43100000 ${SCRIPT} \ echo-gauge "Uploading rootfs (2/2)" \ write-with-gauge 0x44000000 ${ROOTFS} \ | dialog --gauge "" 6 70 Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de> Reviewed-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-
Bernhard Nortmann authored
This patch adds some additional commands, and implements corresponding progress callbacks that produce output for the 'dialog' utility: http://invisible-island.net/dialog/dialog.html The simple "*-with-gauge" just emits percentage numbers, line by line, while "*-with-xgauge" outputs extended information to update the dialog prompt. Both are meant for directly piping the output: sunxi-fel write-with-gauge <...> | dialog --gauge "FEL upload" 6 70 Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de> Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
-