diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-05 18:57:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-05 18:57:35 -0400 |
commit | 03c0c29aff7e56b722eb6c47eace222b140d0377 (patch) | |
tree | 47267a19b523159cf36a050ef3c35f4dbdb33016 /drivers/base | |
parent | c60c6a96b7bb0f1f8bb635fdfcf5b592aaf062b4 (diff) | |
parent | 7fb8f881c54beb05dd4d2c947dada1c636581d87 (diff) |
Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6
* 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6: (63 commits)
of/platform: Register of_platform_drivers with an "of:" prefix
of/address: Clean up function declarations
of/spi: call of_register_spi_devices() from spi core code
of: Provide default of_node_to_nid() implementation.
of/device: Make of_device_make_bus_id() usable by other code.
of/irq: Fix endian issues in parsing interrupt specifiers
of: Fix phandle endian issues
of/flattree: fix of_flat_dt_is_compatible() to match the full compatible string
of: remove of_default_bus_ids
of: make of_find_device_by_node generic
microblaze: remove references to of_device and to_of_device
sparc: remove references to of_device and to_of_device
powerpc: remove references to of_device and to_of_device
of/device: Replace of_device with platform_device in includes and core code
of/device: Protect against binding of_platform_drivers to non-OF devices
of: remove asm/of_device.h
of: remove asm/of_platform.h
of/platform: remove all of_bus_type and of_platform_bus_type references
of: Merge of_platform_bus_type with platform_bus_type
drivercore/of: Add OF style matching to platform bus
...
Fix up trivial conflicts in arch/microblaze/kernel/Makefile due to just
some obj-y removals by the devicetree branch, while the microblaze
updates added a new file.
Diffstat (limited to 'drivers/base')
-rw-r--r-- | drivers/base/platform.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 4d99c8bdfed..f699fabf403 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/string.h> | 13 | #include <linux/string.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/of_device.h> | ||
15 | #include <linux/module.h> | 16 | #include <linux/module.h> |
16 | #include <linux/init.h> | 17 | #include <linux/init.h> |
17 | #include <linux/dma-mapping.h> | 18 | #include <linux/dma-mapping.h> |
@@ -635,6 +636,12 @@ static struct device_attribute platform_dev_attrs[] = { | |||
635 | static int platform_uevent(struct device *dev, struct kobj_uevent_env *env) | 636 | static int platform_uevent(struct device *dev, struct kobj_uevent_env *env) |
636 | { | 637 | { |
637 | struct platform_device *pdev = to_platform_device(dev); | 638 | struct platform_device *pdev = to_platform_device(dev); |
639 | int rc; | ||
640 | |||
641 | /* Some devices have extra OF data and an OF-style MODALIAS */ | ||
642 | rc = of_device_uevent(dev,env); | ||
643 | if (rc != -ENODEV) | ||
644 | return rc; | ||
638 | 645 | ||
639 | add_uevent_var(env, "MODALIAS=%s%s", PLATFORM_MODULE_PREFIX, | 646 | add_uevent_var(env, "MODALIAS=%s%s", PLATFORM_MODULE_PREFIX, |
640 | (pdev->id_entry) ? pdev->id_entry->name : pdev->name); | 647 | (pdev->id_entry) ? pdev->id_entry->name : pdev->name); |
@@ -673,7 +680,11 @@ static int platform_match(struct device *dev, struct device_driver *drv) | |||
673 | struct platform_device *pdev = to_platform_device(dev); | 680 | struct platform_device *pdev = to_platform_device(dev); |
674 | struct platform_driver *pdrv = to_platform_driver(drv); | 681 | struct platform_driver *pdrv = to_platform_driver(drv); |
675 | 682 | ||
676 | /* match against the id table first */ | 683 | /* Attempt an OF style match first */ |
684 | if (of_driver_match_device(dev, drv)) | ||
685 | return 1; | ||
686 | |||
687 | /* Then try to match against the id table */ | ||
677 | if (pdrv->id_table) | 688 | if (pdrv->id_table) |
678 | return platform_match_id(pdrv->id_table, pdev) != NULL; | 689 | return platform_match_id(pdrv->id_table, pdev) != NULL; |
679 | 690 | ||