i2c-davinci.c (5ae5b1136e0c434b076ab1f9cb39deebf6187f55) | i2c-davinci.c (68f15de976f8f90d3bc0d10160aa20b0528760d4) |
---|---|
1/* 2 * TI DAVINCI I2C adapter driver. 3 * 4 * Copyright (C) 2006 Texas Instruments. 5 * Copyright (C) 2007 MontaVista Software Inc. 6 * 7 * Updated by Vinod & Sudhakar Feb 2005 8 * --- 632 unchanged lines hidden (view full) --- 641 iounmap(dev->base); 642 kfree(dev); 643 644 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 645 release_mem_region(mem->start, resource_size(mem)); 646 return 0; 647} 648 | 1/* 2 * TI DAVINCI I2C adapter driver. 3 * 4 * Copyright (C) 2006 Texas Instruments. 5 * Copyright (C) 2007 MontaVista Software Inc. 6 * 7 * Updated by Vinod & Sudhakar Feb 2005 8 * --- 632 unchanged lines hidden (view full) --- 641 iounmap(dev->base); 642 kfree(dev); 643 644 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 645 release_mem_region(mem->start, resource_size(mem)); 646 return 0; 647} 648 |
649#ifdef CONFIG_PM 650static int davinci_i2c_suspend(struct device *dev) 651{ 652 struct platform_device *pdev = to_platform_device(dev); 653 struct davinci_i2c_dev *i2c_dev = platform_get_drvdata(pdev); 654 655 /* put I2C into reset */ 656 davinci_i2c_reset_ctrl(i2c_dev, 0); 657 clk_disable(i2c_dev->clk); 658 659 return 0; 660} 661 662static int davinci_i2c_resume(struct device *dev) 663{ 664 struct platform_device *pdev = to_platform_device(dev); 665 struct davinci_i2c_dev *i2c_dev = platform_get_drvdata(pdev); 666 667 clk_enable(i2c_dev->clk); 668 /* take I2C out of reset */ 669 davinci_i2c_reset_ctrl(i2c_dev, 1); 670 671 return 0; 672} 673 674static const struct dev_pm_ops davinci_i2c_pm = { 675 .suspend = davinci_i2c_suspend, 676 .resume = davinci_i2c_resume, 677}; 678 679#define davinci_i2c_pm_ops (&davinci_i2c_pm) 680#else 681#define davinci_i2c_pm_ops NULL 682#endif 683 |
|
649/* work with hotplug and coldplug */ 650MODULE_ALIAS("platform:i2c_davinci"); 651 652static struct platform_driver davinci_i2c_driver = { 653 .probe = davinci_i2c_probe, 654 .remove = davinci_i2c_remove, 655 .driver = { 656 .name = "i2c_davinci", 657 .owner = THIS_MODULE, | 684/* work with hotplug and coldplug */ 685MODULE_ALIAS("platform:i2c_davinci"); 686 687static struct platform_driver davinci_i2c_driver = { 688 .probe = davinci_i2c_probe, 689 .remove = davinci_i2c_remove, 690 .driver = { 691 .name = "i2c_davinci", 692 .owner = THIS_MODULE, |
693 .pm = davinci_i2c_pm_ops, |
|
658 }, 659}; 660 661/* I2C may be needed to bring up other drivers */ 662static int __init davinci_i2c_init_driver(void) 663{ 664 return platform_driver_register(&davinci_i2c_driver); 665} 666subsys_initcall(davinci_i2c_init_driver); 667 668static void __exit davinci_i2c_exit_driver(void) 669{ 670 platform_driver_unregister(&davinci_i2c_driver); 671} 672module_exit(davinci_i2c_exit_driver); 673 674MODULE_AUTHOR("Texas Instruments India"); 675MODULE_DESCRIPTION("TI DaVinci I2C bus adapter"); 676MODULE_LICENSE("GPL"); | 694 }, 695}; 696 697/* I2C may be needed to bring up other drivers */ 698static int __init davinci_i2c_init_driver(void) 699{ 700 return platform_driver_register(&davinci_i2c_driver); 701} 702subsys_initcall(davinci_i2c_init_driver); 703 704static void __exit davinci_i2c_exit_driver(void) 705{ 706 platform_driver_unregister(&davinci_i2c_driver); 707} 708module_exit(davinci_i2c_exit_driver); 709 710MODULE_AUTHOR("Texas Instruments India"); 711MODULE_DESCRIPTION("TI DaVinci I2C bus adapter"); 712MODULE_LICENSE("GPL"); |