28 #include <linux/kernel.h>
90 static void solo_i2c_start(
struct solo_dev *solo_dev)
99 solo_i2c_flush(solo_dev, 1);
102 static void solo_i2c_stop(
struct solo_dev *solo_dev)
110 static int solo_i2c_handle_read(
struct solo_dev *solo_dev)
114 solo_i2c_flush(solo_dev, 0);
123 solo_i2c_stop(solo_dev);
128 solo_i2c_start(solo_dev);
133 solo_i2c_stop(solo_dev);
139 static int solo_i2c_handle_write(
struct solo_dev *solo_dev)
146 solo_i2c_flush(solo_dev, 1);
155 solo_i2c_stop(solo_dev);
160 solo_i2c_start(solo_dev);
163 solo_i2c_stop(solo_dev);
180 solo_i2c_stop(solo_dev);
188 ret = solo_i2c_handle_read(solo_dev);
194 ret = solo_i2c_handle_write(solo_dev);
202 ret = solo_i2c_handle_read(solo_dev);
206 solo_i2c_stop(solo_dev);
212 static int solo_i2c_master_xfer(
struct i2c_adapter *adap,
213 struct i2c_msg msgs[],
int num)
215 struct solo_dev *solo_dev = adap->
algo_data;
226 if (i == SOLO_I2C_ADAPTERS)
237 solo_i2c_start(solo_dev);
271 .master_xfer = solo_i2c_master_xfer,
272 .functionality = solo_i2c_functionality,
292 adap->
algo = &solo_i2c_algo;
295 adap->
dev.parent = &solo_dev->
pdev->dev;
306 if (!solo_dev->
i2c_adap[i].algo_data)
314 dev_info(&solo_dev->
pdev->dev,
"Enabled %d i2c adapters\n",
325 if (!solo_dev->
i2c_adap[i].algo_data)