| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * KMX61 - Kionix 6-axis Accelerometer/Magnetometer |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright (c) 2014, Intel Corporation. |
|---|
| 5 | 6 | * |
|---|
| 6 | | - * This file is subject to the terms and conditions of version 2 of |
|---|
| 7 | | - * the GNU General Public License. See the file COPYING in the main |
|---|
| 8 | | - * directory of this archive for more details. |
|---|
| 9 | | - * |
|---|
| 10 | 7 | * IIO driver for KMX61 (7-bit I2C slave address 0x0E or 0x0F). |
|---|
| 11 | | - * |
|---|
| 12 | 8 | */ |
|---|
| 13 | 9 | |
|---|
| 14 | 10 | #include <linux/module.h> |
|---|
| .. | .. |
|---|
| 316 | 312 | |
|---|
| 317 | 313 | /** |
|---|
| 318 | 314 | * kmx61_set_mode() - set KMX61 device operating mode |
|---|
| 319 | | - * @data - kmx61 device private data pointer |
|---|
| 320 | | - * @mode - bitmask, indicating operating mode for @device |
|---|
| 321 | | - * @device - bitmask, indicating device for which @mode needs to be set |
|---|
| 322 | | - * @update - update stby bits stored in device's private @data |
|---|
| 315 | + * @data: kmx61 device private data pointer |
|---|
| 316 | + * @mode: bitmask, indicating operating mode for @device |
|---|
| 317 | + * @device: bitmask, indicating device for which @mode needs to be set |
|---|
| 318 | + * @update: update stby bits stored in device's private @data |
|---|
| 323 | 319 | * |
|---|
| 324 | 320 | * For each sensor (accelerometer/magnetometer) there are two operating modes |
|---|
| 325 | 321 | * STANDBY and OPERATION. Neither accel nor magn can be disabled independently |
|---|
| .. | .. |
|---|
| 722 | 718 | |
|---|
| 723 | 719 | /** |
|---|
| 724 | 720 | * kmx61_set_power_state() - set power state for kmx61 @device |
|---|
| 725 | | - * @data - kmx61 device private pointer |
|---|
| 726 | | - * @on - power state to be set for @device |
|---|
| 727 | | - * @device - bitmask indicating device for which @on state needs to be set |
|---|
| 721 | + * @data: kmx61 device private pointer |
|---|
| 722 | + * @on: power state to be set for @device |
|---|
| 723 | + * @device: bitmask indicating device for which @on state needs to be set |
|---|
| 728 | 724 | * |
|---|
| 729 | 725 | * Notice that when ACC power state needs to be set to ON and MAG is in |
|---|
| 730 | 726 | * OPERATION then we know that kmx61_runtime_resume was already called |
|---|
| .. | .. |
|---|
| 1252 | 1248 | |
|---|
| 1253 | 1249 | kmx61_set_data(indio_dev, data); |
|---|
| 1254 | 1250 | |
|---|
| 1255 | | - indio_dev->dev.parent = &data->client->dev; |
|---|
| 1256 | 1251 | indio_dev->channels = chan; |
|---|
| 1257 | 1252 | indio_dev->num_channels = num_channels; |
|---|
| 1258 | 1253 | indio_dev->name = name; |
|---|
| .. | .. |
|---|
| 1397 | 1392 | ret = iio_device_register(data->acc_indio_dev); |
|---|
| 1398 | 1393 | if (ret < 0) { |
|---|
| 1399 | 1394 | dev_err(&client->dev, "Failed to register acc iio device\n"); |
|---|
| 1400 | | - goto err_buffer_cleanup_mag; |
|---|
| 1395 | + goto err_pm_cleanup; |
|---|
| 1401 | 1396 | } |
|---|
| 1402 | 1397 | |
|---|
| 1403 | 1398 | ret = iio_device_register(data->mag_indio_dev); |
|---|
| .. | .. |
|---|
| 1410 | 1405 | |
|---|
| 1411 | 1406 | err_iio_unregister_acc: |
|---|
| 1412 | 1407 | iio_device_unregister(data->acc_indio_dev); |
|---|
| 1408 | +err_pm_cleanup: |
|---|
| 1409 | + pm_runtime_dont_use_autosuspend(&client->dev); |
|---|
| 1410 | + pm_runtime_disable(&client->dev); |
|---|
| 1413 | 1411 | err_buffer_cleanup_mag: |
|---|
| 1414 | 1412 | if (client->irq > 0) |
|---|
| 1415 | 1413 | iio_triggered_buffer_cleanup(data->mag_indio_dev); |
|---|