On Nov 18, 2008 7:26am, Corey Osgood corey.osgood@gmail.com wrote:
On Mon, Nov 17, 2008 at 11:45 PM, Elia Yehuda z4ziggy@gmail.com> wrote:
well, i managed to make it work as you initially suggested
(adding .ops_pci to northbridge_operations),
but... i had to change the .device to 0x7124 (which is what lspci shows
me) - are you all sure 82810
device_id is 7120? i use 82810e but according to datasheet it should be
the same.
Nope, here's from my i810 datasheet:
DIDDevice Identification Register (Device 0) Address Offset: 02–03h
Default Value: 82810 = 7120h 82810-DC100 = 7122h Attribute: Read Only Size: 16 bits
So, go ahead and do this:
static const struct pci_driver i810_northbridge_driver __pci_driver = {
.ops = &northbridge_operations,
.vendor = PCI_VENDOR_ID_INTEL,
.device = 0x7120,
};
static const struct pci_driver i810e_northbridge_driver __pci_driver = {
.ops = &northbridge_operations,
.vendor = PCI_VENDOR_ID_INTEL,
.device = 0x7124,
};
exactly what i just did! only different naming :-) thanks for all your info.
Please do not be tempted to add i810-dc100 in there as well, unless you
want to read through the i810 datasheet and fix any other differences ;)
:)
-Corey
Elia.
On Tue, Nov 18, 2008 at 6:04 AM, Corey Osgood corey.osgood@gmail.com>
wrote:
On Mon, Nov 17, 2008 at 10:10 PM, Elia Yehuda z4ziggy@gmail.com> wrote:
On Tue, Nov 18, 2008 at 3:44 AM, Joseph Smith joe@settoplinux.org> wrote:
On Tue, 18 Nov 2008 00:59:07 +0200, "Elia Yehuda" z4ziggy@gmail.com>
wrote:
just noticed ive put it in cpu_bus_ops... have a laugh...
No worries, this is how we learn :-)
but i dont have "static struct device_operations mc_ops" - where should
i
add
the .ops_pci ?
Little confused about what your trying to do here. This doesn't work??
static const struct pci_driver northbridge_driver __pci_driver = {
.ops = &northbridge_operations,
.vendor = PCI_VENDOR_ID_INTEL,
.device = 0x7120,
};
this works just fine. i simply don't know where to add ".ops_pci" since i
dont have
"static struct device_operations mc_ops" in northbridge.c
You should be able to add it to pci_domain_ops, but be sure to check that
it actually runs. Otherwise, you'll need to create that mc_ops driver with just the .ops_pci and everything else set to NULL, and use this:
static void enable_dev(struct device *dev) { struct device_path path; //unused?
/* Set the operations if it is a special bus type */ if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) { dev->ops = &pci_domain_ops;
pci_set_method(dev); } else if (dev->path.type == DEVICE_PATH_APIC_CLUSTER) { dev->ops = &cpu_bus_ops; } else if (dev->path.type == DEVICE_PATH_PCI) { dev->ops = &mc_ops;
}
}
I hope you can understand what I'm trying to say, I'ma bit tired right
now.
-Corey
Elia.