blob: a2782b51562e4064524a7aecdd6103540c28a6e4 [file] [log] [blame]
arch import user (historical)98d0d302005-07-06 17:13:46 +00001/*
Uwe Hermann8af6d552010-10-17 19:13:18 +00002 * This file is part of the coreboot project.
3 *
4 * Copyright (C) 2004 Tyan Computer
5 * Written by Yinghai Lu <yhlu@tyan.com> for Tyan Computer.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
arch import user (historical)98d0d302005-07-06 17:13:46 +000015 */
16
17#include <console/console.h>
18#include <device/device.h>
19#include <device/pci.h>
20#include <device/pci_ids.h>
21#include <device/pci_ops.h>
Kyösti Mälkki413e3da2015-02-03 08:05:55 +020022#include "chip.h"
arch import user (historical)98d0d302005-07-06 17:13:46 +000023
24static void pcie_init(struct device *dev)
25{
Uwe Hermann7e2fbd52011-01-04 17:36:55 +000026 u32 dword;
arch import user (historical)98d0d302005-07-06 17:13:46 +000027
Uwe Hermann7f3d48c2008-10-02 18:19:17 +000028 /* Enable PCI error detecting. */
arch import user (historical)98d0d302005-07-06 17:13:46 +000029 dword = pci_read_config32(dev, 0x04);
Uwe Hermann7f3d48c2008-10-02 18:19:17 +000030 dword |= (1 << 8); /* System error enable */
31 dword |= (1 << 30); /* Clear possible errors */
arch import user (historical)98d0d302005-07-06 17:13:46 +000032 pci_write_config32(dev, 0x04, dword);
arch import user (historical)98d0d302005-07-06 17:13:46 +000033}
34
Uwe Hermann7f3d48c2008-10-02 18:19:17 +000035static struct device_operations pcie_ops = {
arch import user (historical)98d0d302005-07-06 17:13:46 +000036 .read_resources = pci_bus_read_resources,
37 .set_resources = pci_dev_set_resources,
38 .enable_resources = pci_bus_enable_resources,
39 .init = pcie_init,
40 .scan_bus = pci_scan_bridge,
arch import user (historical)98d0d302005-07-06 17:13:46 +000041};
42
Stefan Reinauerf1cf1f72007-10-24 09:08:58 +000043static const struct pci_driver pcie_driver __pci_driver = {
arch import user (historical)98d0d302005-07-06 17:13:46 +000044 .ops = &pcie_ops,
45 .vendor = PCI_VENDOR_ID_NVIDIA,
46 .device = PCI_DEVICE_ID_NVIDIA_CK804_PCI_E,
47};