* Return 0 if the i2c device is the one we expect.
* return a negative error number otherwise
*/
-static int ak8975_who_i_am(struct i2c_client *client,
+static int ak8975_who_i_am(const struct ak8975_data *data,
enum asahi_compass_chipset type)
{
+ struct i2c_client *client = data->client;
u8 wia_val[2];
int ret;
* Perform some start-of-day setup, including reading the asa calibration
* values and caching them.
*/
-static int ak8975_setup(struct i2c_client *client)
+static int ak8975_setup(struct ak8975_data *data)
{
- struct iio_dev *indio_dev = i2c_get_clientdata(client);
- struct ak8975_data *data = iio_priv(indio_dev);
+ struct i2c_client *client = data->client;
int ret;
/* Write the fused rom access mode. */
return ret > 0 ? 0 : -ETIMEDOUT;
}
-static int ak8975_start_read_axis(struct ak8975_data *data,
- const struct i2c_client *client)
+static int ak8975_start_read_axis(struct ak8975_data *data)
{
- /* Set up the device for taking a sample. */
- int ret = ak8975_set_mode(data, MODE_ONCE);
+ struct i2c_client *client = data->client;
+ int ret;
+ /* Set up the device for taking a sample. */
+ ret = ak8975_set_mode(data, MODE_ONCE);
if (ret < 0) {
dev_err(&client->dev, "Error in setting operating mode\n");
return ret;
mutex_lock(&data->lock);
- ret = ak8975_start_read_axis(data, client);
+ ret = ak8975_start_read_axis(data);
if (ret)
goto exit;
mutex_lock(&data->lock);
- ret = ak8975_start_read_axis(data, client);
+ ret = ak8975_start_read_axis(data);
if (ret)
goto unlock;
if (ret)
return ret;
- ret = ak8975_who_i_am(client, data->def->type);
+ ret = ak8975_who_i_am(data, data->def->type);
if (ret) {
dev_err(&client->dev, "Unexpected device\n");
goto power_off;
dev_dbg(&client->dev, "Asahi compass chip %s\n", name);
/* Perform some basic start-of-day setup of the device. */
- ret = ak8975_setup(client);
+ ret = ak8975_setup(data);
if (ret) {
dev_err(&client->dev, "%s initialization fails\n", name);
goto power_off;