#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include "dw-i3c-master.h"
#define AST2600_I3CG_REG0(idx) …
#define AST2600_I3CG_REG1(idx) …
#define AST2600_I3CG_REG0_SDA_PULLUP_EN_MASK …
#define AST2600_I3CG_REG0_SDA_PULLUP_EN_2K …
#define AST2600_I3CG_REG0_SDA_PULLUP_EN_750 …
#define AST2600_I3CG_REG0_SDA_PULLUP_EN_545 …
#define AST2600_I3CG_REG1_I2C_MODE …
#define AST2600_I3CG_REG1_TEST_MODE …
#define AST2600_I3CG_REG1_ACT_MODE_MASK …
#define AST2600_I3CG_REG1_ACT_MODE(x) …
#define AST2600_I3CG_REG1_PENDING_INT_MASK …
#define AST2600_I3CG_REG1_PENDING_INT(x) …
#define AST2600_I3CG_REG1_SA_MASK …
#define AST2600_I3CG_REG1_SA(x) …
#define AST2600_I3CG_REG1_SA_EN …
#define AST2600_I3CG_REG1_INST_ID_MASK …
#define AST2600_I3CG_REG1_INST_ID(x) …
#define AST2600_DEFAULT_SDA_PULLUP_OHMS …
#define DEV_ADDR_TABLE_IBI_PEC …
struct ast2600_i3c { … };
static struct ast2600_i3c *to_ast2600_i3c(struct dw_i3c_master *dw)
{ … }
static int ast2600_i3c_pullup_to_reg(unsigned int ohms, u32 *regp)
{ … }
static int ast2600_i3c_init(struct dw_i3c_master *dw)
{ … }
static void ast2600_i3c_set_dat_ibi(struct dw_i3c_master *i3c,
struct i3c_dev_desc *dev,
bool enable, u32 *dat)
{ … }
static const struct dw_i3c_platform_ops ast2600_i3c_ops = …;
static int ast2600_i3c_probe(struct platform_device *pdev)
{ … }
static void ast2600_i3c_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id ast2600_i3c_master_of_match[] = …;
MODULE_DEVICE_TABLE(of, ast2600_i3c_master_of_match);
static struct platform_driver ast2600_i3c_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;