Changeset 25240


Ignore:
Timestamp:
2011-01-29T19:14:17+01:00 (5 years ago)
Author:
mb
Message:

calvaria: Add p54spi EEPROM generator

Location:
packages/utils/calvaria
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • packages/utils/calvaria/Makefile

    r25235 r25240  
    3535        $(INSTALL_DIR) $(1)/usr/bin 
    3636        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/calvaria $(1)/usr/bin/ 
     37        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/cal2p54 $(1)/usr/bin/ 
    3738endef 
    3839 
  • packages/utils/calvaria/files/src/Makefile

    r25235 r25240  
    88INSTALL         ?= install 
    99 
    10 BIN             := calvaria 
     10CALVARIA_BIN    := calvaria 
     11CAL2P54_BIN     := cal2p54 
    1112 
    12 all: $(BIN) 
     13all: $(CALVARIA_BIN) $(CAL2P54_BIN) 
    1314 
    14 $(BIN): calvaria.o 
     15$(CALVARIA_BIN): calvaria.o 
     16        $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@ 
     17        $(STRIP) $@ 
     18 
     19$(CAL2P54_BIN): cal2p54.o 
    1520        $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@ 
    1621        $(STRIP) $@ 
     
    1924        $(CC) -c $(CFLAGS) $^ -o $@ 
    2025 
    21 install: $(BIN) 
     26install: $(CALVARIA_BIN) $(CAL2P54_BIN) 
    2227        $(INSTALL) -d $(DESTDIR)/$(PREFIX)/bin 
    23         $(INSTALL) -m 0755 $(BIN) $(DESTDIR)/$(PREFIX)/bin/ 
     28        $(INSTALL) -m 0755 $(CALVARIA_BIN) $(DESTDIR)/$(PREFIX)/bin/ 
     29        $(INSTALL) -m 0755 $(CAL2P54_BIN) $(DESTDIR)/$(PREFIX)/bin/ 
    2430 
    2531clean: 
    26         rm -f $(BIN) *.o 
     32        rm -f $(CALVARIA_BIN) $(CAL2P54_BIN) *.o 
  • packages/utils/calvaria/files/src/calvaria.c

    r25235 r25240  
    44 * Copyright (c) 2011 Michael Buesch <mb@bu3sch.de> 
    55 * 
    6  * Licensed under the GNU General Public License 
    7  * version 2 or (at your option) any later version. 
     6 * Licensed under the GNU General Public License version 2. 
    87 */ 
    98 
     
    3635 
    3736#define HDR_MAGIC       "ConF" 
     37 
     38#define INDEX_LAST      (0xFF + 1) 
    3839 
    3940 
     
    200201static void unmap_file(void *mapping, uint64_t len) 
    201202{ 
    202         munmap(mapping, len); 
     203        if (mapping) 
     204                munmap(mapping, len); 
    203205} 
    204206 
     
    206208                            int want_index, const char *want_name) 
    207209{ 
    208         uint64_t offset = 0; 
     210        int64_t offset = 0, found_offset = -1; 
    209211        uint8_t *data = start; 
    210212        struct header *hdr; 
    211213        char sectname[sizeof(hdr->name) + 1] = { 0, }; 
    212214        uint32_t payload_len; 
     215        int previous_index = -1; 
    213216 
    214217        while (1) { 
     
    229232                memcpy(sectname, hdr->name, sizeof(hdr->name)); 
    230233 
    231                 if (want_index >= 0 && want_index != hdr->index) 
    232                         goto next; 
     234                if (want_index == INDEX_LAST) { 
     235                        if ((int)hdr->index <= previous_index) 
     236                                goto next; 
     237                } else { 
     238                        if (want_index >= 0 && want_index != hdr->index) 
     239                                goto next; 
     240                } 
    233241                if (want_name && strcmp(sectname, want_name) != 0) 
    234242                        goto next; 
    235243 
    236244                /* Found it */ 
    237                 return offset; 
     245                found_offset = offset; 
     246                if (want_index == INDEX_LAST) 
     247                        previous_index = hdr->index; 
     248                else 
     249                        break; 
    238250 
    239251next: 
     
    242254        } 
    243255 
    244         return -1; 
     256        return found_offset; 
    245257} 
    246258 
     
    392404                        break; 
    393405                case 'i': 
    394                         if (sscanf(optarg, "%d", &opt_index) != 1 || opt_index < 0) { 
    395                                 fprintf(stderr, "-i|--index is not a positive integer\n"); 
    396                                 return 1; 
     406                        if (strcasecmp(optarg, "last") == 0) { 
     407                                opt_index = INDEX_LAST; 
     408                        } else { 
     409                                if (sscanf(optarg, "%d", &opt_index) != 1 || opt_index < 0) { 
     410                                        fprintf(stderr, "-i|--index is not a positive integer\n"); 
     411                                        return 1; 
     412                                } 
    397413                        } 
    398414                        break; 
Note: See TracChangeset for help on using the changeset viewer.