Commit 91a8030f authored by Jeffrey Carlyle's avatar Jeffrey Carlyle

greybus: Revert "update UniPro Set Interface Power Mode operation to match spec"

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: default avatarJeffrey Carlyle <jcarlyle@google.com>
Acked-by: default avatarSandeep Patil <sspatil@google.com>
parent 00606367
...@@ -121,23 +121,17 @@ static int gb_camera_set_intf_power_mode(struct gb_camera *gcam, u8 intf_id, ...@@ -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, ret = gb_svc_intf_set_power_mode(svc, intf_id,
GB_SVC_UNIPRO_HS_SERIES_A, GB_SVC_UNIPRO_HS_SERIES_A,
GB_SVC_UNIPRO_FAST_MODE, 2, 2, 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_UNIPRO_FAST_MODE, 2, 2,
GB_SVC_PWRM_RXTERMINATION | GB_SVC_PWRM_RXTERMINATION |
GB_SVC_PWRM_TXTERMINATION, 0, GB_SVC_PWRM_TXTERMINATION, 0);
NULL, NULL);
else else
ret = gb_svc_intf_set_power_mode(svc, intf_id, ret = gb_svc_intf_set_power_mode(svc, intf_id,
GB_SVC_UNIPRO_HS_SERIES_A, GB_SVC_UNIPRO_HS_SERIES_A,
GB_SVC_UNIPRO_SLOW_AUTO_MODE, GB_SVC_UNIPRO_SLOW_AUTO_MODE,
2, 1, 2, 1,
GB_SVC_SMALL_AMPLITUDE,
GB_SVC_NO_DE_EMPHASIS,
GB_SVC_UNIPRO_SLOW_AUTO_MODE, GB_SVC_UNIPRO_SLOW_AUTO_MODE,
2, 1, 2, 1,
0, 0, 0, 0);
NULL, NULL);
return ret; return ret;
} }
......
...@@ -1136,13 +1136,6 @@ struct gb_svc_timesync_ping_response { ...@@ -1136,13 +1136,6 @@ struct gb_svc_timesync_ping_response {
#define GB_SVC_UNIPRO_HIBERNATE_MODE 0x11 #define GB_SVC_UNIPRO_HIBERNATE_MODE 0x11
#define GB_SVC_UNIPRO_OFF_MODE 0x12 #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_RXTERMINATION 0x01
#define GB_SVC_PWRM_TXTERMINATION 0x02 #define GB_SVC_PWRM_TXTERMINATION 0x02
#define GB_SVC_PWRM_LINE_RESET 0x04 #define GB_SVC_PWRM_LINE_RESET 0x04
...@@ -1153,38 +1146,17 @@ struct gb_svc_timesync_ping_response { ...@@ -1153,38 +1146,17 @@ struct gb_svc_timesync_ping_response {
#define GB_SVC_UNIPRO_HS_SERIES_A 0x01 #define GB_SVC_UNIPRO_HS_SERIES_A 0x01
#define GB_SVC_UNIPRO_HS_SERIES_B 0x02 #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 { struct gb_svc_intf_set_pwrm_request {
__u8 intf_id; __u8 intf_id;
__u8 hs_series; __u8 hs_series;
__u8 tx_mode; __u8 tx_mode;
__u8 tx_gear; __u8 tx_gear;
__u8 tx_nlanes; __u8 tx_nlanes;
__u8 tx_amplitude;
__u8 tx_hs_equalizer;
__u8 rx_mode; __u8 rx_mode;
__u8 rx_gear; __u8 rx_gear;
__u8 rx_nlanes; __u8 rx_nlanes;
__u8 flags; __u8 flags;
__le32 quirks; __le32 quirks;
struct gb_svc_l2_timer_cfg local_l2timerdata, remote_l2timerdata;
} __packed; } __packed;
struct gb_svc_intf_set_pwrm_response { struct gb_svc_intf_set_pwrm_response {
......
...@@ -578,33 +578,23 @@ void gb_svc_route_destroy(struct gb_svc *svc, u8 intf1_id, u8 intf2_id) ...@@ -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, 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_mode, u8 tx_gear, u8 tx_nlanes,
u8 tx_amplitude, u8 tx_hs_equalizer,
u8 rx_mode, u8 rx_gear, u8 rx_nlanes, u8 rx_mode, u8 rx_gear, u8 rx_nlanes,
u8 flags, u32 quirks, u8 flags, u32 quirks)
struct gb_svc_l2_timer_cfg *local,
struct gb_svc_l2_timer_cfg *remote)
{ {
struct gb_svc_intf_set_pwrm_request request; struct gb_svc_intf_set_pwrm_request request;
struct gb_svc_intf_set_pwrm_response response; struct gb_svc_intf_set_pwrm_response response;
int ret; int ret;
u16 result_code;
request.intf_id = intf_id; request.intf_id = intf_id;
request.hs_series = hs_series; request.hs_series = hs_series;
request.tx_mode = tx_mode; request.tx_mode = tx_mode;
request.tx_gear = tx_gear; request.tx_gear = tx_gear;
request.tx_nlanes = tx_nlanes; request.tx_nlanes = tx_nlanes;
request.tx_amplitude = tx_amplitude;
request.tx_hs_equalizer = tx_hs_equalizer;
request.rx_mode = rx_mode; request.rx_mode = rx_mode;
request.rx_gear = rx_gear; request.rx_gear = rx_gear;
request.rx_nlanes = rx_nlanes; request.rx_nlanes = rx_nlanes;
request.flags = flags; request.flags = flags;
request.quirks = cpu_to_le32(quirks); 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, ret = gb_operation_sync(svc->connection, GB_SVC_TYPE_INTF_SET_PWRM,
&request, sizeof(request), &request, sizeof(request),
...@@ -612,13 +602,7 @@ int gb_svc_intf_set_power_mode(struct gb_svc *svc, u8 intf_id, u8 hs_series, ...@@ -612,13 +602,7 @@ int gb_svc_intf_set_power_mode(struct gb_svc *svc, u8 intf_id, u8 hs_series,
if (ret < 0) if (ret < 0)
return ret; return ret;
result_code = le16_to_cpu(response.result_code); return 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;
} }
EXPORT_SYMBOL_GPL(gb_svc_intf_set_power_mode); EXPORT_SYMBOL_GPL(gb_svc_intf_set_power_mode);
...@@ -942,11 +926,9 @@ static void gb_svc_process_hello_deferred(struct gb_operation *operation) ...@@ -942,11 +926,9 @@ static void gb_svc_process_hello_deferred(struct gb_operation *operation)
GB_SVC_UNIPRO_HS_SERIES_A, GB_SVC_UNIPRO_HS_SERIES_A,
GB_SVC_UNIPRO_SLOW_AUTO_MODE, GB_SVC_UNIPRO_SLOW_AUTO_MODE,
2, 1, 2, 1,
GB_SVC_SMALL_AMPLITUDE, GB_SVC_NO_DE_EMPHASIS,
GB_SVC_UNIPRO_SLOW_AUTO_MODE, GB_SVC_UNIPRO_SLOW_AUTO_MODE,
2, 1, 2, 1,
0, 0, 0, 0);
NULL, NULL);
if (ret) if (ret)
dev_warn(&svc->dev, dev_warn(&svc->dev,
......
...@@ -77,11 +77,8 @@ int gb_svc_dme_peer_set(struct gb_svc *svc, u8 intf_id, u16 attr, u16 selector, ...@@ -77,11 +77,8 @@ int gb_svc_dme_peer_set(struct gb_svc *svc, u8 intf_id, u16 attr, u16 selector,
u32 value); u32 value);
int gb_svc_intf_set_power_mode(struct gb_svc *svc, u8 intf_id, u8 hs_series, 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_mode, u8 tx_gear, u8 tx_nlanes,
u8 tx_amplitude, u8 tx_hs_equalizer,
u8 rx_mode, u8 rx_gear, u8 rx_nlanes, u8 rx_mode, u8 rx_gear, u8 rx_nlanes,
u8 flags, u32 quirks, u8 flags, u32 quirks);
struct gb_svc_l2_timer_cfg *local,
struct gb_svc_l2_timer_cfg *remote);
int gb_svc_ping(struct gb_svc *svc); int gb_svc_ping(struct gb_svc *svc);
int gb_svc_watchdog_create(struct gb_svc *svc); int gb_svc_watchdog_create(struct gb_svc *svc);
void gb_svc_watchdog_destroy(struct gb_svc *svc); void gb_svc_watchdog_destroy(struct gb_svc *svc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment