1 #include <console/console.h>
2 #include <device/device.h>
3 #include <device/pci.h>
4 #include <device/pci_ids.h>
5 #include <device/pci_ops.h>
9 static void ide_init(struct device *dev)
11 /* Enable ide devices so the linux ide driver will work */
12 uint16_t ideTimingConfig;
13 int enable_primary = 1;
14 int enable_secondary = 1;
16 ideTimingConfig = pci_read_config16(dev, IDE_TIM_PRI);
17 ideTimingConfig &= ~IDE_DECODE_ENABLE;
19 /* Enable first ide interface */
20 ideTimingConfig |= IDE_DECODE_ENABLE;
21 printk_debug("IDE0 ");
23 pci_write_config16(dev, IDE_TIM_PRI, ideTimingConfig);
25 ideTimingConfig = pci_read_config16(dev, IDE_TIM_SEC);
26 ideTimingConfig &= ~IDE_DECODE_ENABLE;
27 if (enable_secondary) {
28 /* Enable secondary ide interface */
29 ideTimingConfig |= IDE_DECODE_ENABLE;
30 printk_debug("IDE1 ");
32 pci_write_config16(dev, IDE_TIM_SEC, ideTimingConfig);
35 static struct device_operations ide_ops = {
36 .read_resources = pci_dev_read_resources,
37 .set_resources = pci_dev_set_resources,
38 .enable_resources = pci_dev_enable_resources,
41 .enable = i82801cx_enable,
44 static const struct pci_driver ide_driver __pci_driver = {
46 .vendor = PCI_VENDOR_ID_INTEL,
47 .device = PCI_DEVICE_ID_INTEL_82801CA_IDE,