Annotation of sys/dev/microcode/myx/build.c, Revision 1.1
1.1 ! nbrk 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: }
CVSweb