Lines Matching refs:i2c
3 * i2c-versatile.c
10 #include <linux/i2c.h>
11 #include <linux/i2c-algo-bit.h>
31 struct i2c_versatile *i2c = data;
33 writel(SDA, i2c->base + (state ? I2C_CONTROLS : I2C_CONTROLC));
38 struct i2c_versatile *i2c = data;
40 writel(SCL, i2c->base + (state ? I2C_CONTROLS : I2C_CONTROLC));
45 struct i2c_versatile *i2c = data;
46 return !!(readl(i2c->base + I2C_CONTROL) & SDA);
51 struct i2c_versatile *i2c = data;
52 return !!(readl(i2c->base + I2C_CONTROL) & SCL);
66 struct i2c_versatile *i2c;
69 i2c = devm_kzalloc(&dev->dev, sizeof(struct i2c_versatile), GFP_KERNEL);
70 if (!i2c)
73 i2c->base = devm_platform_get_and_ioremap_resource(dev, 0, NULL);
74 if (IS_ERR(i2c->base))
75 return PTR_ERR(i2c->base);
77 writel(SCL | SDA, i2c->base + I2C_CONTROLS);
79 i2c->adap.owner = THIS_MODULE;
80 strscpy(i2c->adap.name, "Versatile I2C adapter", sizeof(i2c->adap.name));
81 i2c->adap.algo_data = &i2c->algo;
82 i2c->adap.dev.parent = &dev->dev;
83 i2c->adap.dev.of_node = dev->dev.of_node;
84 i2c->algo = i2c_versatile_algo;
85 i2c->algo.data = i2c;
87 i2c->adap.nr = dev->id;
88 ret = i2c_bit_add_numbered_bus(&i2c->adap);
92 platform_set_drvdata(dev, i2c);
99 struct i2c_versatile *i2c = platform_get_drvdata(dev);
101 i2c_del_adapter(&i2c->adap);
105 { .compatible = "arm,versatile-i2c", },
114 .name = "versatile-i2c",
134 MODULE_ALIAS("platform:versatile-i2c");