Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 249778
b: refs/heads/master
c: ce298d4
h: refs/heads/master
v: v3
  • Loading branch information
Jonathan Cameron authored and Greg Kroah-Hartman committed May 19, 2011
1 parent 53424b8 commit 1a5784e
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 42 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: bdab1001738f4ebf8df21bab8c9da79bd5dd3362
refs/heads/master: ce298d403167169ddf965ceb9645fd831065f65b
53 changes: 16 additions & 37 deletions trunk/drivers/staging/iio/dac/ad5504.c
Original file line number Diff line number Diff line change
Expand Up @@ -261,35 +261,18 @@ static struct attribute_group ad5504_ev_attribute_group = {
.attrs = ad5504_ev_attributes,
};

static void ad5504_interrupt_bh(struct work_struct *work_s)
static irqreturn_t ad5504_event_handler(int irq, void *private)
{
struct ad5504_state *st = container_of(work_s,
struct ad5504_state, work_alarm);

iio_push_event(st->indio_dev, 0,
IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_TEMP,
0,
IIO_EV_TYPE_THRESH,
IIO_EV_DIR_RISING),
st->last_timestamp);

enable_irq(st->spi->irq);
}

static int ad5504_interrupt(struct iio_dev *dev_info,
int index,
s64 timestamp,
int no_test)
{
struct ad5504_state *st = dev_info->dev_data;

st->last_timestamp = timestamp;
schedule_work(&st->work_alarm);
return 0;
iio_push_event(private, 0,
IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_TEMP,
0,
IIO_EV_TYPE_THRESH,
IIO_EV_DIR_RISING),
iio_get_time_ns());

return IRQ_HANDLED;
}

IIO_EVENT_SH(ad5504, &ad5504_interrupt);

static int __devinit ad5504_probe(struct spi_device *spi)
{
struct ad5504_platform_data *pdata = spi->dev.platform_data;
Expand Down Expand Up @@ -342,18 +325,14 @@ static int __devinit ad5504_probe(struct spi_device *spi)
goto error_free_dev;

if (spi->irq) {
INIT_WORK(&st->work_alarm, ad5504_interrupt_bh);

ret = iio_register_interrupt_line(spi->irq,
st->indio_dev,
0,
IRQF_TRIGGER_FALLING,
spi_get_device_id(st->spi)->name);
ret = request_threaded_irq(spi->irq,
NULL,
&ad5504_event_handler,
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
spi_get_device_id(st->spi)->name,
st->indio_dev);
if (ret)
goto error_unreg_iio_device;

iio_add_event_to_list(&iio_event_ad5504,
&st->indio_dev->interrupts[0]->ev_list);
}

return 0;
Expand All @@ -379,7 +358,7 @@ static int __devexit ad5504_remove(struct spi_device *spi)
struct ad5504_state *st = spi_get_drvdata(spi);

if (spi->irq)
iio_unregister_interrupt_line(st->indio_dev, 0);
free_irq(spi->irq, st->indio_dev);

iio_device_unregister(st->indio_dev);

Expand Down
4 changes: 0 additions & 4 deletions trunk/drivers/staging/iio/dac/ad5504.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ struct ad5504_platform_data {
* @us: spi_device
* @reg: supply regulator
* @vref_mv: actual reference voltage used
* @work_alarm: bh work structure for event handling
* @last_timestamp: timestamp of last event interrupt
* @pwr_down_mask power down mask
* @pwr_down_mode current power down mode
*/
Expand All @@ -56,8 +54,6 @@ struct ad5504_state {
struct spi_device *spi;
struct regulator *reg;
unsigned short vref_mv;
struct work_struct work_alarm;
s64 last_timestamp;
unsigned pwr_down_mask;
unsigned pwr_down_mode;
};
Expand Down

0 comments on commit 1a5784e

Please sign in to comment.