blob: 8fad13649f931f3032c6bd7f03424c8c2418a86a [file] [log] [blame]
Angel Pons182dbde2020-04-02 23:49:05 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Martin Rothebace9f2018-05-26 18:56:17 -06002
Yinghai Lu70093f72004-07-01 03:55:03 +00003#include <device/device.h>
4#include <device/pci.h>
5#include <device/pci_ids.h>
6#include <device/pci_ops.h>
Yinghai Lu70093f72004-07-01 03:55:03 +00007#include "82870.h"
8
Elyes HAOUAS17c59f52018-05-13 13:38:38 +02009static void p64h2_pcix_init(struct device *dev)
Yinghai Lu70093f72004-07-01 03:55:03 +000010{
Stefan Reinauerc269d232010-03-30 21:48:23 +000011 u32 dword;
12 u8 byte;
Yinghai Lu70093f72004-07-01 03:55:03 +000013
Stefan Reinauerc269d232010-03-30 21:48:23 +000014 /* The purpose of changes to HCCR, ACNF, and MTT is to speed
15 * up the PCI bus for cards having high speed transfers.
16 */
Yinghai Lu70093f72004-07-01 03:55:03 +000017 dword = 0xc2040002;
18 pci_write_config32(dev, HCCR, dword);
19 dword = 0x0000c3bf;
20 pci_write_config32(dev, ACNF, dword);
21 byte = 0x08;
22 pci_write_config8(dev, MTT, byte);
23
24}
25static struct device_operations pcix_ops = {
Elyes HAOUASba28e8d2016-08-31 19:22:16 +020026 .read_resources = pci_bus_read_resources,
27 .set_resources = pci_dev_set_resources,
28 .enable_resources = pci_bus_enable_resources,
29 .init = p64h2_pcix_init,
30 .scan_bus = pci_scan_bridge,
Yinghai Lu13f1c2a2005-07-08 02:49:49 +000031 .reset_bus = pci_bus_reset,
Yinghai Lu70093f72004-07-01 03:55:03 +000032};
33
Stefan Reinauerf1cf1f72007-10-24 09:08:58 +000034static const struct pci_driver pcix_driver __pci_driver = {
Elyes HAOUASba28e8d2016-08-31 19:22:16 +020035 .ops = &pcix_ops,
36 .vendor = PCI_VENDOR_ID_INTEL,
37 .device = PCI_DEVICE_ID_INTEL_82870_1F0,
Stefan Reinauer14e22772010-04-27 06:56:47 +000038};
Kyösti Mälkki08c76e12019-08-25 13:05:46 +030039
40struct chip_operations southbridge_intel_i82870_ops = {
41 CHIP_NAME("Intel 82870")
42};