static int st_accel_i2c_probe(struct i2c_client *client) { struct iio_dev *indio_dev; struct st_sensor_data *adata; const char *match; int ret; indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*adata)); if (!indio_dev) return -ENOMEM; adata = iio_priv(indio_dev); match = device_get_match_data(&client->dev); if (match) strlcpy(client->name, match, sizeof(client->name)); st_sensors_i2c_configure(indio_dev, client, adata); ret = st_accel_common_probe(indio_dev); if (ret < 0) return ret; return 0; }
static int st_accel_spi_probe(struct spi_device *spi) { struct iio_dev *indio_dev; struct st_sensor_data *adata; int err; indio_dev = iio_device_alloc(sizeof(*adata)); if (indio_dev == NULL) { err = -ENOMEM; goto iio_device_alloc_error; } adata = iio_priv(indio_dev); adata->dev = &spi->dev; st_sensors_spi_configure(indio_dev, spi, adata); err = st_accel_common_probe(indio_dev); if (err < 0) goto st_accel_common_probe_error; return 0; st_accel_common_probe_error: iio_device_free(indio_dev); iio_device_alloc_error: return err; }
static int st_accel_spi_probe(struct spi_device *spi) { struct iio_dev *indio_dev; struct st_sensor_data *adata; int err; indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adata)); if (!indio_dev) return -ENOMEM; adata = iio_priv(indio_dev); adata->dev = &spi->dev; st_sensors_spi_configure(indio_dev, spi, adata); err = st_accel_common_probe(indio_dev, spi->dev.platform_data); if (err < 0) return err; return 0; }
static int st_accel_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct iio_dev *indio_dev; struct st_sensor_data *adata; int err; indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*adata)); if (!indio_dev) return -ENOMEM; adata = iio_priv(indio_dev); adata->dev = &client->dev; st_sensors_i2c_configure(indio_dev, client, adata); err = st_accel_common_probe(indio_dev, client->dev.platform_data); if (err < 0) return err; return 0; }
static int st_accel_spi_probe(struct spi_device *spi) { struct iio_dev *indio_dev; struct st_sensor_data *adata; int err; indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adata)); if (!indio_dev) return -ENOMEM; adata = iio_priv(indio_dev); st_sensors_of_name_probe(&spi->dev, st_accel_of_match, spi->modalias, sizeof(spi->modalias)); st_sensors_spi_configure(indio_dev, spi, adata); err = st_accel_common_probe(indio_dev); if (err < 0) return err; return 0; }