[coreboot] [PATCH] flashrom: Add support for ASUS P4B266
Peter Stuge
peter at stuge.se
Thu May 22 22:51:21 CEST 2008
On Thu, May 22, 2008 at 09:27:31PM +0200, Uwe Hermann wrote:
> Add support for the ASUS P4B266 board.
>
> Tested on actual hardware.
>
> This patch add an ich_gpio_raise() function which can be re-used by other
> board-specific funtions which need to raise GPIOs on ICHx southbridges.
>
> This also fixes bug #7, see http://tracker.coreboot.org/trac/coreboot/ticket/7,
> as it turned out the ICH2 (and other ICHx) code works fine.
>
> Signed-off-by: Uwe Hermann <uwe at hermann-uwe.de>
Acked-by: Peter Stuge <peter at stuge.se>
> Index: board_enable.c
> ===================================================================
> --- board_enable.c (Revision 3345)
> +++ board_enable.c (Arbeitskopie)
> @@ -431,6 +431,53 @@
> return 0;
> }
>
> +/**
> + * Set the specified GPIO on the specified ICHx southbridge to high.
> + *
> + * @param name The name of this board.
> + * @param ich_vendor PCI vendor ID of the specified ICHx southbridge.
> + * @param ich_device PCI device ID of the specified ICHx southbridge.
> + * @param gpiobase_reg GPIOBASE register offset in the LPC bridge.
> + * @param gp_lvl Offset of GP_LVL register in I/O space, relative to GPIOBASE.
> + * @param gp_lvl_bitmask GP_LVL bitmask (set GPIO bits to 1, all others to 0).
> + * @param gpio_bit The bit (GPIO) which shall be set to high.
> + * @return If the write-enable was successful return 0, otherwise return -1.
> + */
> +static int ich_gpio_raise(const char *name, uint16_t ich_vendor,
> + uint16_t ich_device, uint8_t gpiobase_reg,
> + uint8_t gp_lvl, uint32_t gp_lvl_bitmask,
> + unsigned int gpio_bit)
> +{
> + struct pci_dev *dev;
> + uint16_t gpiobar;
> + uint32_t reg32;
> +
> + dev = pci_dev_find(ich_vendor, ich_device); /* Intel ICHx LPC */
> + if (!dev) {
> + fprintf(stderr, "\nERROR: ICHx LPC dev %4x:%4x not found.\n",
> + ich_vendor, ich_device);
> + return -1;
> + }
> +
> + /* Use GPIOBASE register to find the I/O space for GPIO. */
> + gpiobar = pci_read_word(dev, gpiobase_reg) & gp_lvl_bitmask;
> +
> + /* Set specified GPIO to high. */
> + reg32 = INL(gpiobar + gp_lvl);
> + reg32 |= (1 << gpio_bit);
> + OUTL(reg32, gpiobar + gp_lvl);
> +
> + return 0;
> +}
> +
> +/**
> + * Suited for ASUS P4B266.
> + */
> +static int ich2_gpio22_raise(const char *name)
> +{
> + return ich_gpio_raise(name, 0x8086, 0x2440, 0x58, 0x0c, 0xffc0, 22);
> +}
> +
> static int board_kontron_986lcd_m(const char *name)
> {
> struct pci_dev *dev;
> @@ -501,6 +548,8 @@
> };
>
> struct board_pciid_enable board_pciid_enables[] = {
> + {0x8086, 0x1a30, 0x1043, 0x8070, 0x8086, 0x244b, 0x1043, 0x8028,
> + NULL, NULL, "ASUS P4B266", ich2_gpio22_raise},
> {0x10de, 0x0360, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
> "gigabyte", "m57sli", "GIGABYTE GA-M57SLI-S4", it87xx_probe_spi_flash},
> {0x10de, 0x03e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
More information about the coreboot
mailing list