• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <device/device.h>
4 #include <device/pci.h>
5 #include <device/pci_ops.h>
6 #include <device/pci_ids.h>
7 #include "i82801jx.h"
8 
pci_init(struct device * dev)9 static void pci_init(struct device *dev)
10 {
11 	u16 reg16;
12 
13 	/* This device has no interrupt */
14 	pci_write_config8(dev, PCI_INTERRUPT_LINE, 0xff);
15 
16 	/* Master Latency Count must be set to 0x04! */
17 	pci_update_config8(dev, D30F0_SMLT, 0x07, 0x04 << 3);
18 
19 	/* Clear errors in status registers. FIXME: Do something? */
20 	reg16 = pci_read_config16(dev, PCI_STATUS);
21 	//reg16 |= 0xf900;
22 	pci_write_config16(dev, PCI_STATUS, reg16);
23 
24 	reg16 = pci_read_config16(dev, PCI_SEC_STATUS);
25 	// reg16 |= 0xf900;
26 	pci_write_config16(dev, PCI_SEC_STATUS, reg16);
27 }
28 
29 static struct device_operations device_ops = {
30 	.read_resources		= pci_bus_read_resources,
31 	.set_resources		= pci_dev_set_resources,
32 	.enable_resources	= pci_bus_enable_resources,
33 	.init			= pci_init,
34 	.scan_bus		= pci_scan_bridge,
35 	.reset_bus		= pci_bus_reset,
36 	.ops_pci		= &pci_dev_ops_pci,
37 };
38 
39 static const unsigned short pci_device_ids[] = {
40 	0x244e,
41 	0
42 };
43 
44 static const struct pci_driver ich10_pci __pci_driver = {
45 	.ops		= &device_ops,
46 	.vendor		= PCI_VID_INTEL,
47 	.devices	= pci_device_ids,
48 };
49