Signed-off-by: Aaron Wu <[email protected]>

Remove Blackfin iio trigger timer support
---
 drivers/staging/iio/Kconfig                       |   1 -
 drivers/staging/iio/Makefile                      |   1 -
 drivers/staging/iio/trigger/Kconfig               |  19 --
 drivers/staging/iio/trigger/Makefile              |   5 -
 drivers/staging/iio/trigger/iio-trig-bfin-timer.c | 292 ----------------------
 drivers/staging/iio/trigger/iio-trig-bfin-timer.h |  25 --
 6 files changed, 343 deletions(-)
 delete mode 100644 drivers/staging/iio/trigger/Kconfig
 delete mode 100644 drivers/staging/iio/trigger/Makefile
 delete mode 100644 drivers/staging/iio/trigger/iio-trig-bfin-timer.c
 delete mode 100644 drivers/staging/iio/trigger/iio-trig-bfin-timer.h

diff --git a/drivers/staging/iio/Kconfig b/drivers/staging/iio/Kconfig
index 8abc1ab..bd94459 100644
--- a/drivers/staging/iio/Kconfig
+++ b/drivers/staging/iio/Kconfig
@@ -14,6 +14,5 @@ source "drivers/staging/iio/impedance-analyzer/Kconfig"
 source "drivers/staging/iio/light/Kconfig"
 source "drivers/staging/iio/meter/Kconfig"
 source "drivers/staging/iio/resolver/Kconfig"
-source "drivers/staging/iio/trigger/Kconfig"
 
 endmenu
diff --git a/drivers/staging/iio/Makefile b/drivers/staging/iio/Makefile
index 455bffc..e99a375 100644
--- a/drivers/staging/iio/Makefile
+++ b/drivers/staging/iio/Makefile
@@ -13,4 +13,3 @@ obj-y += impedance-analyzer/
 obj-y += light/
 obj-y += meter/
 obj-y += resolver/
-obj-y += trigger/
diff --git a/drivers/staging/iio/trigger/Kconfig 
b/drivers/staging/iio/trigger/Kconfig
deleted file mode 100644
index 0b01d24..0000000
--- a/drivers/staging/iio/trigger/Kconfig
+++ /dev/null
@@ -1,19 +0,0 @@
-  #
-# Industrial I/O standalone triggers
-#
-comment "Triggers - standalone"
-
-if IIO_TRIGGER
-
-config IIO_BFIN_TMR_TRIGGER
-       tristate "Blackfin TIMER trigger"
-       depends on BLACKFIN
-       select BFIN_GPTIMERS
-       help
-         Provides support for using a Blackfin timer as IIO triggers.
-         If unsure, say N (but it's safe to say "Y").
-
-         To compile this driver as a module, choose M here: the
-         module will be called iio-trig-bfin-timer.
-
-endif # IIO_TRIGGER
diff --git a/drivers/staging/iio/trigger/Makefile 
b/drivers/staging/iio/trigger/Makefile
deleted file mode 100644
index 1300a21..0000000
--- a/drivers/staging/iio/trigger/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for triggers not associated with iio-devices
-#
-
-obj-$(CONFIG_IIO_BFIN_TMR_TRIGGER) += iio-trig-bfin-timer.o
diff --git a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c 
b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
deleted file mode 100644
index 71f11d7..0000000
--- a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright 2011 Analog Devices Inc.
- *
- * Licensed under the GPL-2.
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/slab.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/delay.h>
-
-#include <asm/gptimers.h>
-#include <asm/portmux.h>
-
-#include <linux/iio/iio.h>
-#include <linux/iio/trigger.h>
-
-#include "iio-trig-bfin-timer.h"
-
-struct bfin_timer {
-       unsigned short id, bit;
-       unsigned long irqbit;
-       int irq;
-       int pin;
-};
-
-/*
- * this covers all hardware timer configurations on
- * all Blackfin derivatives out there today
- */
-
-static struct bfin_timer iio_bfin_timer_code[MAX_BLACKFIN_GPTIMERS] = {
-       {TIMER0_id,  TIMER0bit,  TIMER_STATUS_TIMIL0,  IRQ_TIMER0, P_TMR0},
-       {TIMER1_id,  TIMER1bit,  TIMER_STATUS_TIMIL1,  IRQ_TIMER1, P_TMR1},
-       {TIMER2_id,  TIMER2bit,  TIMER_STATUS_TIMIL2,  IRQ_TIMER2, P_TMR2},
-#if (MAX_BLACKFIN_GPTIMERS > 3)
-       {TIMER3_id,  TIMER3bit,  TIMER_STATUS_TIMIL3,  IRQ_TIMER3, P_TMR3},
-       {TIMER4_id,  TIMER4bit,  TIMER_STATUS_TIMIL4,  IRQ_TIMER4, P_TMR4},
-       {TIMER5_id,  TIMER5bit,  TIMER_STATUS_TIMIL5,  IRQ_TIMER5, P_TMR5},
-       {TIMER6_id,  TIMER6bit,  TIMER_STATUS_TIMIL6,  IRQ_TIMER6, P_TMR6},
-       {TIMER7_id,  TIMER7bit,  TIMER_STATUS_TIMIL7,  IRQ_TIMER7, P_TMR7},
-#endif
-#if (MAX_BLACKFIN_GPTIMERS > 8)
-       {TIMER8_id,  TIMER8bit,  TIMER_STATUS_TIMIL8,  IRQ_TIMER8, P_TMR8},
-       {TIMER9_id,  TIMER9bit,  TIMER_STATUS_TIMIL9,  IRQ_TIMER9, P_TMR9},
-       {TIMER10_id, TIMER10bit, TIMER_STATUS_TIMIL10, IRQ_TIMER10, P_TMR10},
-#if (MAX_BLACKFIN_GPTIMERS > 11)
-       {TIMER11_id, TIMER11bit, TIMER_STATUS_TIMIL11, IRQ_TIMER11, P_TMR11},
-#endif
-#endif
-};
-
-struct bfin_tmr_state {
-       struct iio_trigger      *trig;
-       struct bfin_timer       *t;
-       unsigned int            timer_num;
-       bool                    output_enable;
-       unsigned int            duty;
-       int                     irq;
-};
-
-static int iio_bfin_tmr_set_state(struct iio_trigger *trig, bool state)
-{
-       struct bfin_tmr_state *st = iio_trigger_get_drvdata(trig);
-
-       if (get_gptimer_period(st->t->id) == 0)
-               return -EINVAL;
-
-       if (state)
-               enable_gptimers(st->t->bit);
-       else
-               disable_gptimers(st->t->bit);
-
-       return 0;
-}
-
-static ssize_t frequency_store(struct device *dev,
-                              struct device_attribute *attr,
-                              const char *buf, size_t count)
-{
-       struct iio_trigger *trig = to_iio_trigger(dev);
-       struct bfin_tmr_state *st = iio_trigger_get_drvdata(trig);
-       unsigned int val;
-       bool enabled;
-       int ret;
-
-       ret = kstrtouint(buf, 10, &val);
-       if (ret)
-               return ret;
-
-       if (val > 100000)
-               return -EINVAL;
-
-       enabled = get_enabled_gptimers() & st->t->bit;
-
-       if (enabled)
-               disable_gptimers(st->t->bit);
-
-       if (!val)
-               return count;
-
-       val = get_sclk() / val;
-       if (val <= 4 || val <= st->duty)
-               return -EINVAL;
-
-       set_gptimer_period(st->t->id, val);
-       set_gptimer_pwidth(st->t->id, val - st->duty);
-
-       if (enabled)
-               enable_gptimers(st->t->bit);
-
-       return count;
-}
-
-static ssize_t frequency_show(struct device *dev,
-                             struct device_attribute *attr,
-                             char *buf)
-{
-       struct iio_trigger *trig = to_iio_trigger(dev);
-       struct bfin_tmr_state *st = iio_trigger_get_drvdata(trig);
-       unsigned int period = get_gptimer_period(st->t->id);
-       unsigned long val;
-
-       if (!period)
-               val = 0;
-       else
-               val = get_sclk() / get_gptimer_period(st->t->id);
-
-       return sprintf(buf, "%lu\n", val);
-}
-
-static DEVICE_ATTR_RW(frequency);
-
-static struct attribute *iio_bfin_tmr_trigger_attrs[] = {
-       &dev_attr_frequency.attr,
-       NULL,
-};
-
-static const struct attribute_group iio_bfin_tmr_trigger_attr_group = {
-       .attrs = iio_bfin_tmr_trigger_attrs,
-};
-
-static const struct attribute_group *iio_bfin_tmr_trigger_attr_groups[] = {
-       &iio_bfin_tmr_trigger_attr_group,
-       NULL
-};
-
-static irqreturn_t iio_bfin_tmr_trigger_isr(int irq, void *devid)
-{
-       struct bfin_tmr_state *st = devid;
-
-       clear_gptimer_intr(st->t->id);
-       iio_trigger_poll(st->trig);
-
-       return IRQ_HANDLED;
-}
-
-static int iio_bfin_tmr_get_number(int irq)
-{
-       int i;
-
-       for (i = 0; i < MAX_BLACKFIN_GPTIMERS; i++)
-               if (iio_bfin_timer_code[i].irq == irq)
-                       return i;
-
-       return -ENODEV;
-}
-
-static const struct iio_trigger_ops iio_bfin_tmr_trigger_ops = {
-       .set_trigger_state = iio_bfin_tmr_set_state,
-};
-
-static int iio_bfin_tmr_trigger_probe(struct platform_device *pdev)
-{
-       struct iio_bfin_timer_trigger_pdata *pdata;
-       struct bfin_tmr_state *st;
-       unsigned int config;
-       int ret;
-
-       st = devm_kzalloc(&pdev->dev, sizeof(*st), GFP_KERNEL);
-       if (!st)
-               return -ENOMEM;
-
-       st->irq = platform_get_irq(pdev, 0);
-       if (st->irq < 0) {
-               dev_err(&pdev->dev, "No IRQs specified");
-               return st->irq;
-       }
-
-       ret = iio_bfin_tmr_get_number(st->irq);
-       if (ret < 0)
-               return ret;
-
-       st->timer_num = ret;
-       st->t = &iio_bfin_timer_code[st->timer_num];
-
-       st->trig = iio_trigger_alloc("bfintmr%d", st->timer_num);
-       if (!st->trig)
-               return -ENOMEM;
-
-       st->trig->ops = &iio_bfin_tmr_trigger_ops;
-       st->trig->dev.groups = iio_bfin_tmr_trigger_attr_groups;
-       iio_trigger_set_drvdata(st->trig, st);
-       ret = iio_trigger_register(st->trig);
-       if (ret)
-               goto out;
-
-       ret = request_irq(st->irq, iio_bfin_tmr_trigger_isr,
-                         0, st->trig->name, st);
-       if (ret) {
-               dev_err(&pdev->dev,
-                       "request IRQ-%d failed", st->irq);
-               goto out1;
-       }
-
-       config = PWM_OUT | PERIOD_CNT | IRQ_ENA;
-
-       pdata = dev_get_platdata(&pdev->dev);
-       if (pdata && pdata->output_enable) {
-               unsigned long long val;
-
-               st->output_enable = true;
-
-               ret = peripheral_request(st->t->pin, st->trig->name);
-               if (ret)
-                       goto out_free_irq;
-
-               val = (unsigned long long)get_sclk() * pdata->duty_ns;
-               do_div(val, NSEC_PER_SEC);
-               st->duty = val;
-
-               /**
-                * The interrupt will be generated at the end of the period,
-                * since we want the interrupt to be generated at end of the
-                * pulse we invert both polarity and duty cycle, so that the
-                * pulse will be generated directly before the interrupt.
-                */
-               if (pdata->active_low)
-                       config |= PULSE_HI;
-       } else {
-               st->duty = 1;
-               config |= OUT_DIS;
-       }
-
-       set_gptimer_config(st->t->id, config);
-
-       dev_info(&pdev->dev, "iio trigger Blackfin TMR%d, IRQ-%d",
-                st->timer_num, st->irq);
-       platform_set_drvdata(pdev, st);
-
-       return 0;
-out_free_irq:
-       free_irq(st->irq, st);
-out1:
-       iio_trigger_unregister(st->trig);
-out:
-       iio_trigger_free(st->trig);
-       return ret;
-}
-
-static int iio_bfin_tmr_trigger_remove(struct platform_device *pdev)
-{
-       struct bfin_tmr_state *st = platform_get_drvdata(pdev);
-
-       disable_gptimers(st->t->bit);
-       if (st->output_enable)
-               peripheral_free(st->t->pin);
-       free_irq(st->irq, st);
-       iio_trigger_unregister(st->trig);
-       iio_trigger_free(st->trig);
-
-       return 0;
-}
-
-static struct platform_driver iio_bfin_tmr_trigger_driver = {
-       .driver = {
-               .name = "iio_bfin_tmr_trigger",
-       },
-       .probe = iio_bfin_tmr_trigger_probe,
-       .remove = iio_bfin_tmr_trigger_remove,
-};
-
-module_platform_driver(iio_bfin_tmr_trigger_driver);
-
-MODULE_AUTHOR("Michael Hennerich <[email protected]>");
-MODULE_DESCRIPTION("Blackfin system timer based trigger for the iio 
subsystem");
-MODULE_LICENSE("GPL v2");
-MODULE_ALIAS("platform:iio-trig-bfin-timer");
diff --git a/drivers/staging/iio/trigger/iio-trig-bfin-timer.h 
b/drivers/staging/iio/trigger/iio-trig-bfin-timer.h
deleted file mode 100644
index fb05a2a..0000000
--- a/drivers/staging/iio/trigger/iio-trig-bfin-timer.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __IIO_BFIN_TIMER_TRIGGER_H__
-#define __IIO_BFIN_TIMER_TRIGGER_H__
-
-/**
- * struct iio_bfin_timer_trigger_pdata - timer trigger platform data
- * @output_enable: Enable external trigger pulse generation.
- * @active_low: Whether the trigger pulse is active low.
- * @duty_ns: Length of the trigger pulse in nanoseconds.
- *
- * This struct is used to configure the output pulse generation of the blackfin
- * timer trigger. If output_enable is set to true an external trigger signal
- * will generated on the pin corresponding to the timer. This is useful for
- * converters which needs an external signal to start conversion. active_low 
and
- * duty_ns are used to configure the type of the trigger pulse. If 
output_enable
- * is set to false no external trigger pulse will be generated and active_low
- * and duty_ns are ignored.
- **/
-struct iio_bfin_timer_trigger_pdata {
-       bool output_enable;
-       bool active_low;
-       unsigned int duty_ns;
-};
-
-#endif
-- 
2.7.4

Reply via email to