greybus: Revert "update UniPro Set Interface Power Mode operation to match spec"
authorJeffrey Carlyle <jcarlyle@google.com>
Wed, 25 May 2016 23:38:47 +0000 (16:38 -0700)
committerJeffrey Carlyle <jcarlyle@google.com>
Thu, 26 May 2016 00:20:34 +0000 (17:20 -0700)
This reverts commit 29fee8c55b59bb6ac59b99a0563c89c514cba42b.

This change and its companion NuttX changes seem to be triggering a
storm of POWERMODEIND switch interrupts on the SVC.

Signed-off-by: Jeffrey Carlyle <jcarlyle@google.com>
Acked-by: Sandeep Patil <sspatil@google.com>
drivers/staging/greybus/camera.c
drivers/staging/greybus/greybus_protocols.h
drivers/staging/greybus/svc.c
drivers/staging/greybus/svc.h

index 654bfcd852a2ab3dc8f6082ccca7403fc8f74d3b..dd482bd94637181aa12a2fbe50facb21771a1ea7 100644 (file)
@@ -121,23 +121,17 @@ static int gb_camera_set_intf_power_mode(struct gb_camera *gcam, u8 intf_id,
                ret = gb_svc_intf_set_power_mode(svc, intf_id,
                                                 GB_SVC_UNIPRO_HS_SERIES_A,
                                                 GB_SVC_UNIPRO_FAST_MODE, 2, 2,
-                                                GB_SVC_SMALL_AMPLITUDE,
-                                                GB_SVC_NO_DE_EMPHASIS,
                                                 GB_SVC_UNIPRO_FAST_MODE, 2, 2,
                                                 GB_SVC_PWRM_RXTERMINATION |
-                                                GB_SVC_PWRM_TXTERMINATION, 0,
-                                                NULL, NULL);
+                                                GB_SVC_PWRM_TXTERMINATION, 0);
        else
                ret = gb_svc_intf_set_power_mode(svc, intf_id,
                                                 GB_SVC_UNIPRO_HS_SERIES_A,
                                                 GB_SVC_UNIPRO_SLOW_AUTO_MODE,
                                                 2, 1,
-                                                GB_SVC_SMALL_AMPLITUDE,
-                                                GB_SVC_NO_DE_EMPHASIS,
                                                 GB_SVC_UNIPRO_SLOW_AUTO_MODE,
                                                 2, 1,
-                                                0, 0,
-                                                NULL, NULL);
+                                                0, 0);
 
        return ret;
 }
index ec3570ab9b26ac986a796c4eb389aa4591a1b4d9..b98f02c93b1a1f81909e4d44025f8091a86edf29 100644 (file)
@@ -1136,13 +1136,6 @@ struct gb_svc_timesync_ping_response {
 #define GB_SVC_UNIPRO_HIBERNATE_MODE           0x11
 #define GB_SVC_UNIPRO_OFF_MODE                 0x12
 
-#define GB_SVC_SMALL_AMPLITUDE          0x01
-#define GB_SVC_LARGE_AMPLITUDE          0x02
-
-#define GB_SVC_NO_DE_EMPHASIS           0x00
-#define GB_SVC_SMALL_DE_EMPHASIS        0x01
-#define GB_SVC_LARGE_DE_EMPHASIS        0x02
-
 #define GB_SVC_PWRM_RXTERMINATION              0x01
 #define GB_SVC_PWRM_TXTERMINATION              0x02
 #define GB_SVC_PWRM_LINE_RESET                 0x04
@@ -1153,38 +1146,17 @@ struct gb_svc_timesync_ping_response {
 #define GB_SVC_UNIPRO_HS_SERIES_A              0x01
 #define GB_SVC_UNIPRO_HS_SERIES_B              0x02
 
-#define GB_SVC_SETPWRM_PWR_OK           0x00
-#define GB_SVC_SETPWRM_PWR_LOCAL        0x01
-#define GB_SVC_SETPWRM_PWR_REMOTE       0x02
-#define GB_SVC_SETPWRM_PWR_BUSY         0x03
-#define GB_SVC_SETPWRM_PWR_ERROR_CAP    0x04
-#define GB_SVC_SETPWRM_PWR_FATAL_ERROR  0x05
-
-struct gb_svc_l2_timer_cfg {
-       __le16 tsb_fc0_protection_timeout;
-       __le16 tsb_tc0_replay_timeout;
-       __le16 tsb_afc0_req_timeout;
-       __le16 tsb_fc1_protection_timeout;
-       __le16 tsb_tc1_replay_timeout;
-       __le16 tsb_afc1_req_timeout;
-       __le16 reserved_for_tc2[3];
-       __le16 reserved_for_tc3[3];
-} __packed;
-
 struct gb_svc_intf_set_pwrm_request {
        __u8    intf_id;
        __u8    hs_series;
        __u8    tx_mode;
        __u8    tx_gear;
        __u8    tx_nlanes;
-       __u8    tx_amplitude;
-       __u8    tx_hs_equalizer;
        __u8    rx_mode;
        __u8    rx_gear;
        __u8    rx_nlanes;
        __u8    flags;
        __le32  quirks;
-       struct gb_svc_l2_timer_cfg local_l2timerdata, remote_l2timerdata;
 } __packed;
 
 struct gb_svc_intf_set_pwrm_response {
index 90094cf1a5eb040555cea617c674ceeee1429f1f..78cc0e38828d5bfeb00b823cd2ea352bfbf81231 100644 (file)
@@ -578,33 +578,23 @@ void gb_svc_route_destroy(struct gb_svc *svc, u8 intf1_id, u8 intf2_id)
 
 int gb_svc_intf_set_power_mode(struct gb_svc *svc, u8 intf_id, u8 hs_series,
                               u8 tx_mode, u8 tx_gear, u8 tx_nlanes,
-                              u8 tx_amplitude, u8 tx_hs_equalizer,
                               u8 rx_mode, u8 rx_gear, u8 rx_nlanes,
-                              u8 flags, u32 quirks,
-                              struct gb_svc_l2_timer_cfg *local,
-                              struct gb_svc_l2_timer_cfg *remote)
+                              u8 flags, u32 quirks)
 {
        struct gb_svc_intf_set_pwrm_request request;
        struct gb_svc_intf_set_pwrm_response response;
        int ret;
-       u16 result_code;
 
        request.intf_id = intf_id;
        request.hs_series = hs_series;
        request.tx_mode = tx_mode;
        request.tx_gear = tx_gear;
        request.tx_nlanes = tx_nlanes;
-       request.tx_amplitude = tx_amplitude;
-       request.tx_hs_equalizer = tx_hs_equalizer;
        request.rx_mode = rx_mode;
        request.rx_gear = rx_gear;
        request.rx_nlanes = rx_nlanes;
        request.flags = flags;
        request.quirks = cpu_to_le32(quirks);
-       if (local)
-               request.local_l2timerdata = *local;
-       if (remote)
-               request.remote_l2timerdata = *remote;
 
        ret = gb_operation_sync(svc->connection, GB_SVC_TYPE_INTF_SET_PWRM,
                                &request, sizeof(request),
@@ -612,13 +602,7 @@ int gb_svc_intf_set_power_mode(struct gb_svc *svc, u8 intf_id, u8 hs_series,
        if (ret < 0)
                return ret;
 
-       result_code = le16_to_cpu(response.result_code);
-       if (result_code != GB_SVC_SETPWRM_PWR_LOCAL) {
-               dev_err(&svc->dev, "set power mode = %d\n", result_code);
-               return -EIO;
-       }
-
-       return 0;
+       return le16_to_cpu(response.result_code);
 }
 EXPORT_SYMBOL_GPL(gb_svc_intf_set_power_mode);
 
@@ -942,11 +926,9 @@ static void gb_svc_process_hello_deferred(struct gb_operation *operation)
                                        GB_SVC_UNIPRO_HS_SERIES_A,
                                        GB_SVC_UNIPRO_SLOW_AUTO_MODE,
                                        2, 1,
-                                       GB_SVC_SMALL_AMPLITUDE, GB_SVC_NO_DE_EMPHASIS,
                                        GB_SVC_UNIPRO_SLOW_AUTO_MODE,
                                        2, 1,
-                                       0, 0,
-                                       NULL, NULL);
+                                       0, 0);
 
        if (ret)
                dev_warn(&svc->dev,
index 438806d37947b724cb52652b59694ab635503552..e3e0aa14b08da5ef0759ba8027f2d2cec44ffe7d 100644 (file)
@@ -77,11 +77,8 @@ int gb_svc_dme_peer_set(struct gb_svc *svc, u8 intf_id, u16 attr, u16 selector,
                        u32 value);
 int gb_svc_intf_set_power_mode(struct gb_svc *svc, u8 intf_id, u8 hs_series,
                               u8 tx_mode, u8 tx_gear, u8 tx_nlanes,
-                              u8 tx_amplitude, u8 tx_hs_equalizer,
                               u8 rx_mode, u8 rx_gear, u8 rx_nlanes,
-                              u8 flags, u32 quirks,
-                              struct gb_svc_l2_timer_cfg *local,
-                              struct gb_svc_l2_timer_cfg *remote);
+                              u8 flags, u32 quirks);
 int gb_svc_ping(struct gb_svc *svc);
 int gb_svc_watchdog_create(struct gb_svc *svc);
 void gb_svc_watchdog_destroy(struct gb_svc *svc);