root/drivers/mfd/tps65912-i2c.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. tps65912_i2c_probe
  2. tps65912_i2c_remove

   1 /*
   2  * I2C access driver for TI TPS65912x PMICs
   3  *
   4  * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
   5  *      Andrew F. Davis <afd@ti.com>
   6  *
   7  * This program is free software; you can redistribute it and/or
   8  * modify it under the terms of the GNU General Public License version 2 as
   9  * published by the Free Software Foundation.
  10  *
  11  * This program is distributed "as is" WITHOUT ANY WARRANTY of any
  12  * kind, whether expressed or implied; without even the implied warranty
  13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14  * GNU General Public License version 2 for more details.
  15  *
  16  * Based on the TPS65218 driver and the previous TPS65912 driver by
  17  * Margarita Olaya Cabrera <magi@slimlogic.co.uk>
  18  */
  19 
  20 #include <linux/i2c.h>
  21 #include <linux/module.h>
  22 #include <linux/regmap.h>
  23 
  24 #include <linux/mfd/tps65912.h>
  25 
  26 static const struct of_device_id tps65912_i2c_of_match_table[] = {
  27         { .compatible = "ti,tps65912", },
  28         { /* sentinel */ }
  29 };
  30 MODULE_DEVICE_TABLE(of, tps65912_i2c_of_match_table);
  31 
  32 static int tps65912_i2c_probe(struct i2c_client *client,
  33                               const struct i2c_device_id *ids)
  34 {
  35         struct tps65912 *tps;
  36 
  37         tps = devm_kzalloc(&client->dev, sizeof(*tps), GFP_KERNEL);
  38         if (!tps)
  39                 return -ENOMEM;
  40 
  41         i2c_set_clientdata(client, tps);
  42         tps->dev = &client->dev;
  43         tps->irq = client->irq;
  44 
  45         tps->regmap = devm_regmap_init_i2c(client, &tps65912_regmap_config);
  46         if (IS_ERR(tps->regmap)) {
  47                 dev_err(tps->dev, "Failed to initialize register map\n");
  48                 return PTR_ERR(tps->regmap);
  49         }
  50 
  51         return tps65912_device_init(tps);
  52 }
  53 
  54 static int tps65912_i2c_remove(struct i2c_client *client)
  55 {
  56         struct tps65912 *tps = i2c_get_clientdata(client);
  57 
  58         return tps65912_device_exit(tps);
  59 }
  60 
  61 static const struct i2c_device_id tps65912_i2c_id_table[] = {
  62         { "tps65912", 0 },
  63         { /* sentinel */ }
  64 };
  65 MODULE_DEVICE_TABLE(i2c, tps65912_i2c_id_table);
  66 
  67 static struct i2c_driver tps65912_i2c_driver = {
  68         .driver         = {
  69                 .name   = "tps65912",
  70                 .of_match_table = tps65912_i2c_of_match_table,
  71         },
  72         .probe          = tps65912_i2c_probe,
  73         .remove         = tps65912_i2c_remove,
  74         .id_table       = tps65912_i2c_id_table,
  75 };
  76 module_i2c_driver(tps65912_i2c_driver);
  77 
  78 MODULE_AUTHOR("Andrew F. Davis <afd@ti.com>");
  79 MODULE_DESCRIPTION("TPS65912x I2C Interface Driver");
  80 MODULE_LICENSE("GPL v2");

/* [<][>][^][v][top][bottom][index][help] */