root/dev/microcode/myx/build.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. myx_build_firmware
  2. main

    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 }

/* [<][>][^][v][top][bottom][index][help] */