Message ID | 20150126061951.6848.91753.sendpatchset@little-apple (mailing list archive) |
---|---|
State | Accepted |
Commit | c6535e1e0361157ea073b57b626d0611b7c4c7a0 |
Delegated to: | Simon Horman |
Headers | show |
Hi Magnus, Thank you for the patch. On Monday 26 January 2015 15:19:51 Magnus Damm wrote: > From: Magnus Damm <damm+renesas@opensource.se> > > 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 <damm+renesas@opensource.se> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > > 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
--- 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