#include <linux/clk.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#define UNIPHIER_I2C_DTRM …
#define UNIPHIER_I2C_DTRM_IRQEN …
#define UNIPHIER_I2C_DTRM_STA …
#define UNIPHIER_I2C_DTRM_STO …
#define UNIPHIER_I2C_DTRM_NACK …
#define UNIPHIER_I2C_DTRM_RD …
#define UNIPHIER_I2C_DREC …
#define UNIPHIER_I2C_DREC_MST …
#define UNIPHIER_I2C_DREC_TX …
#define UNIPHIER_I2C_DREC_STS …
#define UNIPHIER_I2C_DREC_LRB …
#define UNIPHIER_I2C_DREC_LAB …
#define UNIPHIER_I2C_DREC_BBN …
#define UNIPHIER_I2C_MYAD …
#define UNIPHIER_I2C_CLK …
#define UNIPHIER_I2C_BRST …
#define UNIPHIER_I2C_BRST_FOEN …
#define UNIPHIER_I2C_BRST_RSCL …
#define UNIPHIER_I2C_HOLD …
#define UNIPHIER_I2C_BSTS …
#define UNIPHIER_I2C_BSTS_SDA …
#define UNIPHIER_I2C_BSTS_SCL …
#define UNIPHIER_I2C_NOISE …
#define UNIPHIER_I2C_SETUP …
struct uniphier_i2c_priv { … };
static irqreturn_t uniphier_i2c_interrupt(int irq, void *dev_id)
{ … }
static int uniphier_i2c_xfer_byte(struct i2c_adapter *adap, u32 txdata,
u32 *rxdatap)
{ … }
static int uniphier_i2c_send_byte(struct i2c_adapter *adap, u32 txdata)
{ … }
static int uniphier_i2c_tx(struct i2c_adapter *adap, u16 addr, u16 len,
const u8 *buf)
{ … }
static int uniphier_i2c_rx(struct i2c_adapter *adap, u16 addr, u16 len,
u8 *buf)
{ … }
static int uniphier_i2c_stop(struct i2c_adapter *adap)
{ … }
static int uniphier_i2c_xfer_one(struct i2c_adapter *adap,
struct i2c_msg *msg, bool stop)
{ … }
static int uniphier_i2c_check_bus_busy(struct i2c_adapter *adap)
{ … }
static int uniphier_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
{ … }
static u32 uniphier_i2c_functionality(struct i2c_adapter *adap)
{ … }
static const struct i2c_algorithm uniphier_i2c_algo = …;
static void uniphier_i2c_reset(struct uniphier_i2c_priv *priv, bool reset_on)
{ … }
static int uniphier_i2c_get_scl(struct i2c_adapter *adap)
{ … }
static void uniphier_i2c_set_scl(struct i2c_adapter *adap, int val)
{ … }
static int uniphier_i2c_get_sda(struct i2c_adapter *adap)
{ … }
static void uniphier_i2c_unprepare_recovery(struct i2c_adapter *adap)
{ … }
static struct i2c_bus_recovery_info uniphier_i2c_bus_recovery_info = …;
static void uniphier_i2c_hw_init(struct uniphier_i2c_priv *priv)
{ … }
static int uniphier_i2c_probe(struct platform_device *pdev)
{ … }
static void uniphier_i2c_remove(struct platform_device *pdev)
{ … }
static int __maybe_unused uniphier_i2c_suspend(struct device *dev)
{ … }
static int __maybe_unused uniphier_i2c_resume(struct device *dev)
{ … }
static const struct dev_pm_ops uniphier_i2c_pm_ops = …;
static const struct of_device_id uniphier_i2c_match[] = …;
MODULE_DEVICE_TABLE(of, uniphier_i2c_match);
static struct platform_driver uniphier_i2c_drv = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;