On Thu, Nov 08, 2012 at 12:32:25PM -0700, Bjorn Helgaas wrote: > Struct device_driver is a generic structure, so it seems strange to > have to include non-generic things like of_device_id and now > acpi_match_table there. Yes, but in a sense the DT and ACPI are "generic". So that they are used to describe the configuration of a machine. > I'm actually interested in the details you didn't include above, too. > For example, I don't know of a generic way to get resource information > from a "struct device *", so I assume you need to figure out what sort > of device it is and then do the appropriate PCI/ACPI/OF/DT/etc > operations to learn the resources? Right. Typically you check, dev->of_node (or dev->acpi_handle) in a driver and if it is non-NULL you can extract the resources using DT or ACPI specific API calls. Some things like IRQs and MMIO addresses can be passed to the driver using the struct resource (and we do that already) but others we can't, like GPIOs and some DT specific properties. Also with ACPI there might be need to call some ACPI method, like _DSM where we need to have access to the ACPI handle. > I think it would be cool if there *were* a generic way to get "struct > device" resources. Then you could imagine a mechanism where a driver > supplied a list of identifiers it could claim, e.g., > PCI_VEN_DEV(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CE4100_UART), > ACPI_ID("PNP0501"), etc., and it might not need to know anything more > than what the identifier is. Indeed that would be cool, and we should probably try to implement something like that, eventually. If you have followed the discusion there is already talks about having a single API to get GPIOs to the driver in a generic way. -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html