OSDN Git Service

staging: greybus: arche: remove timesync remains
authorJohan Hovold <johan@kernel.org>
Tue, 16 May 2017 08:01:38 +0000 (10:01 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 16 May 2017 11:39:16 +0000 (13:39 +0200)
Remove the remaining timesync bits that were left in the arche platform
driver and which prevented the driver from being compiled.

Fixes: bdfb95c4baab ("staging: greybus: remove timesync protocol support")
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/greybus/arche-apb-ctrl.c
drivers/staging/greybus/arche-platform.c
drivers/staging/greybus/arche_platform.h

index 02243b4..0412f3d 100644 (file)
@@ -22,6 +22,8 @@
 #include "arche_platform.h"
 
 
+static void apb_bootret_deassert(struct device *dev);
+
 struct arche_apb_ctrl_drvdata {
        /* Control GPIO signals to and from AP <=> AP Bridges */
        int resetn_gpio;
@@ -222,14 +224,7 @@ static void poweroff_seq(struct platform_device *pdev)
        /* TODO: May have to send an event to SVC about this exit */
 }
 
-void apb_bootret_assert(struct device *dev)
-{
-       struct arche_apb_ctrl_drvdata *apb = dev_get_drvdata(dev);
-
-       gpio_set_value(apb->boot_ret_gpio, 1);
-}
-
-void apb_bootret_deassert(struct device *dev)
+static void apb_bootret_deassert(struct device *dev)
 {
        struct arche_apb_ctrl_drvdata *apb = dev_get_drvdata(dev);
 
index aac1145..9e644bf 100644 (file)
@@ -35,7 +35,6 @@ enum svc_wakedetect_state {
        WD_STATE_STANDBYBOOT_TRIG,      /* As of now not used ?? */
        WD_STATE_COLDBOOT_START,        /* Cold boot process started */
        WD_STATE_STANDBYBOOT_START,     /* Not used */
-       WD_STATE_TIMESYNC,
 };
 
 struct arche_platform_drvdata {
@@ -59,26 +58,12 @@ struct arche_platform_drvdata {
        int wake_detect_irq;
        spinlock_t wake_lock;                   /* Protect wake_detect_state */
        struct mutex platform_state_mutex;      /* Protect state */
-       wait_queue_head_t wq;                   /* WQ for arche_pdata->state */
        unsigned long wake_detect_start;
        struct notifier_block pm_notifier;
 
        struct device *dev;
-       struct gb_timesync_svc *timesync_svc_pdata;
 };
 
-static int arche_apb_bootret_assert(struct device *dev, void *data)
-{
-       apb_bootret_assert(dev);
-       return 0;
-}
-
-static int arche_apb_bootret_deassert(struct device *dev, void *data)
-{
-       apb_bootret_deassert(dev);
-       return 0;
-}
-
 /* Requires calling context to hold arche_pdata->platform_state_mutex */
 static void arche_platform_set_state(struct arche_platform_drvdata *arche_pdata,
                                     enum arche_platform_state state)
@@ -86,112 +71,6 @@ static void arche_platform_set_state(struct arche_platform_drvdata *arche_pdata,
        arche_pdata->state = state;
 }
 
-/*
- * arche_platform_change_state: Change the operational state
- *
- * This exported function allows external drivers to change the state
- * of the arche-platform driver.
- * Note that this function only supports transitions between two states
- * with limited functionality.
- *
- *  - ARCHE_PLATFORM_STATE_TIME_SYNC:
- *    Once set, allows timesync operations between SVC <=> AP and makes
- *    sure that arche-platform driver ignores any subsequent events/pulses
- *    from SVC over wake/detect.
- *
- *  - ARCHE_PLATFORM_STATE_ACTIVE:
- *    Puts back driver to active state, where any pulse from SVC on wake/detect
- *    line would trigger either cold/standby boot.
- *    Note: Transition request from this function does not trigger cold/standby
- *          boot. It just puts back driver book keeping variable back to ACTIVE
- *          state and restores the interrupt.
- *
- * Returns -ENODEV if device not found, -EAGAIN if the driver cannot currently
- * satisfy the requested state-transition or -EINVAL for all other
- * state-transition requests.
- */
-int arche_platform_change_state(enum arche_platform_state state,
-                               struct gb_timesync_svc *timesync_svc_pdata)
-{
-       struct arche_platform_drvdata *arche_pdata;
-       struct platform_device *pdev;
-       struct device_node *np;
-       int ret = -EAGAIN;
-       unsigned long flags;
-
-       np = of_find_compatible_node(NULL, NULL, "google,arche-platform");
-       if (!np) {
-               pr_err("google,arche-platform device node not found\n");
-               return -ENODEV;
-       }
-
-       pdev = of_find_device_by_node(np);
-       if (!pdev) {
-               pr_err("arche-platform device not found\n");
-               of_node_put(np);
-               return -ENODEV;
-       }
-
-       arche_pdata = platform_get_drvdata(pdev);
-
-       mutex_lock(&arche_pdata->platform_state_mutex);
-       spin_lock_irqsave(&arche_pdata->wake_lock, flags);
-
-       if (arche_pdata->state == state) {
-               ret = 0;
-               goto exit;
-       }
-
-       switch (state) {
-       case ARCHE_PLATFORM_STATE_TIME_SYNC:
-               if (arche_pdata->state != ARCHE_PLATFORM_STATE_ACTIVE) {
-                       ret = -EINVAL;
-                       goto exit;
-               }
-               if (arche_pdata->wake_detect_state != WD_STATE_IDLE) {
-                       dev_err(arche_pdata->dev,
-                               "driver busy with wake/detect line ops\n");
-                       goto  exit;
-               }
-               device_for_each_child(arche_pdata->dev, NULL,
-                                     arche_apb_bootret_assert);
-               arche_pdata->wake_detect_state = WD_STATE_TIMESYNC;
-               break;
-       case ARCHE_PLATFORM_STATE_ACTIVE:
-               if (arche_pdata->state != ARCHE_PLATFORM_STATE_TIME_SYNC) {
-                       ret = -EINVAL;
-                       goto exit;
-               }
-               device_for_each_child(arche_pdata->dev, NULL,
-                                     arche_apb_bootret_deassert);
-               arche_pdata->wake_detect_state = WD_STATE_IDLE;
-               break;
-       case ARCHE_PLATFORM_STATE_OFF:
-       case ARCHE_PLATFORM_STATE_STANDBY:
-       case ARCHE_PLATFORM_STATE_FW_FLASHING:
-               dev_err(arche_pdata->dev, "busy, request to retry later\n");
-               goto exit;
-       default:
-               ret = -EINVAL;
-               dev_err(arche_pdata->dev,
-                       "invalid state transition request\n");
-               goto exit;
-       }
-       arche_pdata->timesync_svc_pdata = timesync_svc_pdata;
-       arche_platform_set_state(arche_pdata, state);
-       if (state == ARCHE_PLATFORM_STATE_ACTIVE)
-               wake_up(&arche_pdata->wq);
-
-       ret = 0;
-exit:
-       spin_unlock_irqrestore(&arche_pdata->wake_lock, flags);
-       mutex_unlock(&arche_pdata->platform_state_mutex);
-       put_device(&pdev->dev);
-       of_node_put(np);
-       return ret;
-}
-EXPORT_SYMBOL_GPL(arche_platform_change_state);
-
 /* Requires arche_pdata->wake_lock is held by calling context */
 static void arche_platform_set_wake_detect_state(
                                struct arche_platform_drvdata *arche_pdata,
@@ -275,11 +154,6 @@ static irqreturn_t arche_platform_wd_irq(int irq, void *devid)
 
        spin_lock_irqsave(&arche_pdata->wake_lock, flags);
 
-       if (arche_pdata->wake_detect_state == WD_STATE_TIMESYNC) {
-               gb_timesync_irq(arche_pdata->timesync_svc_pdata);
-               goto exit;
-       }
-
        if (gpio_get_value(arche_pdata->wake_detect_gpio)) {
                /* wake/detect rising */
 
@@ -323,7 +197,6 @@ static irqreturn_t arche_platform_wd_irq(int irq, void *devid)
                }
        }
 
-exit:
        spin_unlock_irqrestore(&arche_pdata->wake_lock, flags);
 
        return IRQ_HANDLED;
@@ -436,17 +309,7 @@ static ssize_t state_store(struct device *dev,
        struct arche_platform_drvdata *arche_pdata = platform_get_drvdata(pdev);
        int ret = 0;
 
-retry:
        mutex_lock(&arche_pdata->platform_state_mutex);
-       if (arche_pdata->state == ARCHE_PLATFORM_STATE_TIME_SYNC) {
-               mutex_unlock(&arche_pdata->platform_state_mutex);
-               ret = wait_event_interruptible(
-                       arche_pdata->wq,
-                       arche_pdata->state != ARCHE_PLATFORM_STATE_TIME_SYNC);
-               if (ret)
-                       return ret;
-               goto retry;
-       }
 
        if (sysfs_streq(buf, "off")) {
                if (arche_pdata->state == ARCHE_PLATFORM_STATE_OFF)
@@ -517,8 +380,6 @@ static ssize_t state_show(struct device *dev,
                return sprintf(buf, "standby\n");
        case ARCHE_PLATFORM_STATE_FW_FLASHING:
                return sprintf(buf, "fw_flashing\n");
-       case ARCHE_PLATFORM_STATE_TIME_SYNC:
-               return sprintf(buf, "time_sync\n");
        default:
                return sprintf(buf, "unknown state\n");
        }
@@ -665,7 +526,6 @@ static int arche_platform_probe(struct platform_device *pdev)
 
        spin_lock_init(&arche_pdata->wake_lock);
        mutex_init(&arche_pdata->platform_state_mutex);
-       init_waitqueue_head(&arche_pdata->wq);
        arche_pdata->wake_detect_irq =
                gpio_to_irq(arche_pdata->wake_detect_gpio);
 
@@ -701,9 +561,6 @@ static int arche_platform_probe(struct platform_device *pdev)
                goto err_device_remove;
        }
 
-       /* Register callback pointer */
-       arche_platform_change_state_cb = arche_platform_change_state;
-
        /* Explicitly power off if requested */
        if (!of_property_read_bool(pdev->dev.of_node, "arche,init-off")) {
                mutex_lock(&arche_pdata->platform_state_mutex);
index c0591df..bcffc69 100644 (file)
@@ -15,14 +15,8 @@ enum arche_platform_state {
        ARCHE_PLATFORM_STATE_ACTIVE,
        ARCHE_PLATFORM_STATE_STANDBY,
        ARCHE_PLATFORM_STATE_FW_FLASHING,
-       ARCHE_PLATFORM_STATE_TIME_SYNC,
 };
 
-int arche_platform_change_state(enum arche_platform_state state,
-                               struct gb_timesync_svc *pdata);
-
-extern int (*arche_platform_change_state_cb)(enum arche_platform_state state,
-                                            struct gb_timesync_svc *pdata);
 int __init arche_apb_init(void);
 void __exit arche_apb_exit(void);
 
@@ -31,7 +25,5 @@ int apb_ctrl_coldboot(struct device *dev);
 int apb_ctrl_fw_flashing(struct device *dev);
 int apb_ctrl_standby_boot(struct device *dev);
 void apb_ctrl_poweroff(struct device *dev);
-void apb_bootret_assert(struct device *dev);
-void apb_bootret_deassert(struct device *dev);
 
 #endif /* __ARCHE_PLATFORM_H */