Changeset 1151


Ignore:
Timestamp:
09/03/10 20:21:21 (17 months ago)
Author:
uwe
Message:

Add Intel Gigabit NIC SPI flashing support.
Tested on a 82541PI (0x8086, 0x107c) using 32-bit hardware.

The last line in nicintel_request_spibus() could be changed so that FL_BUSY
is used instead.

Shortened sample log:
[...]
Found "Intel 82541PI Gigabit Ethernet Controller" (8086:107c, BDF 01:03.0).
Found chip "ST M25P10.RES" (128 KB, SPI) at physical address 0xfffe0000.
Multiple flash chips were detected: M25P05.RES M25P10.RES
Please specify which chip to use with the -c <chipname> option.
[...]

Signed-off-by: Idwer Vollering <vidwer@…>
Acked-by: Uwe Hermann <uwe@…>

Location:
trunk
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Makefile

    r1117 r1151  
    122122override CONFIG_BITBANG_SPI = yes 
    123123else 
     124ifeq ($(CONFIG_NICINTEL_SPI), yes) 
     125override CONFIG_BITBANG_SPI = yes 
     126else 
    124127CONFIG_BITBANG_SPI ?= no 
     128endif 
    125129endif 
    126130endif 
     
    153157# Disable National Semiconductor NICs until support is complete and tested. 
    154158CONFIG_NICNATSEMI ?= no 
     159 
     160# Always enable SPI on Intel NICs for now. 
     161CONFIG_NICINTEL_SPI ?= yes 
    155162 
    156163# Always enable Bus Pirate SPI for now. 
     
    242249FEATURE_CFLAGS += -D'CONFIG_NICNATSEMI=1' 
    243250PROGRAMMER_OBJS += nicnatsemi.o 
     251NEED_PCI := yes 
     252endif 
     253 
     254ifeq ($(CONFIG_NICINTEL_SPI), yes) 
     255FEATURE_CFLAGS += -D'CONFIG_NICINTEL_SPI=1' 
     256PROGRAMMER_OBJS += nicintel_spi.o 
    244257NEED_PCI := yes 
    245258endif 
  • trunk/flashrom.8

    r1134 r1151  
    191191based programmer)" 
    192192.sp 
     193.BR "* nicintel_spi" " (for SPI flash ROMs attached to an Intel Gigabit \ 
     194network cards)" 
     195.sp 
    193196Some programmers have optional or mandatory parameters which are described 
    194197in detail in the 
  • trunk/flashrom.c

    r1134 r1151  
    5050 * that the user wants that one to become the default. 
    5151 */ 
    52 #if CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT+CONFIG_FT2232_SPI+CONFIG_SERPROG+CONFIG_BUSPIRATE_SPI+CONFIG_DEDIPROG+CONFIG_RAYER_SPI > 1 
     52#if CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT+CONFIG_FT2232_SPI+CONFIG_SERPROG+CONFIG_BUSPIRATE_SPI+CONFIG_DEDIPROG+CONFIG_RAYER_SPI+CONFIG_NICINTEL_SPI > 1 
    5353#error Please enable either CONFIG_DUMMY or CONFIG_INTERNAL or disable support for all programmers except one. 
    5454#endif 
     
    9090#if CONFIG_RAYER_SPI == 1 
    9191        PROGRAMMER_RAYER_SPI 
     92#endif 
     93#if CONFIG_NICINTEL_SPI == 1 
     94        PROGRAMMER_NICINTEL_SPI 
    9295#endif 
    9396; 
     
    412415                .chip_writen            = fallback_chip_writen, 
    413416                .delay                  = internal_delay, 
     417        }, 
     418#endif 
     419 
     420#if CONFIG_NICINTEL_SPI == 1 
     421        { 
     422                .name = "nicintel_spi", 
     423                .init = nicintel_spi_init, 
     424                .shutdown = nicintel_spi_shutdown, 
     425                .map_flash_region = fallback_map, 
     426                .unmap_flash_region = fallback_unmap, 
     427                .chip_readb = noop_chip_readb, 
     428                .chip_readw = fallback_chip_readw, 
     429                .chip_readl = fallback_chip_readl, 
     430                .chip_readn = fallback_chip_readn, 
     431                .chip_writeb = noop_chip_writeb, 
     432                .chip_writew = fallback_chip_writew, 
     433                .chip_writel = fallback_chip_writel, 
     434                .chip_writen = fallback_chip_writen, 
     435                .delay = internal_delay, 
    414436        }, 
    415437#endif 
  • trunk/print.c

    r1146 r1151  
    255255#if CONFIG_ATAHPT == 1 
    256256                print_supported_pcidevs(ata_hpt); 
     257#endif 
     258#if CONFIG_NICINTEL_SPI == 1 
     259                print_supported_pcidevs(nics_intel_spi); 
    257260#endif 
    258261 
  • trunk/print_wiki.c

    r1112 r1151  
    297297        print_supported_pcidevs_wiki(ata_hpt); 
    298298#endif 
     299#if CONFIG_NICINTEL_SPI == 1 
     300        print_supported_pcidevs_wiki(nics_intel_spi); 
     301#endif 
    299302        printf("\n|}\n"); 
    300303} 
  • trunk/programmer.h

    r1134 r1151  
    3838        PROGRAMMER_NICREALTEK, 
    3939        PROGRAMMER_NICREALTEK2, 
    40 #endif   
     40#endif 
    4141#if CONFIG_NICNATSEMI == 1 
    4242        PROGRAMMER_NICNATSEMI, 
    43 #endif   
     43#endif 
    4444#if CONFIG_GFXNVIDIA == 1 
    4545        PROGRAMMER_GFXNVIDIA, 
     
    7373#if CONFIG_RAYER_SPI == 1 
    7474        PROGRAMMER_RAYER_SPI, 
     75#endif 
     76#if CONFIG_NICINTEL_SPI == 1 
     77        PROGRAMMER_NICINTEL_SPI, 
    7578#endif 
    7679        PROGRAMMER_INVALID /* This must always be the last entry. */ 
     
    110113#if CONFIG_RAYER_SPI == 1 
    111114        BITBANG_SPI_MASTER_RAYER, 
     115#endif 
     116#if CONFIG_NICINTEL_SPI == 1 
     117        BITBANG_SPI_MASTER_NICINTEL, 
    112118#endif 
    113119#if CONFIG_INTERNAL == 1 
     
    208214 
    209215/* print.c */ 
    210 #if CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT >= 1 
     216#if CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT+CONFIG_NICINTEL_SPI >= 1 
    211217void print_supported_pcidevs(const struct pcidev_status *devs); 
    212218#endif 
     
    379385#endif 
    380386 
     387/* nicintel_spi.c */ 
     388#if CONFIG_NICINTEL_SPI == 1 
     389int nicintel_spi_init(void); 
     390int nicintel_spi_shutdown(void); 
     391int nicintel_spi_send_command(unsigned int writecnt, unsigned int readcnt, 
     392        const unsigned char *writearr, unsigned char *readarr); 
     393void nicintel_spi_chip_writeb(uint8_t val, chipaddr addr); 
     394extern const struct pcidev_status nics_intel_spi[]; 
     395#endif 
     396 
    381397/* satasii.c */ 
    382398#if CONFIG_SATASII == 1 
     
    494510#if CONFIG_RAYER_SPI == 1 
    495511        SPI_CONTROLLER_RAYER, 
     512#endif 
     513#if CONFIG_NICINTEL_SPI == 1 
     514        SPI_CONTROLLER_NICINTEL, 
    496515#endif 
    497516        SPI_CONTROLLER_INVALID /* This must always be the last entry. */ 
  • trunk/spi.c

    r1115 r1151  
    130130#if CONFIG_RAYER_SPI == 1 
    131131        { /* SPI_CONTROLLER_RAYER */ 
     132                .command = bitbang_spi_send_command, 
     133                .multicommand = default_spi_send_multicommand, 
     134                .read = bitbang_spi_read, 
     135                .write_256 = bitbang_spi_write_256, 
     136        }, 
     137#endif 
     138 
     139#if CONFIG_NICINTEL_SPI == 1 
     140        { /* SPI_CONTROLLER_NICINTEL */ 
    132141                .command = bitbang_spi_send_command, 
    133142                .multicommand = default_spi_send_multicommand, 
Note: See TracChangeset for help on using the changeset viewer.