Lines Matching full:i2c

2  *  i2c-versatile.c
13 #include <linux/i2c.h>
14 #include <linux/i2c-algo-bit.h>
34 struct i2c_versatile *i2c = data; in i2c_versatile_setsda() local
36 writel(SDA, i2c->base + (state ? I2C_CONTROLS : I2C_CONTROLC)); in i2c_versatile_setsda()
41 struct i2c_versatile *i2c = data; in i2c_versatile_setscl() local
43 writel(SCL, i2c->base + (state ? I2C_CONTROLS : I2C_CONTROLC)); in i2c_versatile_setscl()
48 struct i2c_versatile *i2c = data; in i2c_versatile_getsda() local
49 return !!(readl(i2c->base + I2C_CONTROL) & SDA); in i2c_versatile_getsda()
54 struct i2c_versatile *i2c = data; in i2c_versatile_getscl() local
55 return !!(readl(i2c->base + I2C_CONTROL) & SCL); in i2c_versatile_getscl()
69 struct i2c_versatile *i2c; in i2c_versatile_probe() local
79 if (!request_mem_region(r->start, resource_size(r), "versatile-i2c")) { in i2c_versatile_probe()
84 i2c = kzalloc(sizeof(struct i2c_versatile), GFP_KERNEL); in i2c_versatile_probe()
85 if (!i2c) { in i2c_versatile_probe()
90 i2c->base = ioremap(r->start, resource_size(r)); in i2c_versatile_probe()
91 if (!i2c->base) { in i2c_versatile_probe()
96 writel(SCL | SDA, i2c->base + I2C_CONTROLS); in i2c_versatile_probe()
98 i2c->adap.owner = THIS_MODULE; in i2c_versatile_probe()
99 strlcpy(i2c->adap.name, "Versatile I2C adapter", sizeof(i2c->adap.name)); in i2c_versatile_probe()
100 i2c->adap.algo_data = &i2c->algo; in i2c_versatile_probe()
101 i2c->adap.dev.parent = &dev->dev; in i2c_versatile_probe()
102 i2c->algo = i2c_versatile_algo; in i2c_versatile_probe()
103 i2c->algo.data = i2c; in i2c_versatile_probe()
107 i2c->adap.nr = dev->id; in i2c_versatile_probe()
108 ret = i2c_bit_add_numbered_bus(&i2c->adap); in i2c_versatile_probe()
111 ret = i2c_bit_add_bus(&i2c->adap); in i2c_versatile_probe()
113 platform_set_drvdata(dev, i2c); in i2c_versatile_probe()
117 iounmap(i2c->base); in i2c_versatile_probe()
119 kfree(i2c); in i2c_versatile_probe()
128 struct i2c_versatile *i2c = platform_get_drvdata(dev); in i2c_versatile_remove() local
132 i2c_del_adapter(&i2c->adap); in i2c_versatile_remove()
140 .name = "versatile-i2c",
158 MODULE_DESCRIPTION("ARM Versatile I2C bus driver");
160 MODULE_ALIAS("platform:versatile-i2c");