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");