Patchwork Failed BIOS Flash Assistance

login
register
about
Submitter Michael Karcher
Date 2009-12-30 15:28:54
Message ID <1262186934.30445.56.camel@aquila>
Download mbox | patch
Permalink /patch/721/
State Accepted
Commit r918
Headers show

Comments

Michael Karcher - 2009-12-30 15:28:54
Am Montag, den 28.12.2009, 15:21 -0500 schrieb bas nowaira:
> Greetings,
> 
> Per my conversation with agaran on irc, please find the attached log of:
> < agaran> !summary bassem
> < flashrom_bot> bassem: please mail the output of 'flashrom -V',
> 'lspci -nnvvvxxx', 'superiotool -deV' (all commands as root), the
> exact
>                       name of your board (including revision, if there
> are multiple revisions), and a link to the official BIOS download to
>                       flashrom@flashrom.org
> 
> I appreciate all the assistance you can provide.

The included patch should make flashing on your system possible. As it
is quite big (generic SuperI/O infrastructure for an yet unsupported
chip), it is possible that it doesn't work on the first attempt.

If it works, please reply to this mail (keeping the Cc: to
flashrom@flashrom.org) containing
"Acked by: bas nowaira <bas429@gmail.com>"
(without the quotes)
If it doesn't work, please reply quoting the whole output of flashrom -V
of the patched version.

Regards,
  Michael Karcher

Signed-Off-By: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
bas nowaira - 2009-12-30 21:00:01
On Wed, Dec 30, 2009 at 10:28 AM, Michael Karcher
<flashrom@mkarcher.dialup.fu-berlin.de> wrote:
> Am Montag, den 28.12.2009, 15:21 -0500 schrieb bas nowaira:
>> Greetings,
>>
>> Per my conversation with agaran on irc, please find the attached log of:
>> < agaran> !summary bassem
>> < flashrom_bot> bassem: please mail the output of 'flashrom -V',
>> 'lspci -nnvvvxxx', 'superiotool -deV' (all commands as root), the
>> exact
>>                       name of your board (including revision, if there
>> are multiple revisions), and a link to the official BIOS download to
>>                       flashrom@flashrom.org
>>
>> I appreciate all the assistance you can provide.
>
> The included patch should make flashing on your system possible. As it
> is quite big (generic SuperI/O infrastructure for an yet unsupported
> chip), it is possible that it doesn't work on the first attempt.
>
> If it works, please reply to this mail (keeping the Cc: to
> flashrom@flashrom.org) containing
> "Acked by: bas nowaira <bas429@gmail.com>"
> (without the quotes)
> If it doesn't work, please reply quoting the whole output of flashrom -V
> of the patched version.
>
> Regards,
>  Michael Karcher
>
> Signed-Off-By: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
>
> Index: board_enable.c
> ===================================================================
> --- board_enable.c      (Revision 824)
> +++ board_enable.c      (Arbeitskopie)
> @@ -205,7 +205,50 @@
>        return 0;
>  }
>
> +static int pc87360_gpio_set(uint8_t gpio, int raise)
> +{
> +        static const int bankbase[] = {0, 4, 8, 10, 12};
> +        int gpio_bank = gpio / 8;
> +        int gpio_pin = gpio % 8;
> +        uint16_t baseport;
> +        uint8_t id;
> +        uint8_t val;
>
> +        if (gpio_bank > 4)
> +        {
> +                fprintf(stderr, "PC87360: Invalid GPIO %d\n", gpio);
> +                return -1;
> +        }
> +
> +        id = sio_read(0x2E, 0x20);
> +        if (id != 0xE1)
> +        {
> +                fprintf(stderr, "PC87360: unexpected ID %02x\n", id);
> +                return -1;
> +        }
> +
> +        sio_write(0x2E, 0x07, 0x07);           /* select GPIO device */
> +        baseport = (sio_read(0x2E, 0x60) << 8) | sio_read(0x2E, 0x61);
> +        if((baseport & 0xFFF0) == 0xFFF0 || baseport == 0)
> +        {
> +                fprintf (stderr, "PC87360: invalid GPIO base address %04x\n",
> +                         baseport);
> +                return -1;
> +        }
> +        sio_mask (0x2E, 0x30, 0x01, 0x01);     /* Enable logical device */
> +        sio_write(0x2E, 0xF0, gpio_bank*16 + gpio_pin);
> +        sio_mask (0x2E, 0xF1, 0x01, 0x01);     /* Make pin output */
> +
> +        val = INB(baseport + bankbase[gpio_bank]);
> +        if(raise)
> +                val |= 1 << gpio_pin;
> +        else
> +                val &= ~(1 << gpio_pin);
> +        OUTB(val, baseport + bankbase[gpio_bank]);
> +
> +        return 0;
> +}
> +
>  /**
>  * VT823x: Set one of the GPIO pins.
>  */
> @@ -889,6 +932,21 @@
>  }
>
>  /**
> + * Suited for HP Vectra VL400: 815 + ICH + PC87360.
> + */
> +
> +static int board_hp_vl400(const char *name)
> +{
> +        int ret;
> +        ret = intel_ich_gpio_set(25, 1);       /* Master write enable ? */
> +        if (!ret)
> +                ret = pc87360_gpio_set(0x09, 1);       /* #WP ? */
> +        if (!ret)
> +                ret = pc87360_gpio_set(0x27, 1);       /* #TBL */
> +        return ret;
> +}
> +
> +/**
>  * Suited for:
>  *   - Biostar P4M80-M4: VIA P4M800 + VT8237 + IT8705AF
>  *   - GIGABYTE GA-7VT600: VIA KT600 + VT8237 + IT8705
> @@ -1207,6 +1265,7 @@
>        {0x1002, 0x4398, 0x1458, 0x5004,  0x1002, 0x4391, 0x1458, 0xb002, NULL,         NULL,          "GIGABYTE",    "GA-MA78GM-S2H",      it87xx_probe_spi_flash},
>        {0x1002, 0x438d, 0x1458, 0x5001,  0x1002, 0x5956, 0x1002, 0x5956, NULL,         NULL,          "GIGABYTE",    "GA-MA790FX-DQ6",     it87xx_probe_spi_flash},
>        {0x1166, 0x0223, 0x103c, 0x320d,  0x102b, 0x0522, 0x103c, 0x31fa, "hp",         "dl145_g3",    "HP",          "DL145 G3",           board_hp_dl145_g3_enable},
> +       {0x8086, 0x2415, 0x103c, 0x1249,  0x10b7, 0x9200, 0x103c, 0x1246, NULL,         NULL,          "HP",          "Vectra VL400",       board_hp_vl400},
>        {0x1166, 0x0205, 0x1014, 0x0347,  0x1002, 0x515E, 0x1014, 0x0325, NULL,         NULL,          "IBM",         "x3455",              board_ibm_x3455},
>        {0x1039, 0x5513, 0x8086, 0xd61f,  0x1039, 0x6330, 0x8086, 0xd61f, NULL,         NULL,          "Intel",       "D201GLY",            wbsio_check_for_spi},
>        {0x1022, 0x7468,      0,      0,       0,      0,      0,      0, "iwill",      "dk8_htx",     "IWILL",       "DK8-HTX",            w83627hf_gpio24_raise_2e},
>
>
>

Looks like it worked
$ sudo ./flashrom -wV ../IP0108US.rom
flashrom v0.9.1-r824
No coreboot table found.
Found chipset "Intel ICH", enabling flash write...
BIOS Lock Enable: disabled, BIOS Write Enable: enabled, BIOS_CNTL is 0x1
OK.
This chipset supports the following protocols: Non-SPI.
Disabling flash write protection for board "HP Vectra VL400"...
Intel ICH LPC Bridge: Raising GPIO25.
OK.
Calibrating delay loop... 183M loops per second, 100 myus = 136 us. OK.
Probing for AMD Am29F010A/B, 128 KB: probe_29f040b: id1 0x21, id2 0xfe
Probing for AMD Am29F002(N)BB, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for AMD Am29F002(N)BT, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for AMD Am29F016D, 2048 KB: probe_29f040b: id1 0xff, id2 0xff
Probing for AMD Am29F040B, 512 KB: probe_29f040b: id1 0x4e, id2 0x41
Probing for AMD Am29F080B, 1024 KB: probe_jedec: id1 0xff, id2 0xff,
id1 parity violation, id1 is normal flash content, id2 is normal flash
content
Probing for AMD Am29LV040B, 512 KB: probe_29f040b: id1 0x4e, id2 0x41
Probing for AMD Am29LV081B, 1024 KB: probe_29f040b: id1 0xff, id2 0xff
Probing for ASD AE49F2008, 256 KB: Chip lacks correct probe timing
information, using default 10mS/40uS. probe_jedec: id1 0xbf, id2 0x60
Probing for Atmel AT25DF021, 256 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT25DF041A, 512 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT25DF081, 1024 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT25DF161, 2048 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT25DF321, 4096 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT25DF321A, 4096 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT25DF641, 8192 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT25F512B, 64 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Atmel AT25FS010, 128 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT25FS040, 512 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT26DF041, 512 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT26DF081A, 1024 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT26DF161, 2048 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT26DF161A, 2048 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT26F004, 512 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Atmel AT29C512, 64 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Atmel AT29C010A, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Atmel AT29C020, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Atmel AT29C040A, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Atmel AT45CS1282, 16896 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT45DB011D, 128 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT45DB021D, 256 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT45DB041D, 512 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT45DB081D, 1024 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT45DB161D, 2048 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT45DB321C, 4224 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT45DB321D, 4096 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT45DB642D, 8192 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Atmel AT49BV512, 64 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Atmel AT49F002(N), 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Atmel AT49F002(N)T, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for AMIC A25L40P, 512 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for AMIC A29002B, 256 KB: probe_29f002: id1 0xbf, id2 0x60
Probing for AMIC A29002T, 256 KB: probe_29f002: id1 0xbf, id2 0x60
Probing for AMIC A29040B, 512 KB: probe_29f040b: id1 0x4e, id2 0x41
Probing for AMIC A49LF040A, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for EMST F49B002UA, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Eon EN25B05, 64 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25B10, 128 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25B20, 256 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25B40, 512 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25B80, 1024 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25B16, 2048 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25B32, 4096 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25B64, 8192 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25D16, 2048 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25F05, 64 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25F10, 128 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25F20, 256 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25F40, 512 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25F80, 1024 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25F16, 2048 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Eon EN25F32, 4096 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for EON EN29F002(A)(N)B, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for EON EN29F002(A)(N)T, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Fujitsu MBM29F004BC, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Fujitsu MBM29F004TC, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Fujitsu MBM29F400BC, 512 KB: probe_m29f400bt: id1 0x4e, id2 0x50
Probing for Fujitsu MBM29F400TC, 512 KB: probe_m29f400bt: id1 0x4e, id2 0x50
Probing for Intel 28F001BX-B, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Intel 28F001BX-T, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Intel 82802AB, 512 KB: probe_82802ab: id1 0x4e, id2 0x41
Probing for Intel 82802AC, 1024 KB: probe_82802ab: id1 0xff, id2 0xff
Probing for Macronix MX25L512, 64 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Macronix MX25L1005, 128 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Macronix MX25L2005, 256 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Macronix MX25L4005, 512 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Macronix MX25L8005, 1024 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for Macronix MX25L1605, 2048 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for Macronix MX25L1635D, 2048 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for Macronix MX25L3205, 4096 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for Macronix MX25L3235D, 4096 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for Macronix MX25L6405, 8192 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for Macronix MX25L12805, 16384 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for Macronix MX29F001B, 128 KB: probe_29f002: id1 0xbf, id2 0x60
Probing for Macronix MX29F001T, 128 KB: probe_29f002: id1 0xbf, id2 0x60
Probing for Macronix MX29F002B, 256 KB: probe_29f002: id1 0xbf, id2 0x60
Probing for Macronix MX29F002T, 256 KB: probe_29f002: id1 0xbf, id2 0x60
Probing for Macronix MX29LV040, 512 KB: probe_29f002: id1 0xbf, id2 0x60
Probing for Numonyx M25PE10, 128 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Numonyx M25PE20, 256 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Numonyx M25PE40, 256 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Numonyx M25PE80, 1024 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Numonyx M25PE16, 2048 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for PMC Pm25LV010, 128 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for PMC Pm25LV016B, 2048 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for PMC Pm25LV020, 256 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for PMC Pm25LV040, 512 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for PMC Pm25LV080B, 1024 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for PMC Pm25LV512, 64 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for PMC Pm29F002T, 256 KB: probe_29f040b: id1 0x39, id2 0xb9
Probing for PMC Pm29F002B, 256 KB: probe_29f040b: id1 0x39, id2 0xb9
Probing for PMC Pm39LV010, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for PMC Pm49FL002, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for PMC Pm49FL004, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Sanyo LF25FW203A, 2048 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Sharp LHF00L04, 1024 KB: probe_lhf00l04: id1 0xff, id2 0xff
Probing for Spansion S25FL016A, 2048 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for SST SST25VF016B, 2048 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for SST SST25VF032B, 4096 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for SST SST25VF040.REMS, 512 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for SST SST25VF040B, 512 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for SST SST25VF040B.REMS, 512 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for SST SST25VF080B, 1024 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for SST SST28SF040A, 512 KB: probe_28sf040: id1 0x4e, id2 0x41
Probing for SST SST29EE010, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST29LE010, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST29EE020A, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST29LE020, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST39SF010A, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST39SF020A, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST39SF040, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST39VF512, 64 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST39VF010, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST39VF020, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST39VF040, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST39VF080, 1024 KB: probe_jedec: id1 0xff, id2 0xff,
id1 parity violation, id1 is normal flash content, id2 is normal flash
content
Probing for SST SST49LF002A/B, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST49LF003A/B, 384 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST49LF004A/B, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Lock status for 0x000000 (size 0x010000) is 01, write locked
Lock status for 0x010000 (size 0x010000) is 01, write locked
Lock status for 0x020000 (size 0x010000) is 01, write locked
Lock status for 0x030000 (size 0x010000) is 01, write locked
Lock status for 0x040000 (size 0x010000) is 01, write locked
Lock status for 0x050000 (size 0x010000) is 01, write locked
Lock status for 0x060000 (size 0x010000) is 01, write locked
Lock status for 0x070000 (size 0x010000) is 01, write locked
Found chip "SST SST49LF004A/B" (512 KB, FWH) at physical address 0xfff80000.
Probing for SST SST49LF004C, 512 KB: probe_49lfxxxc: id1 0x4e, id2 0x41
Probing for SST SST49LF008A, 1024 KB: probe_jedec: id1 0xff, id2 0xff,
id1 parity violation, id1 is normal flash content, id2 is normal flash
content
Probing for SST SST49LF008C, 1024 KB: probe_49lfxxxc: id1 0xff, id2 0xff
Probing for SST SST49LF016C, 2048 KB: probe_49lfxxxc: id1 0xff, id2 0xff
Probing for SST SST49LF020, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST49LF020A, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST49LF040, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST49LF040B, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SST SST49LF080A, 1024 KB: Chip lacks correct probe timing
information, using default 10mS/40uS. probe_jedec: id1 0xff, id2 0xff,
id1 parity violation, id1 is normal flash content, id2 is normal flash
content
Probing for SST SST49LF160C, 2048 KB: probe_49lfxxxc: id1 0xff, id2 0xff
Probing for ST M25P05-A, 64 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for ST M25P05.RES, 64 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for ST M25P10-A, 128 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for ST M25P10.RES, 128 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for ST M25P20, 256 KB: skipped. Host bus type Non-SPI and chip
bus type SPI are incompatible.
Probing for ST M25P40, 512 KB: skipped. Host bus type Non-SPI and chip
bus type SPI are incompatible.
Probing for ST M25P40-old, 512 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for ST M25P80, 1024 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for ST M25P16, 2048 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for ST M25P32, 4096 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for ST M25P64, 8192 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for ST M25P128, 16384 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for ST M29F002B, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for ST M29F002T/NT, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for ST M29F040B, 512 KB: probe_29f040b: id1 0x4e, id2 0x41
Probing for ST M29F400BT, 512 KB: probe_m29f400bt: id1 0x4e, id2 0x50
Probing for ST M29W010B, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for ST M29W040B, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for ST M50FLW040A, 512 KB: Chip lacks correct probe timing
information, using default 10mS/40uS. probe_jedec: id1 0xbf, id2 0x60
Probing for ST M50FLW040B, 512 KB: Chip lacks correct probe timing
information, using default 10mS/40uS. probe_jedec: id1 0xbf, id2 0x60
Probing for ST M50FLW080A, 1024 KB: Chip lacks correct probe timing
information, using default 10mS/40uS. probe_jedec: id1 0xff, id2 0xff,
id1 parity violation, id1 is normal flash content, id2 is normal flash
content
Probing for ST M50FLW080B, 1024 KB: Chip lacks correct probe timing
information, using default 10mS/40uS. probe_jedec: id1 0xff, id2 0xff,
id1 parity violation, id1 is normal flash content, id2 is normal flash
content
Probing for ST M50FW002, 256 KB: probe_49lfxxxc: id1 0x39, id2 0xb9
Probing for ST M50FW016, 2048 KB: probe_82802ab: id1 0xff, id2 0xff
Probing for ST M50FW040, 512 KB: probe_82802ab: id1 0x4e, id2 0x41
Probing for ST M50FW080, 1024 KB: probe_82802ab: id1 0xff, id2 0xff
Probing for ST M50LPW116, 2048 KB: probe_jedec: id1 0xff, id2 0xff,
id1 parity violation, id1 is normal flash content, id2 is normal flash
content
Probing for SyncMOS S29C31004T, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SyncMOS S29C51001T, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SyncMOS S29C51002T, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for SyncMOS S29C51004T, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for TI TMS29F002RB, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for TI TMS29F002RT, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W25x10, 128 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Winbond W25x20, 256 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Winbond W25x40, 512 KB: skipped. Host bus type Non-SPI and
chip bus type SPI are incompatible.
Probing for Winbond W25x80, 1024 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Winbond W25x16, 2048 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Winbond W25x32, 4096 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Winbond W25x64, 8192 KB: skipped. Host bus type Non-SPI
and chip bus type SPI are incompatible.
Probing for Winbond W29C011, 128 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W29C020C, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W29C040P, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W29EE011, 128 KB: Probing disabled for Winbond
W29EE011 because the probing sequence puts the AMIC A49LF040A in a
funky state. Use 'flashrom -c W29EE011' if you have a board with this
chip.
Probing for Winbond W39V040A, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W39V040B, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W39V040C, 512 KB: Chip lacks correct probe timing
information, using default 10mS/40uS. probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W39V040FA, 512 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W39V080A, 1024 KB: probe_jedec: id1 0xff, id2
0xff, id1 parity violation, id1 is normal flash content, id2 is normal
flash content
Probing for Winbond W49F002U, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W49V002A, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W49V002FA, 256 KB: probe_jedec: id1 0xbf, id2 0x60
Probing for Winbond W39V080FA, 1024 KB: Chip lacks correct probe
timing information, using default 10mS/40uS. probe_jedec: id1 0xff,
id2 0xff, id1 parity violation, id1 is normal flash content, id2 is
normal flash content
Probing for Winbond W39V080FA (dual mode), 512 KB: Chip lacks correct
probe timing information, using default 10mS/40uS. probe_jedec: id1
0xbf, id2 0x60
Probing for Atmel unknown Atmel SPI chip, 0 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for EON unknown EON SPI chip, 0 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for Macronix unknown Macronix SPI chip, 0 KB: skipped. Host
bus type Non-SPI and chip bus type SPI are incompatible.
Probing for PMC unknown PMC SPI chip, 0 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for SST unknown SST SPI chip, 0 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for ST unknown ST SPI chip, 0 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for Sanyo unknown Sanyo SPI chip, 0 KB: skipped. Host bus type
Non-SPI and chip bus type SPI are incompatible.
Probing for Generic unknown SPI chip (RDID), 0 KB: skipped. Host bus
type Non-SPI and chip bus type SPI are incompatible.
Probing for Generic unknown SPI chip (REMS), 0 KB: skipped. Host bus
type Non-SPI and chip bus type SPI are incompatible.
Flash image seems to be a legacy BIOS. Disabling checks.
Writing flash chip... Programming page: 0000 at address:
0x00000000Lock status for 0x000000 (size 0x010000) is 01, write locked
Trying to clear lock for 0x000000... Lock status for 0x000000 (size
0x010000) is 00, full access
OK
0001 at address: 0x00010000Lock status for 0x010000 (size 0x010000) is
01, write locked
Trying to clear lock for 0x010000... Lock status for 0x010000 (size
0x010000) is 00, full access
OK
0002 at address: 0x00020000Lock status for 0x020000 (size 0x010000) is
01, write locked
Trying to clear lock for 0x020000... Lock status for 0x020000 (size
0x010000) is 00, full access
OK
0003 at address: 0x00030000Lock status for 0x030000 (size 0x010000) is
01, write locked
Trying to clear lock for 0x030000... Lock status for 0x030000 (size
0x010000) is 00, full access
OK
0004 at address: 0x00040000Lock status for 0x040000 (size 0x010000) is
01, write locked
Trying to clear lock for 0x040000... Lock status for 0x040000 (size
0x010000) is 00, full access
OK
0005 at address: 0x00050000Lock status for 0x050000 (size 0x010000) is
01, write locked
Trying to clear lock for 0x050000... Lock status for 0x050000 (size
0x010000) is 00, full access
OK
0006 at address: 0x00060000Lock status for 0x060000 (size 0x010000) is
01, write locked
Trying to clear lock for 0x060000... Lock status for 0x060000 (size
0x010000) is 00, full access
OK
0007 at address: 0x00070000
COMPLETE.
Verifying flash... VERIFIED.

and another sanity check
$ sudo ./flashrom -v ../IP0108US.rom
flashrom v0.9.1-r824
No coreboot table found.
Found chipset "Intel ICH", enabling flash write... OK.
This chipset supports the following protocols: Non-SPI.
Disabling flash write protection for board "HP Vectra VL400"...
Intel ICH LPC Bridge: Raising GPIO25.
OK.
Calibrating delay loop... OK.
Found chip "SST SST49LF004A/B" (512 KB, FWH) at physical address 0xfff80000.
Flash image seems to be a legacy BIOS. Disabling checks.
Verifying flash... VERIFIED.

I also rebooted and verified the BIOS version. thanks much for all the
great work!
Michael Karcher - 2009-12-30 21:24:38
Am Mittwoch, den 30.12.2009, 16:00 -0500 schrieb bas nowaira:
> I also rebooted and verified the BIOS version. thanks much for all the
> great work!

Thank you for your quick response. Our quality assurance process
requires all changes to flashrom to be reviewed by another person, and
all hardware specific code to be tested on the hardware it should
support. This is what you already did, we just need a formal signature
that you tested it and it worked. This formal signature is a line
"Acked-By: bas nowaira <bas429@gmail.com>" in a mail that is sent as
reply to the patch. That line should contain your real name.

Thanks in advance,
  Michael Karcher
bas nowaira - 2009-12-30 21:42:04
On Wed, Dec 30, 2009 at 10:28 AM, Michael Karcher
<flashrom@mkarcher.dialup.fu-berlin.de> wrote:
> Am Montag, den 28.12.2009, 15:21 -0500 schrieb bas nowaira:
>> Greetings,
>>
>> Per my conversation with agaran on irc, please find the attached log of:
>> < agaran> !summary bassem
>> < flashrom_bot> bassem: please mail the output of 'flashrom -V',
>> 'lspci -nnvvvxxx', 'superiotool -deV' (all commands as root), the
>> exact
>>                       name of your board (including revision, if there
>> are multiple revisions), and a link to the official BIOS download to
>>                       flashrom@flashrom.org
>>
>> I appreciate all the assistance you can provide.
>
> The included patch should make flashing on your system possible. As it
> is quite big (generic SuperI/O infrastructure for an yet unsupported
> chip), it is possible that it doesn't work on the first attempt.
>
> If it works, please reply to this mail (keeping the Cc: to
> flashrom@flashrom.org) containing
> "Acked by: bas nowaira <bas429@gmail.com>"
> (without the quotes)
> If it doesn't work, please reply quoting the whole output of flashrom -V
> of the patched version.
>
> Regards,
>  Michael Karcher
>
> Signed-Off-By: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
>
> Index: board_enable.c
> ===================================================================
> --- board_enable.c      (Revision 824)
> +++ board_enable.c      (Arbeitskopie)
> @@ -205,7 +205,50 @@
>        return 0;
>  }
>
> +static int pc87360_gpio_set(uint8_t gpio, int raise)
> +{
> +        static const int bankbase[] = {0, 4, 8, 10, 12};
> +        int gpio_bank = gpio / 8;
> +        int gpio_pin = gpio % 8;
> +        uint16_t baseport;
> +        uint8_t id;
> +        uint8_t val;
>
> +        if (gpio_bank > 4)
> +        {
> +                fprintf(stderr, "PC87360: Invalid GPIO %d\n", gpio);
> +                return -1;
> +        }
> +
> +        id = sio_read(0x2E, 0x20);
> +        if (id != 0xE1)
> +        {
> +                fprintf(stderr, "PC87360: unexpected ID %02x\n", id);
> +                return -1;
> +        }
> +
> +        sio_write(0x2E, 0x07, 0x07);           /* select GPIO device */
> +        baseport = (sio_read(0x2E, 0x60) << 8) | sio_read(0x2E, 0x61);
> +        if((baseport & 0xFFF0) == 0xFFF0 || baseport == 0)
> +        {
> +                fprintf (stderr, "PC87360: invalid GPIO base address %04x\n",
> +                         baseport);
> +                return -1;
> +        }
> +        sio_mask (0x2E, 0x30, 0x01, 0x01);     /* Enable logical device */
> +        sio_write(0x2E, 0xF0, gpio_bank*16 + gpio_pin);
> +        sio_mask (0x2E, 0xF1, 0x01, 0x01);     /* Make pin output */
> +
> +        val = INB(baseport + bankbase[gpio_bank]);
> +        if(raise)
> +                val |= 1 << gpio_pin;
> +        else
> +                val &= ~(1 << gpio_pin);
> +        OUTB(val, baseport + bankbase[gpio_bank]);
> +
> +        return 0;
> +}
> +
>  /**
>  * VT823x: Set one of the GPIO pins.
>  */
> @@ -889,6 +932,21 @@
>  }
>
>  /**
> + * Suited for HP Vectra VL400: 815 + ICH + PC87360.
> + */
> +
> +static int board_hp_vl400(const char *name)
> +{
> +        int ret;
> +        ret = intel_ich_gpio_set(25, 1);       /* Master write enable ? */
> +        if (!ret)
> +                ret = pc87360_gpio_set(0x09, 1);       /* #WP ? */
> +        if (!ret)
> +                ret = pc87360_gpio_set(0x27, 1);       /* #TBL */
> +        return ret;
> +}
> +
> +/**
>  * Suited for:
>  *   - Biostar P4M80-M4: VIA P4M800 + VT8237 + IT8705AF
>  *   - GIGABYTE GA-7VT600: VIA KT600 + VT8237 + IT8705
> @@ -1207,6 +1265,7 @@
>        {0x1002, 0x4398, 0x1458, 0x5004,  0x1002, 0x4391, 0x1458, 0xb002, NULL,         NULL,          "GIGABYTE",    "GA-MA78GM-S2H",      it87xx_probe_spi_flash},
>        {0x1002, 0x438d, 0x1458, 0x5001,  0x1002, 0x5956, 0x1002, 0x5956, NULL,         NULL,          "GIGABYTE",    "GA-MA790FX-DQ6",     it87xx_probe_spi_flash},
>        {0x1166, 0x0223, 0x103c, 0x320d,  0x102b, 0x0522, 0x103c, 0x31fa, "hp",         "dl145_g3",    "HP",          "DL145 G3",           board_hp_dl145_g3_enable},
> +       {0x8086, 0x2415, 0x103c, 0x1249,  0x10b7, 0x9200, 0x103c, 0x1246, NULL,         NULL,          "HP",          "Vectra VL400",       board_hp_vl400},
>        {0x1166, 0x0205, 0x1014, 0x0347,  0x1002, 0x515E, 0x1014, 0x0325, NULL,         NULL,          "IBM",         "x3455",              board_ibm_x3455},
>        {0x1039, 0x5513, 0x8086, 0xd61f,  0x1039, 0x6330, 0x8086, 0xd61f, NULL,         NULL,          "Intel",       "D201GLY",            wbsio_check_for_spi},
>        {0x1022, 0x7468,      0,      0,       0,      0,      0,      0, "iwill",      "dk8_htx",     "IWILL",       "DK8-HTX",            w83627hf_gpio24_raise_2e},
>
Acked-By: bas nowaira <bas429@gmail.com>
>
>
Luc Verhaegen - 2010-01-20 13:46:15
No magic knocking sequence to enter extended/configuration mode?

Apart from that:
Acked-by: Luc Verhaegen <libv@skynet.be>

Luc Verhaegen.
Michael Karcher - 2010-01-20 14:23:20
Am Mittwoch, den 20.01.2010, 14:46 +0100 schrieb Luc Verhaegen:
> No magic knocking sequence to enter extended/configuration mode?
Looks like it. I can't find anything like that in the datasheet. And I
think it also didn't see such a thing in the BIOS code.

Regards,
  Michael Karcher
Carl-Daniel Hailfinger - 2010-03-07 23:38:59
On 20.01.2010 15:23, Michael Karcher wrote:
> Am Mittwoch, den 20.01.2010, 14:46 +0100 schrieb Luc Verhaegen:
>   
>> No magic knocking sequence to enter extended/configuration mode?
>>     
> Looks like it. I can't find anything like that in the datasheet. And I
> think it also didn't see such a thing in the BIOS code.
>   

Committed in r721.

Regards,
Carl-Daniel
Carl-Daniel Hailfinger - 2010-03-07 23:43:33
On 08.03.2010 00:38, Carl-Daniel Hailfinger wrote:
> On 20.01.2010 15:23, Michael Karcher wrote:
>   
>> Am Mittwoch, den 20.01.2010, 14:46 +0100 schrieb Luc Verhaegen:
>>   
>>     
>>> No magic knocking sequence to enter extended/configuration mode?
>>>     
>>>       
>> Looks like it. I can't find anything like that in the datasheet. And I
>> think it also didn't see such a thing in the BIOS code.
>>   
>>     
>
> Committed in r721.
>   

I'm sorry, that was the wrong number.

Committed in r918.

Regards,
Carl-Daniel

Patch

Index: board_enable.c
===================================================================
--- board_enable.c	(Revision 824)
+++ board_enable.c	(Arbeitskopie)
@@ -205,7 +205,50 @@ 
 	return 0;
 }
 
+static int pc87360_gpio_set(uint8_t gpio, int raise)
+{
+        static const int bankbase[] = {0, 4, 8, 10, 12};
+        int gpio_bank = gpio / 8;
+        int gpio_pin = gpio % 8;
+        uint16_t baseport;
+        uint8_t id;
+        uint8_t val;
 
+        if (gpio_bank > 4)
+        {
+                fprintf(stderr, "PC87360: Invalid GPIO %d\n", gpio);
+                return -1;
+        }
+
+        id = sio_read(0x2E, 0x20);
+        if (id != 0xE1)
+        {
+                fprintf(stderr, "PC87360: unexpected ID %02x\n", id);
+                return -1;
+        }
+
+        sio_write(0x2E, 0x07, 0x07);		/* select GPIO device */
+        baseport = (sio_read(0x2E, 0x60) << 8) | sio_read(0x2E, 0x61);
+        if((baseport & 0xFFF0) == 0xFFF0 || baseport == 0)
+        {
+                fprintf (stderr, "PC87360: invalid GPIO base address %04x\n",
+                         baseport);
+                return -1;
+        }
+        sio_mask (0x2E, 0x30, 0x01, 0x01);	/* Enable logical device */
+        sio_write(0x2E, 0xF0, gpio_bank*16 + gpio_pin);
+        sio_mask (0x2E, 0xF1, 0x01, 0x01);	/* Make pin output */
+
+        val = INB(baseport + bankbase[gpio_bank]);
+        if(raise)
+                val |= 1 << gpio_pin;
+        else
+                val &= ~(1 << gpio_pin);
+        OUTB(val, baseport + bankbase[gpio_bank]);
+
+        return 0;
+}
+
 /**
  * VT823x: Set one of the GPIO pins.
  */
@@ -889,6 +932,21 @@ 
 }
 
 /**
+ * Suited for HP Vectra VL400: 815 + ICH + PC87360.
+ */
+
+static int board_hp_vl400(const char *name)
+{
+        int ret;
+        ret = intel_ich_gpio_set(25, 1);	/* Master write enable ? */
+        if (!ret)
+                ret = pc87360_gpio_set(0x09, 1);	/* #WP ? */
+        if (!ret)
+                ret = pc87360_gpio_set(0x27, 1);	/* #TBL */
+        return ret;
+}
+
+/**
  * Suited for:
  *   - Biostar P4M80-M4: VIA P4M800 + VT8237 + IT8705AF
  *   - GIGABYTE GA-7VT600: VIA KT600 + VT8237 + IT8705
@@ -1207,6 +1265,7 @@ 
 	{0x1002, 0x4398, 0x1458, 0x5004,  0x1002, 0x4391, 0x1458, 0xb002, NULL,         NULL,          "GIGABYTE",    "GA-MA78GM-S2H",      it87xx_probe_spi_flash},
 	{0x1002, 0x438d, 0x1458, 0x5001,  0x1002, 0x5956, 0x1002, 0x5956, NULL,         NULL,          "GIGABYTE",    "GA-MA790FX-DQ6",     it87xx_probe_spi_flash},
 	{0x1166, 0x0223, 0x103c, 0x320d,  0x102b, 0x0522, 0x103c, 0x31fa, "hp",         "dl145_g3",    "HP",          "DL145 G3",           board_hp_dl145_g3_enable},
+	{0x8086, 0x2415, 0x103c, 0x1249,  0x10b7, 0x9200, 0x103c, 0x1246, NULL,         NULL,          "HP",          "Vectra VL400",       board_hp_vl400}, 
 	{0x1166, 0x0205, 0x1014, 0x0347,  0x1002, 0x515E, 0x1014, 0x0325, NULL,         NULL,          "IBM",         "x3455",              board_ibm_x3455},
 	{0x1039, 0x5513, 0x8086, 0xd61f,  0x1039, 0x6330, 0x8086, 0xd61f, NULL,         NULL,          "Intel",       "D201GLY",            wbsio_check_for_spi},
 	{0x1022, 0x7468,      0,      0,       0,      0,      0,      0, "iwill",      "dk8_htx",     "IWILL",       "DK8-HTX",            w83627hf_gpio24_raise_2e},