Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 289143
b: refs/heads/master
c: e27d75d
h: refs/heads/master
i:
  289141: bc67c5a
  289139: 55c8b23
  289135: 34c4f73
v: v3
  • Loading branch information
Jonathan Cameron authored and Greg Kroah-Hartman committed Feb 24, 2012
1 parent 477ad19 commit ef00561
Show file tree
Hide file tree
Showing 6 changed files with 448 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ac917a81117ce0286847666b55dd265f6cda8383
refs/heads/master: e27d75d71c0dbbab83768c6e327d13f445d0214f
2 changes: 1 addition & 1 deletion trunk/drivers/staging/iio/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#

obj-$(CONFIG_IIO) += industrialio.o
industrialio-y := industrialio-core.o industrialio-event.o
industrialio-y := industrialio-core.o industrialio-event.o inkern.o
industrialio-$(CONFIG_IIO_BUFFER) += industrialio-buffer.o
industrialio-$(CONFIG_IIO_TRIGGER) += industrialio-trigger.o

Expand Down
96 changes: 96 additions & 0 deletions trunk/drivers/staging/iio/consumer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
/*
* Industrial I/O in kernel consumer interface
*
* Copyright (c) 2011 Jonathan Cameron
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published by
* the Free Software Foundation.
*/
#ifndef _IIO_INKERN_CONSUMER_H_
#define _IIO_INKERN_CONSUMER_H
#include "types.h"

struct iio_dev;
struct iio_chan_spec;

/**
* struct iio_channel - everything needed for a consumer to use a channel
* @indio_dev: Device on which the channel exists.
* @channel: Full description of the channel.
*/
struct iio_channel {
struct iio_dev *indio_dev;
const struct iio_chan_spec *channel;
};

/**
* iio_channel_get() - get description of all that is needed to access channel.
* @name: Unique name of the device as provided in the iio_map
* with which the desired provider to consumer mapping
* was registered.
* @consumer_channel: Unique name to identify the channel on the consumer
* side. This typically describes the channels use within
* the consumer. E.g. 'battery_voltage'
*/
struct iio_channel *iio_st_channel_get(const char *name,
const char *consumer_channel);

/**
* iio_st_channel_release() - release channels obtained via iio_st_channel_get
* @chan: The channel to be released.
*/
void iio_st_channel_release(struct iio_channel *chan);

/**
* iio_st_channel_get_all() - get all channels associated with a client
* @name: name of consumer device.
*
* Returns an array of iio_channel structures terminated with one with
* null iio_dev pointer.
* This function is used by fairly generic consumers to get all the
* channels registered as having this consumer.
*/
struct iio_channel *iio_st_channel_get_all(const char *name);

/**
* iio_st_channel_release_all() - reverse iio_st_get_all
* @chan: Array of channels to be released.
*/
void iio_st_channel_release_all(struct iio_channel *chan);

/**
* iio_st_read_channel_raw() - read from a given channel
* @channel: The channel being queried.
* @val: Value read back.
*
* Note raw reads from iio channels are in adc counts and hence
* scale will need to be applied if standard units required.
*/
int iio_st_read_channel_raw(struct iio_channel *chan,
int *val);

/**
* iio_st_get_channel_type() - get the type of a channel
* @channel: The channel being queried.
* @type: The type of the channel.
*
* returns the enum iio_chan_type of the channel
*/
int iio_st_get_channel_type(struct iio_channel *channel,
enum iio_chan_type *type);

/**
* iio_st_read_channel_scale() - read the scale value for a channel
* @channel: The channel being queried.
* @val: First part of value read back.
* @val2: Second part of value read back.
*
* Note returns a description of what is in val and val2, such
* as IIO_VAL_INT_PLUS_MICRO telling us we have a value of val
* + val2/1e6
*/
int iio_st_read_channel_scale(struct iio_channel *chan, int *val,
int *val2);

#endif
34 changes: 34 additions & 0 deletions trunk/drivers/staging/iio/driver.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Industrial I/O in kernel access map interface.
*
* Copyright (c) 2011 Jonathan Cameron
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published by
* the Free Software Foundation.
*/

#ifndef _IIO_INKERN_H_
#define _IIO_INKERN_H_

struct iio_map;

/**
* iio_map_array_register() - tell the core about inkernel consumers
* @indio_dev: provider device
* @map: array of mappings specifying association of channel with client
*/
int iio_map_array_register(struct iio_dev *indio_dev,
struct iio_map *map);

/**
* iio_map_array_unregister() - tell the core to remove consumer mappings
* @indio_dev: provider device
* @map: array of mappings to remove. Note these must have same memory
* addresses as those originally added not just equal parameter
* values.
*/
int iio_map_array_unregister(struct iio_dev *indio_dev,
struct iio_map *map);

#endif
Loading

0 comments on commit ef00561

Please sign in to comment.