root/drivers/misc/ad525x_dpot-i2c.c

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

DEFINITIONS

This source file includes following definitions.
  1. write_d8
  2. write_r8d8
  3. write_r8d16
  4. read_d8
  5. read_r8d8
  6. read_r8d16
  7. ad_dpot_i2c_probe
  8. ad_dpot_i2c_remove

   1 // SPDX-License-Identifier: GPL-2.0-or-later
   2 /*
   3  * Driver for the Analog Devices digital potentiometers (I2C bus)
   4  *
   5  * Copyright (C) 2010-2011 Michael Hennerich, Analog Devices Inc.
   6  */
   7 
   8 #include <linux/i2c.h>
   9 #include <linux/module.h>
  10 
  11 #include "ad525x_dpot.h"
  12 
  13 /* I2C bus functions */
  14 static int write_d8(void *client, u8 val)
  15 {
  16         return i2c_smbus_write_byte(client, val);
  17 }
  18 
  19 static int write_r8d8(void *client, u8 reg, u8 val)
  20 {
  21         return i2c_smbus_write_byte_data(client, reg, val);
  22 }
  23 
  24 static int write_r8d16(void *client, u8 reg, u16 val)
  25 {
  26         return i2c_smbus_write_word_data(client, reg, val);
  27 }
  28 
  29 static int read_d8(void *client)
  30 {
  31         return i2c_smbus_read_byte(client);
  32 }
  33 
  34 static int read_r8d8(void *client, u8 reg)
  35 {
  36         return i2c_smbus_read_byte_data(client, reg);
  37 }
  38 
  39 static int read_r8d16(void *client, u8 reg)
  40 {
  41         return i2c_smbus_read_word_data(client, reg);
  42 }
  43 
  44 static const struct ad_dpot_bus_ops bops = {
  45         .read_d8        = read_d8,
  46         .read_r8d8      = read_r8d8,
  47         .read_r8d16     = read_r8d16,
  48         .write_d8       = write_d8,
  49         .write_r8d8     = write_r8d8,
  50         .write_r8d16    = write_r8d16,
  51 };
  52 
  53 static int ad_dpot_i2c_probe(struct i2c_client *client,
  54                                       const struct i2c_device_id *id)
  55 {
  56         struct ad_dpot_bus_data bdata = {
  57                 .client = client,
  58                 .bops = &bops,
  59         };
  60 
  61         if (!i2c_check_functionality(client->adapter,
  62                                      I2C_FUNC_SMBUS_WORD_DATA)) {
  63                 dev_err(&client->dev, "SMBUS Word Data not Supported\n");
  64                 return -EIO;
  65         }
  66 
  67         return ad_dpot_probe(&client->dev, &bdata, id->driver_data, id->name);
  68 }
  69 
  70 static int ad_dpot_i2c_remove(struct i2c_client *client)
  71 {
  72         return ad_dpot_remove(&client->dev);
  73 }
  74 
  75 static const struct i2c_device_id ad_dpot_id[] = {
  76         {"ad5258", AD5258_ID},
  77         {"ad5259", AD5259_ID},
  78         {"ad5251", AD5251_ID},
  79         {"ad5252", AD5252_ID},
  80         {"ad5253", AD5253_ID},
  81         {"ad5254", AD5254_ID},
  82         {"ad5255", AD5255_ID},
  83         {"ad5241", AD5241_ID},
  84         {"ad5242", AD5242_ID},
  85         {"ad5243", AD5243_ID},
  86         {"ad5245", AD5245_ID},
  87         {"ad5246", AD5246_ID},
  88         {"ad5247", AD5247_ID},
  89         {"ad5248", AD5248_ID},
  90         {"ad5280", AD5280_ID},
  91         {"ad5282", AD5282_ID},
  92         {"adn2860", ADN2860_ID},
  93         {"ad5273", AD5273_ID},
  94         {"ad5161", AD5161_ID},
  95         {"ad5171", AD5171_ID},
  96         {"ad5170", AD5170_ID},
  97         {"ad5172", AD5172_ID},
  98         {"ad5173", AD5173_ID},
  99         {"ad5272", AD5272_ID},
 100         {"ad5274", AD5274_ID},
 101         {}
 102 };
 103 MODULE_DEVICE_TABLE(i2c, ad_dpot_id);
 104 
 105 static struct i2c_driver ad_dpot_i2c_driver = {
 106         .driver = {
 107                 .name   = "ad_dpot",
 108         },
 109         .probe          = ad_dpot_i2c_probe,
 110         .remove         = ad_dpot_i2c_remove,
 111         .id_table       = ad_dpot_id,
 112 };
 113 
 114 module_i2c_driver(ad_dpot_i2c_driver);
 115 
 116 MODULE_AUTHOR("Michael Hennerich <michael.hennerich@analog.com>");
 117 MODULE_DESCRIPTION("digital potentiometer I2C bus driver");
 118 MODULE_LICENSE("GPL");

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