root/drivers/gpio/gpio-max7300.c

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

DEFINITIONS

This source file includes following definitions.
  1. max7300_i2c_write
  2. max7300_i2c_read
  3. max7300_probe
  4. max7300_remove
  5. max7300_init
  6. max7300_exit

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Copyright (C) 2009 Wolfram Sang, Pengutronix
   4  *
   5  * Check max730x.c for further details.
   6  */
   7 
   8 #include <linux/module.h>
   9 #include <linux/init.h>
  10 #include <linux/platform_device.h>
  11 #include <linux/mutex.h>
  12 #include <linux/i2c.h>
  13 #include <linux/spi/max7301.h>
  14 #include <linux/slab.h>
  15 
  16 static int max7300_i2c_write(struct device *dev, unsigned int reg,
  17                                 unsigned int val)
  18 {
  19         struct i2c_client *client = to_i2c_client(dev);
  20 
  21         return i2c_smbus_write_byte_data(client, reg, val);
  22 }
  23 
  24 static int max7300_i2c_read(struct device *dev, unsigned int reg)
  25 {
  26         struct i2c_client *client = to_i2c_client(dev);
  27 
  28         return i2c_smbus_read_byte_data(client, reg);
  29 }
  30 
  31 static int max7300_probe(struct i2c_client *client,
  32                          const struct i2c_device_id *id)
  33 {
  34         struct max7301 *ts;
  35 
  36         if (!i2c_check_functionality(client->adapter,
  37                         I2C_FUNC_SMBUS_BYTE_DATA))
  38                 return -EIO;
  39 
  40         ts = devm_kzalloc(&client->dev, sizeof(struct max7301), GFP_KERNEL);
  41         if (!ts)
  42                 return -ENOMEM;
  43 
  44         ts->read = max7300_i2c_read;
  45         ts->write = max7300_i2c_write;
  46         ts->dev = &client->dev;
  47 
  48         return __max730x_probe(ts);
  49 }
  50 
  51 static int max7300_remove(struct i2c_client *client)
  52 {
  53         return __max730x_remove(&client->dev);
  54 }
  55 
  56 static const struct i2c_device_id max7300_id[] = {
  57         { "max7300", 0 },
  58         { }
  59 };
  60 MODULE_DEVICE_TABLE(i2c, max7300_id);
  61 
  62 static struct i2c_driver max7300_driver = {
  63         .driver = {
  64                 .name = "max7300",
  65         },
  66         .probe = max7300_probe,
  67         .remove = max7300_remove,
  68         .id_table = max7300_id,
  69 };
  70 
  71 static int __init max7300_init(void)
  72 {
  73         return i2c_add_driver(&max7300_driver);
  74 }
  75 subsys_initcall(max7300_init);
  76 
  77 static void __exit max7300_exit(void)
  78 {
  79         i2c_del_driver(&max7300_driver);
  80 }
  81 module_exit(max7300_exit);
  82 
  83 MODULE_AUTHOR("Wolfram Sang");
  84 MODULE_LICENSE("GPL v2");
  85 MODULE_DESCRIPTION("MAX7300 GPIO-Expander");

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