From mboxrd@z Thu Jan 1 00:00:00 1970 From: laurent.pinchart@ideasonboard.com (Laurent Pinchart) Date: Mon, 26 Jan 2015 11:01:28 +0200 Subject: [PATCH 12/14 v2] Documentation: Remove ZBOOT MMC/SDHI utility and docs In-Reply-To: <20150126061951.6848.91753.sendpatchset@little-apple> References: <20150126061747.6848.9708.sendpatchset@little-apple> <20150126061951.6848.91753.sendpatchset@little-apple> Message-ID: <3183913.k5l4Mi4shS@avalon> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Magnus, Thank you for the patch. On Monday 26 January 2015 15:19:51 Magnus Damm wrote: > From: Magnus Damm > > Remove ZBOOT MMC/SDHI Documentation for sh7372 together > wit the vrl4 utility. Without sh7372 and Mackerel support > these files are no longer useful. > > Signed-off-by: Magnus Damm Acked-by: Laurent Pinchart > --- > > Changes since V1: > - Removed Documentation/arm/Makefile, thanks Geert! > > Documentation/Makefile | 2 > Documentation/arm/Makefile | 1 > Documentation/arm/SH-Mobile/Makefile | 7 > Documentation/arm/SH-Mobile/vrl4.c | 170 -------------------- > Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt | 29 --- > Documentation/arm/SH-Mobile/zboot-rom-sdhi.txt | 42 ----- > 6 files changed, 1 insertion(+), 250 deletions(-) > > --- 0001/Documentation/Makefile > +++ work/Documentation/Makefile 2015-01-26 13:36:32.695991307 +0900 > @@ -1,4 +1,4 @@ > -subdir-y := accounting arm auxdisplay blackfin connector \ > +subdir-y := accounting auxdisplay blackfin connector \ > filesystems filesystems ia64 laptops mic misc-devices \ > networking pcmcia prctl ptp spi timers vDSO video4linux \ > watchdog > --- 0001/Documentation/arm/Makefile > +++ /dev/null 2015-01-13 15:44:39.280208949 +0900 > @@ -1 +0,0 @@ > -subdir-y := SH-Mobile > --- 0001/Documentation/arm/SH-Mobile/Makefile > +++ /dev/null 2015-01-13 15:44:39.280208949 +0900 > @@ -1,7 +0,0 @@ > -# List of programs to build > -hostprogs-y := vrl4 > - > -# Tell kbuild to always build the programs > -always := $(hostprogs-y) > - > -HOSTCFLAGS_vrl4.o += -I$(objtree)/usr/include -I$(srctree)/tools/include > --- 0001/Documentation/arm/SH-Mobile/vrl4.c > +++ /dev/null 2015-01-13 15:44:39.280208949 +0900 > @@ -1,170 +0,0 @@ > -/* > - * vrl4 format generator > - * > - * Copyright (C) 2010 Simon Horman > - * > - * This file is subject to the terms and conditions of the GNU General > Public - * License. See the file "COPYING" in the main directory of this > archive - * for more details. > - */ > - > -/* > - * usage: vrl4 < zImage > out > - * dd if=out of=/dev/sdx bs=512 seek=1 # Write the image to sector 1 > - * > - * Reads a zImage from stdin and writes a vrl4 image to stdout. > - * In practice this means writing a padded vrl4 header to stdout followed > - * by the zImage. > - * > - * The padding places the zImage at ALIGN bytes into the output. > - * The vrl4 uses ALIGN + START_BASE as the start_address. > - * This is where the mask ROM will jump to after verifying the header. > - * > - * The header sets copy_size to min(sizeof(zImage), MAX_BOOT_PROG_LEN) + > ALIGN. - * That is, the mask ROM will load the padded header (ALIGN bytes) > - * And then MAX_BOOT_PROG_LEN bytes of the image, or the entire image, - * > whichever is smaller. > - * > - * The zImage is not modified in any way. > - */ > - > -#define _BSD_SOURCE > -#include > -#include > -#include > -#include > -#include > -#include > - > -struct hdr { > - uint32_t magic1; > - uint32_t reserved1; > - uint32_t magic2; > - uint32_t reserved2; > - uint16_t copy_size; > - uint16_t boot_options; > - uint32_t reserved3; > - uint32_t start_address; > - uint32_t reserved4; > - uint32_t reserved5; > - char reserved6[308]; > -}; > - > -#define DECLARE_HDR(h) \ > - struct hdr (h) = { \ > - .magic1 = htole32(0xea000000), \ > - .reserved1 = htole32(0x56), \ > - .magic2 = htole32(0xe59ff008), \ > - .reserved3 = htole16(0x1) } > - > -/* Align to 512 bytes, the MMCIF sector size */ > -#define ALIGN_BITS 9 > -#define ALIGN (1 << ALIGN_BITS) > - > -#define START_BASE 0xe55b0000 > - > -/* > - * With an alignment of 512 the header uses the first sector. > - * There is a 128 sector (64kbyte) limit on the data loaded by the mask > ROM. - * So there are 127 sectors left for the boot programme. But in > practice - * Only a small portion of a zImage is needed, 16 sectors should > be more - * than enough. > - * > - * Note that this sets how much of the zImage is copied by the mask ROM. > - * The entire zImage is present after the header and is loaded > - * by the code in the boot program (which is the first portion of the > zImage). - */ > -#define MAX_BOOT_PROG_LEN (16 * 512) > - > -#define ROUND_UP(x) ((x + ALIGN - 1) & ~(ALIGN - 1)) > - > -static ssize_t do_read(int fd, void *buf, size_t count) > -{ > - size_t offset = 0; > - ssize_t l; > - > - while (offset < count) { > - l = read(fd, buf + offset, count - offset); > - if (!l) > - break; > - if (l < 0) { > - if (errno == EAGAIN || errno == EWOULDBLOCK) > - continue; > - perror("read"); > - return -1; > - } > - offset += l; > - } > - > - return offset; > -} > - > -static ssize_t do_write(int fd, const void *buf, size_t count) > -{ > - size_t offset = 0; > - ssize_t l; > - > - while (offset < count) { > - l = write(fd, buf + offset, count - offset); > - if (l < 0) { > - if (errno == EAGAIN || errno == EWOULDBLOCK) > - continue; > - perror("write"); > - return -1; > - } > - offset += l; > - } > - > - return offset; > -} > - > -static ssize_t write_zero(int fd, size_t len) > -{ > - size_t i = len; > - > - while (i--) { > - const char x = 0; > - if (do_write(fd, &x, 1) < 0) > - return -1; > - } > - > - return len; > -} > - > -int main(void) > -{ > - DECLARE_HDR(hdr); > - char boot_program[MAX_BOOT_PROG_LEN]; > - size_t aligned_hdr_len, alligned_prog_len; > - ssize_t prog_len; > - > - prog_len = do_read(0, boot_program, sizeof(boot_program)); > - if (prog_len <= 0) > - return -1; > - > - aligned_hdr_len = ROUND_UP(sizeof(hdr)); > - hdr.start_address = htole32(START_BASE + aligned_hdr_len); > - alligned_prog_len = ROUND_UP(prog_len); > - hdr.copy_size = htole16(aligned_hdr_len + alligned_prog_len); > - > - if (do_write(1, &hdr, sizeof(hdr)) < 0) > - return -1; > - if (write_zero(1, aligned_hdr_len - sizeof(hdr)) < 0) > - return -1; > - > - if (do_write(1, boot_program, prog_len) < 0) > - return 1; > - > - /* Write out the rest of the kernel */ > - while (1) { > - prog_len = do_read(0, boot_program, sizeof(boot_program)); > - if (prog_len < 0) > - return 1; > - if (prog_len == 0) > - break; > - if (do_write(1, boot_program, prog_len) < 0) > - return 1; > - } > - > - return 0; > -} > --- 0001/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt > +++ /dev/null 2015-01-13 15:44:39.280208949 +0900 > @@ -1,29 +0,0 @@ > -ROM-able zImage boot from MMC > ------------------------------ > - > -An ROM-able zImage compiled with ZBOOT_ROM_MMCIF may be written to MMC and > -SuperH Mobile ARM will to boot directly from the MMCIF hardware block. > - > -This is achieved by the mask ROM loading the first portion of the image > into -MERAM and then jumping to it. This portion contains loader code which > -copies the entire image to SDRAM and jumps to it. From there the zImage > -boot code proceeds as normal, uncompressing the image into its final > -location and then jumping to it. > - > -This code has been tested on an AP4EB board using the developer 1A eMMC > -boot mode which is configured using the following jumper settings. > -The board used for testing required a patched mask ROM in order for > -this mode to function. > - > - 8 7 6 5 4 3 2 1 > - x|x|x|x|x| |x| > -S4 -+-+-+-+-+-+-+- > - | | | | |x| |x on > - > -The zImage must be written to the MMC card at sector 1 (512 bytes) in > -vrl4 format. A utility vrl4 is supplied to accomplish this. > - > -e.g. > - vrl4 < zImage | dd of=/dev/sdX bs=512 seek=1 > - > -A dual-voltage MMC 4.0 card was used for testing. > --- 0001/Documentation/arm/SH-Mobile/zboot-rom-sdhi.txt > +++ /dev/null 2015-01-13 15:44:39.280208949 +0900 > @@ -1,42 +0,0 @@ > -ROM-able zImage boot from eSD > ------------------------------ > - > -An ROM-able zImage compiled with ZBOOT_ROM_SDHI may be written to eSD and > -SuperH Mobile ARM will to boot directly from the SDHI hardware block. > - > -This is achieved by the mask ROM loading the first portion of the image > into -MERAM and then jumping to it. This portion contains loader code which > -copies the entire image to SDRAM and jumps to it. From there the zImage > -boot code proceeds as normal, uncompressing the image into its final > -location and then jumping to it. > - > -This code has been tested on an mackerel board using the developer 1A eSD > -boot mode which is configured using the following jumper settings. > - > - 8 7 6 5 4 3 2 1 > - x|x|x|x| |x|x| > -S4 -+-+-+-+-+-+-+- > - | | | |x| | |x on > - > -The eSD card needs to be present in SDHI slot 1 (CN7). > -As such S1 and S33 also need to be configured as per > -the notes in arch/arm/mach-shmobile/board-mackerel.c. > - > -A partial zImage must be written to physical partition #1 (boot) > -of the eSD at sector 0 in vrl4 format. A utility vrl4 is supplied to > -accomplish this. > - > -e.g. > - vrl4 < zImage | dd of=/dev/sdX bs=512 count=17 > - > -A full copy of _the same_ zImage should be written to physical partition #1 > -(boot) of the eSD at sector 0. This should _not_ be in vrl4 format. - > - vrl4 < zImage | dd of=/dev/sdX bs=512 > - > -Note: The commands above assume that the physical partition has been > -switched. No such facility currently exists in the Linux Kernel. > - > -Physical partitions are described in the eSD specification. At the time of > -writing they are not the same as partitions that are typically configured > -using fdisk and visible through /proc/partitions -- Regards, Laurent Pinchart