1#include <linux/platform_device.h> 2#include <linux/pm_runtime.h> 3#include <linux/module.h> 4#include <linux/of_platform.h> 5 6static int am335x_child_probe(struct platform_device *pdev) 7{ 8 int ret; 9 10 pm_runtime_enable(&pdev->dev); 11 12 ret = of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev); 13 if (ret) 14 goto err; 15 16 return 0; 17err: 18 pm_runtime_disable(&pdev->dev); 19 return ret; 20} 21 22static const struct of_device_id am335x_child_of_match[] = { 23 { .compatible = "ti,am33xx-usb" }, 24 { }, 25}; 26MODULE_DEVICE_TABLE(of, am335x_child_of_match); 27 28static struct platform_driver am335x_child_driver = { 29 .probe = am335x_child_probe, 30 .driver = { 31 .name = "am335x-usb-childs", 32 .of_match_table = am335x_child_of_match, 33 }, 34}; 35 36static int __init am335x_child_init(void) 37{ 38 return platform_driver_register(&am335x_child_driver); 39} 40module_init(am335x_child_init); 41 42MODULE_DESCRIPTION("AM33xx child devices"); 43MODULE_LICENSE("GPL v2"); 44