36 lines
927 B
C
36 lines
927 B
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
/*
|
|
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
|
|
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
|
*/
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/iio/consumer.h>
|
|
#include "smb5-iio.h"
|
|
|
|
#if defined(CONFIG_QPNP_SMBLITE) && defined(CONFIG_QPNP_SMB5)
|
|
struct iio_channel **get_ext_channels(struct device *dev,
|
|
const char *const *channel_map, int size)
|
|
{
|
|
int i, rc = 0;
|
|
struct iio_channel **iio_ch_ext;
|
|
|
|
iio_ch_ext = devm_kcalloc(dev, size, sizeof(*iio_ch_ext), GFP_KERNEL);
|
|
if (!iio_ch_ext)
|
|
return ERR_PTR(-ENOMEM);
|
|
|
|
for (i = 0; i < size; i++) {
|
|
iio_ch_ext[i] = devm_iio_channel_get(dev, channel_map[i]);
|
|
|
|
if (IS_ERR(iio_ch_ext[i])) {
|
|
rc = PTR_ERR(iio_ch_ext[i]);
|
|
if (rc != -EPROBE_DEFER)
|
|
dev_err(dev, "%s channel unavailable, %d\n",
|
|
channel_map[i], rc);
|
|
return ERR_PTR(rc);
|
|
}
|
|
}
|
|
|
|
return iio_ch_ext;
|
|
}
|
|
#endif
|