Subject: [PATCH 12/14 v2] Documentation: Remove ZBOOT MMC/SDHI utility and docs

From: [email-masked] (Laurent Pinchart)
Date: Mon, 26 Jan 2015 11:01:28 +0200

Hi Magnus,

Thank you for the patch.

On Monday 26 January 2015 15:19:51 Magnus Damm wrote:
> From: Magnus Damm <[email-masked]>
> 
> 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 <[email-masked]>

Acked-by: Laurent Pinchart <[email-masked]>

> ---
> 
>  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 <endian.h>
> -#include <unistd.h>
> -#include <stdint.h>
> -#include <stdio.h>
> -#include <errno.h>
> -#include <tools/endian.h>
> -
> -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