From 8f518d71f392b597832653f9438332ae27019da1 Mon Sep 17 00:00:00 2001 From: Bryan Freed Date: Tue, 21 Jun 2011 15:54:56 -0700 Subject: [PATCH] iio: light sensor: Fix a panic in the tsl2563 driver. Add a wrapper for this driver around the IIO_CHAN() wrapper to make channel parameters more readable. This fixes a panic caused by the info_masks being accidentally passed in as channel2 parameters which easily surpass the size of the iio_modifier_names_light array. Signed-off-by: Bryan Freed Acked-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- drivers/staging/iio/light/tsl2563.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/staging/iio/light/tsl2563.c b/drivers/staging/iio/light/tsl2563.c index 9cffa2ecb0ee..c47341212382 100644 --- a/drivers/staging/iio/light/tsl2563.c +++ b/drivers/staging/iio/light/tsl2563.c @@ -548,15 +548,16 @@ error_ret: return ret; } +#define INFO_MASK (1 << IIO_CHAN_INFO_CALIBSCALE_SEPARATE) +#define EVENT_MASK (IIO_EV_BIT(IIO_EV_TYPE_THRESH, IIO_EV_DIR_RISING) | \ + IIO_EV_BIT(IIO_EV_TYPE_THRESH, IIO_EV_DIR_FALLING)) +#define IIO_CHAN_2563(type, mod, proc, chan, imask, emask) \ + IIO_CHAN(type, mod, 1, proc, NULL, chan, 0, imask, 0, 0, {}, emask) + static const struct iio_chan_spec tsl2563_channels[] = { - IIO_CHAN(IIO_LIGHT, 0, 1, 1, NULL, 0, 0, 0, 0, 0, {}, 0), - IIO_CHAN(IIO_INTENSITY, 1, 1, 0, "both", 0, - (1 << IIO_CHAN_INFO_CALIBSCALE_SEPARATE), 0, 0, 0, {}, - IIO_EV_BIT(IIO_EV_TYPE_THRESH, IIO_EV_DIR_RISING) | - IIO_EV_BIT(IIO_EV_TYPE_THRESH, IIO_EV_DIR_FALLING)), - IIO_CHAN(IIO_INTENSITY, 1, 1, 0, "ir", 1, - (1 << IIO_CHAN_INFO_CALIBSCALE_SEPARATE), 0, 0, 0, {}, - 0) + IIO_CHAN_2563(IIO_LIGHT, 0, 1, 0, 0, 0), + IIO_CHAN_2563(IIO_INTENSITY, 1, 0, 0, INFO_MASK, EVENT_MASK), + IIO_CHAN_2563(IIO_INTENSITY, 1, 0, 1, INFO_MASK, 0), }; static int tsl2563_read_thresh(struct iio_dev *indio_dev, -- 2.20.1