/*
 * Copyright 2004 Tyan Computer
 *  by yhlu@tyan.com
 */

#include <console/console.h>

#include <device/device.h>
#include <device/pci.h>
#include <device/pci_ids.h>
#include <device/pci_ops.h>
#include "chip.h"

/*
 * How to use the onboard device driver for option rom execution:
 *
 * 1. You need to add the driver to your mainboard Config.lb:
 *
 *      chip drivers/pci/onboard
 *	    device pci x.0 on end
 *          register "rom_address" = "0xfff80000"
 *      end
 * 2. Reduce the size of your normal (or fallback) image, by adding the
 *    following lines to your target Config.lb, after romimage "normal"
 *      # 48K for SCSI FW or ATI ROM
 *      option ROM_SIZE = 512*1024-48*1024
 * 3. Create your vgabios.bin, for example using awardeco and put it in the
 *    directory of your target Config.lb. You can also read an option rom from
 *    a running system, but this is unreliable, as some option roms are changed
 *    during execution:
 *      #  dd if=/dev/mem of=atix.rom skip=1536 count=96
 * 4. After you built coreboot.rom, attach the option rom to your coreboot
 *    image:
 *      # cat ../atix.rom ./normal/coreboot.rom ./fallback/coreboot.rom > coreboot.rom
 *
 * Alternatively you can use the following script "nsxv" to build your image
 * Usage:
 * # ./nsxv s2850
 *     
 *     #!/bin/bash
 *     MBVENDOR=tyan
 *     MBMODEL=$1
 *     LBROOT=/home/yhlu/xx/xx
 *     
 *     echo $1
 *     date
 *     
 *     cd "$LBROOT/freebios2/targets"
 *     rm -rf "$MBVENDOR/$MBMODEL/$MBMODEL"
 *     ./buildtarget "$MBVENDOR/$MBMODEL" &> "$LBROOT/x_b.txt"
 *     cd "$MBVENDOR/$MBMODEL/$MBMODEL"
 *     #make clean
 *     eval make &> "$LBROOT/x_m.txt"
 *             if [ $? -eq 0 ]; then
 *                     echo "ok."
 *             else
 *                     echo "FAILED! Log excerpt:"
 *                     tail -n 15 "$LBROOT/x_m.txt"
 *                     exit
 *             fi
 *     cat ../atix.rom ./normal/coreboot.rom ./fallback/coreboot.rom > "$LBROOT/rom/"$MBMODEL"_coreboot.rom"
 *     cp -f "$LBROOT/rom/"$MBMODEL"_coreboot.rom" /home/yhlu/
 *     
 *     date
 *     
 */

static void onboard_enable(device_t dev) 
{
	struct drivers_pci_onboard_config *conf;
        conf = dev->chip_info;
	dev->rom_address = conf->rom_address;
}

struct chip_operations drivers_pci_onboard_ops = {
	CHIP_NAME("Onboard PCI")
	.enable_dev = onboard_enable,
};
