<div dir="ltr"><br><br><div class="gmail_quote">On Tue, Nov 18, 2008 at 6:04 AM, Corey Osgood <span dir="ltr"><<a href="mailto:corey.osgood@gmail.com">corey.osgood@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="Wj3C7c">On Mon, Nov 17, 2008 at 10:10 PM, Elia Yehuda <span dir="ltr"><<a href="mailto:z4ziggy@gmail.com" target="_blank">z4ziggy@gmail.com</a>></span> wrote:<br></div></div><div class="gmail_quote">
<div><div></div><div class="Wj3C7c"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><br><br><div class="gmail_quote"><div>On Tue, Nov 18, 2008 at 3:44 AM, Joseph Smith <span dir="ltr"><<a href="mailto:joe@settoplinux.org" target="_blank">joe@settoplinux.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
<br>
On Tue, 18 Nov 2008 00:59:07 +0200, "Elia Yehuda" <<a href="mailto:z4ziggy@gmail.com" target="_blank">z4ziggy@gmail.com</a>><br>
wrote:<br>
<div>> just noticed ive put it in cpu_bus_ops... have a laugh...<br>
><br>
</div>No worries, this is how we learn :-)<br>
<div>><br>
> but i dont have "static struct device_operations mc_ops" - where should i<br>
> add<br>
> the .ops_pci ?<br>
><br>
</div>Little confused about what your trying to do here. This doesn't work??<br>
<br>
static const struct pci_driver northbridge_driver __pci_driver = {<br>
         .ops    = &northbridge_operations,<br>
         .vendor = PCI_VENDOR_ID_INTEL,<br>
         .device = 0x7120,<br>
};<br>
<font color="#888888"></font></blockquote></div><div><br>this works just fine. i simply don't know where to add ".ops_pci" since i dont have <br>"static struct device_operations mc_ops" in northbridge.c</div>

</div></div></blockquote></div></div><div><br>You should be able to add it to pci_domain_ops, but be sure to check that it actually runs. </div></div></blockquote><div><br>i tried the following, no game :<br>static void intel_set_subsystem(device_t dev, unsigned vendor, unsigned device)<br>
{<br>    u32 pci_id;<br><br>    printk_debug("Setting PCI bridge subsystem ID\n");<br>    pci_id = pci_read_config32(dev, 0);<br>    pci_write_config32(dev, PCI_SUBSYSTEM_VENDOR_ID, pci_id );<br>}<br><br>static struct pci_operations intel_pci_ops = {<br>
       .set_subsystem    = intel_set_subsystem,<br>};<br><br>static struct device_operations pci_domain_ops = {<br>    .read_resources        = pci_domain_read_resources,<br>    .set_resources        = pci_domain_set_resources,<br>
    .enable_resources    = enable_childrens_resources,<br>    .init            = 0,<br>    .scan_bus        = pci_domain_scan_bus,<br>    .ops_pci        = &intel_pci_ops,<br>};<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div>Otherwise, you'll need to create that mc_ops driver with just the .ops_pci and everything else set to NULL, and use this:<br>
<br>static void enable_dev(struct device *dev)<br>{<br>    struct device_path path; //unused?<br><br>    /* Set the operations if it is a special bus type */<br>    if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {<br>        dev->ops = &pci_domain_ops;<br>

        pci_set_method(dev);<br>    } else if (dev->path.type == DEVICE_PATH_APIC_CLUSTER) {<br>        dev->ops = &cpu_bus_ops;<br>    } else if (dev->path.type == DEVICE_PATH_PCI) {<br>        dev->ops = &mc_ops;<br>

    } <br></div></div>}<br><br>I hope you can understand what I'm trying to say, I'm a bit tired right now.</blockquote><div><br>this doesnt work either :<br><br>static void intel_set_subsystem(device_t dev, unsigned vendor, unsigned device)<br>
{<br>    u32 pci_id;<br><br>    printk_debug("Setting PCI bridge subsystem ID\n");<br>    pci_id = pci_read_config32(dev, 0);<br>    pci_write_config32(dev, PCI_SUBSYSTEM_VENDOR_ID, pci_id );<br>}<br><br>static struct pci_operations intel_pci_ops = {<br>
       .set_subsystem    = intel_set_subsystem,<br>};<br><br>static struct device_operations mc_ops = {<br>        .read_resources   = 0, //mc_read_resources,<br>        .set_resources    = 0, //mc_set_resources,<br>        .enable_resources = 0, //pci_dev_enable_resources,<br>
        .init             = 0,<br>        .scan_bus         = 0,<br>        .ops_pci          = &intel_pci_ops,<br>};<br><br>static void enable_dev(struct device *dev)<br>{<br>    struct device_path path;<br><br>    /* Set the operations if it is a special bus type */<br>
    if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) {<br>        dev->ops = &pci_domain_ops;<br>        pci_set_method(dev);<br>    } else if (dev->path.type == DEVICE_PATH_APIC_CLUSTER) {<br>        dev->ops = &cpu_bus_ops;<br>
    } else if (dev->path.type == DEVICE_PATH_PCI) {<br>        dev->ops = &mc_ops;<br>    }<br>}<br> <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><font color="#888888"><br>-Corey<br>
</font></blockquote></div><br>Elia.<br></div>