1 /* $OpenBSD: build.c,v 1.1 2007/05/31 18:27:59 reyk Exp $ */
2
3 /*
4 * Copyright (c) 2007 Reyk Floeter <reyk@openbsd.org>
5 * Copyright (c) 2004 Theo de Raadt <deraadt@openbsd.org>
6 *
7 * Permission to use, copy, modify, and distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 */
19
20 #include <sys/types.h>
21
22 #include <dev/pci/if_myxreg.h>
23
24 #include <fcntl.h>
25 #include <stdlib.h>
26 #include <err.h>
27 #include <unistd.h>
28 #include <string.h>
29 #include <stdio.h>
30
31 #include "myxfw.h"
32
33 void
34 myx_build_firmware(u_int32_t *fw, size_t len, const char *file)
35 {
36 int fd, rlen;
37 size_t i, total = 0;
38 u_int32_t data;
39
40 printf("creating %s", file);
41 fd = open(file, O_WRONLY|O_CREAT|O_TRUNC, 0644);
42 if (fd == -1)
43 err(1, file);
44
45 for (i = 0; i < len; i++) {
46 data = letoh32(fw[i]);
47 rlen = write(fd, &data, sizeof(u_int32_t));
48 if (rlen == -1) {
49 printf("\n");
50 err(1, "%s", file);
51 }
52 if (rlen != sizeof(u_int32_t)) {
53 printf("\n");
54 errx(1, "%s: short write", file);
55 }
56 total += rlen;
57 }
58
59 printf(" total %d\n", total);
60 close(fd);
61 }
62
63 int
64 main(int argc, char *argv[])
65 {
66 myx_build_firmware(myxfw_eth_z8e,
67 MYXFW_ETH_Z8E_SIZE, MYXFW_ALIGNED);
68 myx_build_firmware(myxfw_ethp_z8e,
69 MYXFW_ETHP_Z8E_SIZE, MYXFW_UNALIGNED);
70 return (0);
71 }