diff --git a/drivers/platform/msm/usb_bam.c b/drivers/platform/msm/usb_bam.c
index 8d8e33331ca723ffd98ab10b135d3bb5aafb7442..345c26e9c92c92a609c62820e4fecc4d5ca484ce 100644
--- a/drivers/platform/msm/usb_bam.c
+++ b/drivers/platform/msm/usb_bam.c
@@ -102,46 +102,46 @@ struct usb_bam_ctx_type {
};
static char *bam_enable_strings[MAX_BAMS] = {
- [SSUSB_BAM] = "ssusb",
- [HSUSB_BAM] = "hsusb",
- [HSIC_BAM] = "hsic",
+ [DWC3_CTRL] = "ssusb",
+ [CI_CTRL] = "hsusb",
+ [HSIC_CTRL] = "hsic",
};
struct ipa_rm_bam {
- enum usb_bam bam;
+ enum usb_ctrl bam;
char *str;
bool initialized;
};
static struct ipa_rm_bam ipa_rm_bams[] = {
{
- .bam = SSUSB_BAM,
+ .bam = DWC3_CTRL,
.initialized = false
},
{
- .bam = HSUSB_BAM,
+ .bam = CI_CTRL,
.initialized = false
},
{
- .bam = HSIC_BAM,
+ .bam = HSIC_CTRL,
.initialized = false
}
};
/*
- * HSUSB_BAM & SSUSB_BAM shouldn't be used simultaneously
+ * CI_CTRL & DWC3_CTRL shouldn't be used simultaneously
* since both share the same prod & cons rm resourses
*/
static enum ipa_client_type ipa_rm_resource_prod[MAX_BAMS] = {
- [HSUSB_BAM] = IPA_RM_RESOURCE_USB_PROD,
- [HSIC_BAM] = IPA_RM_RESOURCE_HSIC_PROD,
- [SSUSB_BAM] = IPA_RM_RESOURCE_USB_PROD,
+ [CI_CTRL] = IPA_RM_RESOURCE_USB_PROD,
+ [HSIC_CTRL] = IPA_RM_RESOURCE_HSIC_PROD,
+ [DWC3_CTRL] = IPA_RM_RESOURCE_USB_PROD,
};
static enum ipa_client_type ipa_rm_resource_cons[MAX_BAMS] = {
- [HSUSB_BAM] = IPA_RM_RESOURCE_USB_CONS,
- [HSIC_BAM] = IPA_RM_RESOURCE_HSIC_CONS,
- [SSUSB_BAM] = IPA_RM_RESOURCE_USB_CONS,
+ [CI_CTRL] = IPA_RM_RESOURCE_USB_CONS,
+ [HSIC_CTRL] = IPA_RM_RESOURCE_HSIC_CONS,
+ [DWC3_CTRL] = IPA_RM_RESOURCE_USB_CONS,
};
static int usb_cons_request_resource(void);
@@ -153,15 +153,15 @@ static int hsic_cons_release_resource(void);
static int (*request_resource_cb[MAX_BAMS])(void) = {
- [HSUSB_BAM] = usb_cons_request_resource,
- [HSIC_BAM] = hsic_cons_request_resource,
- [SSUSB_BAM] = ss_usb_cons_request_resource,
+ [CI_CTRL] = usb_cons_request_resource,
+ [HSIC_CTRL] = hsic_cons_request_resource,
+ [DWC3_CTRL] = ss_usb_cons_request_resource,
};
static int (*release_resource_cb[MAX_BAMS])(void) = {
- [HSUSB_BAM] = usb_cons_release_resource,
- [HSIC_BAM] = hsic_cons_release_resource,
- [SSUSB_BAM] = ss_usb_cons_release_resource,
+ [CI_CTRL] = usb_cons_release_resource,
+ [HSIC_CTRL] = hsic_cons_release_resource,
+ [DWC3_CTRL] = ss_usb_cons_release_resource,
};
struct usb_bam_ipa_handshake_info {
@@ -169,7 +169,7 @@ struct usb_bam_ipa_handshake_info {
enum ipa_rm_event cur_cons_state;
enum usb_bam_mode cur_bam_mode;
- enum usb_bam bam_type;
+ enum usb_ctrl bam_type;
bool lpm_wait_handshake;
int connect_complete;
bool lpm_wait_pipes;
@@ -217,26 +217,26 @@ static struct device *usb_device;
static int __usb_bam_register_wake_cb(int idx, int (*callback)(void *user),
void *param, bool trigger_cb_per_pipe);
-static void wait_for_prod_release(enum usb_bam cur_bam);
+static void wait_for_prod_release(enum usb_ctrl cur_bam);
void msm_bam_set_hsic_host_dev(struct device *dev)
{
if (dev) {
/* Hold the device until allowing lpm */
- info[HSIC_BAM].in_lpm = false;
+ info[HSIC_CTRL].in_lpm = false;
pr_debug("%s: Getting hsic device %x\n", __func__,
(int)dev);
pm_runtime_get(dev);
- } else if (host_info[HSIC_BAM].dev) {
+ } else if (host_info[HSIC_CTRL].dev) {
pr_debug("%s: Putting hsic device %x\n", __func__,
- (int)host_info[HSIC_BAM].dev);
+ (int)host_info[HSIC_CTRL].dev);
/* Just free previous device*/
- info[HSIC_BAM].in_lpm = true;
- pm_runtime_put(host_info[HSIC_BAM].dev);
+ info[HSIC_CTRL].in_lpm = true;
+ pm_runtime_put(host_info[HSIC_CTRL].dev);
}
- host_info[HSIC_BAM].dev = dev;
- host_info[HSIC_BAM].in_lpm = false;
+ host_info[HSIC_CTRL].dev = dev;
+ host_info[HSIC_CTRL].in_lpm = false;
}
void msm_bam_set_usb_dev(struct device *dev)
@@ -247,29 +247,29 @@ void msm_bam_set_usb_dev(struct device *dev)
void msm_bam_set_usb_host_dev(struct device *dev)
{
- host_info[HSUSB_BAM].dev = dev;
- host_info[HSUSB_BAM].in_lpm = false;
+ host_info[CI_CTRL].dev = dev;
+ host_info[CI_CTRL].in_lpm = false;
}
static int get_bam_type_from_core_name(const char *name)
{
- if (strnstr(name, bam_enable_strings[SSUSB_BAM],
+ if (strnstr(name, bam_enable_strings[DWC3_CTRL],
USB_BAM_MAX_STR_LEN) ||
strnstr(name, "dwc3", USB_BAM_MAX_STR_LEN))
- return SSUSB_BAM;
- else if (strnstr(name, bam_enable_strings[HSIC_BAM],
+ return DWC3_CTRL;
+ else if (strnstr(name, bam_enable_strings[HSIC_CTRL],
USB_BAM_MAX_STR_LEN))
- return HSIC_BAM;
- else if (strnstr(name, bam_enable_strings[HSUSB_BAM],
+ return HSIC_CTRL;
+ else if (strnstr(name, bam_enable_strings[CI_CTRL],
USB_BAM_MAX_STR_LEN) ||
strnstr(name, "ci", USB_BAM_MAX_STR_LEN))
- return HSUSB_BAM;
+ return CI_CTRL;
pr_err("%s: invalid BAM name(%s)\n", __func__, name);
return -EINVAL;
}
-static bool bam_use_private_mem(enum usb_bam bam)
+static bool bam_use_private_mem(enum usb_ctrl bam)
{
int i;
@@ -281,7 +281,7 @@ static bool bam_use_private_mem(enum usb_bam bam)
return false;
}
-static void usb_bam_set_inactivity_timer(enum usb_bam bam)
+static void usb_bam_set_inactivity_timer(enum usb_ctrl bam)
{
struct sps_timer_ctrl timer_ctrl;
struct usb_bam_pipe_connect *pipe_connect;
@@ -322,7 +322,7 @@ static void usb_bam_set_inactivity_timer(enum usb_bam bam)
static int connect_pipe(u8 idx, u32 *usb_pipe_idx)
{
int ret, ram1_value;
- enum usb_bam bam;
+ enum usb_ctrl bam;
struct usb_bam_sps_type usb_bam_sps = ctx.usb_bam_sps;
struct sps_pipe **pipe = &(usb_bam_sps.sps_pipes[idx]);
struct sps_connect *sps_connection = &usb_bam_sps.sps_connections[idx];
@@ -410,7 +410,7 @@ static int connect_pipe(u8 idx, u32 *usb_pipe_idx)
*/
bam = pipe_connect->bam_type;
- if (bam == HSUSB_BAM)
+ if (bam == CI_CTRL)
ram1_value = 0x4;
else
ram1_value = 0x7;
@@ -770,11 +770,11 @@ static bool _hsic_host_bam_resume_core(void)
pr_debug("%s: enter\n", __func__);
/* Exit from "full suspend" in case of hsic host */
- if (host_info[HSIC_BAM].dev && info[HSIC_BAM].in_lpm) {
+ if (host_info[HSIC_CTRL].dev && info[HSIC_CTRL].in_lpm) {
pr_debug("%s: Getting hsic device %x\n", __func__,
- (int)host_info[HSIC_BAM].dev);
- pm_runtime_get(host_info[HSIC_BAM].dev);
- info[HSIC_BAM].in_lpm = false;
+ (int)host_info[HSIC_CTRL].dev);
+ pm_runtime_get(host_info[HSIC_CTRL].dev);
+ info[HSIC_CTRL].in_lpm = false;
return true;
}
return false;
@@ -788,7 +788,7 @@ static bool _hsic_device_bam_resume_core(void)
return false;
}
-static void _usb_bam_suspend_core(enum usb_bam bam_type, bool disconnect)
+static void _usb_bam_suspend_core(enum usb_ctrl bam_type, bool disconnect)
{
pr_debug("%s: enter bam=%s\n", __func__, bam_enable_strings[bam_type]);
@@ -823,27 +823,27 @@ static void _hsic_host_bam_suspend_core(void)
{
pr_debug("%s: enter\n", __func__);
- if (host_info[HSIC_BAM].dev && !info[HSIC_BAM].in_lpm) {
+ if (host_info[HSIC_CTRL].dev && !info[HSIC_CTRL].in_lpm) {
pr_debug("%s: Putting hsic host device %x\n", __func__,
- (int)host_info[HSIC_BAM].dev);
- pm_runtime_put(host_info[HSIC_BAM].dev);
- info[HSIC_BAM].in_lpm = true;
+ (int)host_info[HSIC_CTRL].dev);
+ pm_runtime_put(host_info[HSIC_CTRL].dev);
+ info[HSIC_CTRL].in_lpm = true;
}
}
-static void usb_bam_suspend_core(enum usb_bam bam_type,
+static void usb_bam_suspend_core(enum usb_ctrl bam_type,
enum usb_bam_mode bam_mode,
bool disconnect)
{
pr_debug("%s: enter bam=%s\n", __func__, bam_enable_strings[bam_type]);
switch (bam_type) {
- case HSUSB_BAM:
- /* TODO: This needs the correct handling for SSUSB_BAM */
- case SSUSB_BAM:
+ case CI_CTRL:
+ /* TODO: This needs the correct handling for DWC3_CTRL */
+ case DWC3_CTRL:
_usb_bam_suspend_core(bam_type, disconnect);
break;
- case HSIC_BAM:
+ case HSIC_CTRL:
if (bam_mode == USB_BAM_DEVICE)
_hsic_device_bam_suspend_core();
else /* USB_BAM_HOST */
@@ -855,18 +855,18 @@ static void usb_bam_suspend_core(enum usb_bam bam_type,
}
}
-static bool usb_bam_resume_core(enum usb_bam bam_type,
+static bool usb_bam_resume_core(enum usb_ctrl bam_type,
enum usb_bam_mode bam_mode)
{
pr_debug("%s: enter bam=%s\n", __func__, bam_enable_strings[bam_type]);
switch (bam_type) {
- case HSUSB_BAM:
- /* TODO: This needs the correct handling for SSUSB_BAM */
- case SSUSB_BAM:
+ case CI_CTRL:
+ /* TODO: This needs the correct handling for DWC3_CTRL */
+ case DWC3_CTRL:
return _usb_bam_resume_core();
break;
- case HSIC_BAM:
+ case HSIC_CTRL:
if (bam_mode == USB_BAM_DEVICE)
return _hsic_device_bam_resume_core();
else /* USB_BAM_HOST */
@@ -880,7 +880,7 @@ static bool usb_bam_resume_core(enum usb_bam bam_type,
static int usb_bam_disconnect_ipa_prod(
struct usb_bam_connect_ipa_params *ipa_params,
- enum usb_bam cur_bam, enum usb_bam_mode bam_mode)
+ enum usb_ctrl cur_bam, enum usb_bam_mode bam_mode)
{
int ret;
u8 idx = 0;
@@ -952,7 +952,7 @@ static int usb_bam_disconnect_ipa_prod(
static int usb_bam_disconnect_ipa_cons(
struct usb_bam_connect_ipa_params *ipa_params,
- enum usb_bam cur_bam)
+ enum usb_ctrl cur_bam)
{
int ret;
u8 idx = 0;
@@ -1030,11 +1030,11 @@ int usb_bam_connect(int idx, u32 *bam_pipe_idx)
int ret;
struct usb_bam_pipe_connect *pipe_connect = &usb_bam_connections[idx];
struct msm_usb_bam_platform_data *pdata;
- enum usb_bam cur_bam;
+ enum usb_ctrl cur_bam;
enum usb_bam_mode cur_mode;
if (!ctx.usb_bam_pdev) {
- pr_err("%s: usb_bam device not found\n", __func__);
+ pr_err("%s: usb_ctrl device not found\n", __func__);
return -ENODEV;
}
@@ -1180,7 +1180,7 @@ static void stop_cons_transfers(struct usb_bam_pipe_connect *pipe_connect)
}
}
-static void resume_suspended_pipes(enum usb_bam cur_bam)
+static void resume_suspended_pipes(enum usb_ctrl cur_bam)
{
u32 idx, dst_idx;
struct usb_bam_pipe_connect *pipe_connect;
@@ -1203,7 +1203,7 @@ static void resume_suspended_pipes(enum usb_bam cur_bam)
}
}
-static inline int all_pipes_suspended(enum usb_bam cur_bam)
+static inline int all_pipes_suspended(enum usb_ctrl cur_bam)
{
pr_debug("%s: pipes_suspended=%d pipes_enabled_per_bam=%d",
__func__, info[cur_bam].pipes_suspended,
@@ -1213,7 +1213,7 @@ static inline int all_pipes_suspended(enum usb_bam cur_bam)
ctx.pipes_enabled_per_bam[cur_bam]);
}
-static void usb_bam_finish_suspend(enum usb_bam cur_bam)
+static void usb_bam_finish_suspend(enum usb_ctrl cur_bam)
{
int ret;
u32 cons_empty, idx, dst_idx;
@@ -1318,7 +1318,7 @@ no_lpm:
void usb_bam_finish_suspend_(struct work_struct *w)
{
- enum usb_bam cur_bam;
+ enum usb_ctrl cur_bam;
struct usb_bam_ipa_handshake_info *info_ptr;
info_ptr = container_of(w, struct usb_bam_ipa_handshake_info,
@@ -1333,7 +1333,7 @@ void usb_bam_finish_suspend_(struct work_struct *w)
static void usb_prod_notify_cb(void *user_data, enum ipa_rm_event event,
unsigned long data)
{
- enum usb_bam *cur_bam = (void *)user_data;
+ enum usb_ctrl *cur_bam = (void *)user_data;
switch (event) {
case IPA_RM_RESOURCE_GRANTED:
@@ -1360,7 +1360,7 @@ static void usb_prod_notify_cb(void *user_data, enum ipa_rm_event event,
* NOTE: This function should be called in a context that hold
* usb_bam_lock.
*/
-static void usb_bam_resume_host(enum usb_bam bam_type)
+static void usb_bam_resume_host(enum usb_ctrl bam_type)
{
int i;
struct usb_bam_pipe_connect *pipe_iter;
@@ -1377,7 +1377,7 @@ static void usb_bam_resume_host(enum usb_bam bam_type)
}
}
-static int cons_request_resource(enum usb_bam cur_bam)
+static int cons_request_resource(enum usb_ctrl cur_bam)
{
int ret = -EINPROGRESS;
@@ -1445,21 +1445,21 @@ static int cons_request_resource(enum usb_bam cur_bam)
static int ss_usb_cons_request_resource(void)
{
- return cons_request_resource(SSUSB_BAM);
+ return cons_request_resource(DWC3_CTRL);
}
static int usb_cons_request_resource(void)
{
- return cons_request_resource(HSUSB_BAM);
+ return cons_request_resource(CI_CTRL);
}
static int hsic_cons_request_resource(void)
{
- return cons_request_resource(HSIC_BAM);
+ return cons_request_resource(HSIC_CTRL);
}
-static int cons_release_resource(enum usb_bam cur_bam)
+static int cons_release_resource(enum usb_ctrl cur_bam)
{
pr_debug("%s: Release %s_CONS resource\n",
__func__, bam_enable_strings[cur_bam]);
@@ -1498,24 +1498,24 @@ static int cons_release_resource(enum usb_bam cur_bam)
static int hsic_cons_release_resource(void)
{
- return cons_release_resource(HSIC_BAM);
+ return cons_release_resource(HSIC_CTRL);
}
static int usb_cons_release_resource(void)
{
- return cons_release_resource(HSUSB_BAM);
+ return cons_release_resource(CI_CTRL);
}
static int ss_usb_cons_release_resource(void)
{
- return cons_release_resource(SSUSB_BAM);
+ return cons_release_resource(DWC3_CTRL);
}
static void usb_bam_ipa_create_resources(void)
{
struct ipa_rm_create_params usb_prod_create_params;
struct ipa_rm_create_params usb_cons_create_params;
- enum usb_bam cur_bam;
+ enum usb_ctrl cur_bam;
int ret, i;
for (i = 0; i < ARRAY_SIZE(ipa_rm_bams); i++) {
@@ -1559,7 +1559,7 @@ static void usb_bam_ipa_create_resources(void)
}
}
-static void wait_for_prod_granted(enum usb_bam cur_bam)
+static void wait_for_prod_granted(enum usb_ctrl cur_bam)
{
int ret;
@@ -1589,7 +1589,7 @@ static void wait_for_prod_granted(enum usb_bam cur_bam)
pr_err("%s: ipa_rm_request_resource ret =%d\n", __func__, ret);
}
-void notify_usb_connected(enum usb_bam cur_bam)
+void notify_usb_connected(enum usb_ctrl cur_bam)
{
pr_debug("%s: enter\n", __func__);
@@ -1606,7 +1606,7 @@ void notify_usb_connected(enum usb_bam cur_bam)
}
}
-static void wait_for_prod_release(enum usb_bam cur_bam)
+static void wait_for_prod_release(enum usb_ctrl cur_bam)
{
int ret;
@@ -1682,7 +1682,7 @@ static bool check_pipes_empty(u8 src_idx, u8 dst_idx)
void usb_bam_suspend(struct usb_bam_connect_ipa_params *ipa_params)
{
struct usb_bam_pipe_connect *pipe_connect;
- enum usb_bam cur_bam;
+ enum usb_ctrl cur_bam;
enum usb_bam_mode bam_mode;
u8 src_idx, dst_idx;
@@ -1735,7 +1735,7 @@ static void usb_bam_start_suspend(struct work_struct *w)
{
struct usb_bam_pipe_connect *pipe_connect;
struct usb_bam_ipa_handshake_info *info_ptr;
- enum usb_bam cur_bam;
+ enum usb_ctrl cur_bam;
u8 src_idx, dst_idx;
int pipes_to_suspend;
@@ -1802,7 +1802,7 @@ static void usb_bam_start_suspend(struct work_struct *w)
static void usb_bam_finish_resume(struct work_struct *w)
{
/* TODO: Change this when HSIC device support is introduced */
- enum usb_bam cur_bam;
+ enum usb_ctrl cur_bam;
struct usb_bam_ipa_handshake_info *info_ptr;
struct usb_bam_pipe_connect *pipe_connect;
u32 idx, dst_idx, suspended;
@@ -1880,7 +1880,7 @@ static void usb_bam_finish_resume(struct work_struct *w)
void usb_bam_resume(struct usb_bam_connect_ipa_params *ipa_params)
{
- enum usb_bam cur_bam;
+ enum usb_ctrl cur_bam;
u8 src_idx, dst_idx;
struct usb_bam_pipe_connect *pipe_connect;
@@ -1914,7 +1914,7 @@ void usb_bam_resume(struct usb_bam_connect_ipa_params *ipa_params)
queue_work(ctx.usb_bam_wq, &info[cur_bam].resume_work);
}
-void _msm_bam_wait_for_host_prod_granted(enum usb_bam bam_type)
+void _msm_bam_wait_for_host_prod_granted(enum usb_ctrl bam_type)
{
spin_lock(&usb_bam_lock);
@@ -1934,10 +1934,10 @@ void _msm_bam_wait_for_host_prod_granted(enum usb_bam bam_type)
void msm_bam_wait_for_hsic_host_prod_granted(void)
{
pr_debug("%s: start\n", __func__);
- _msm_bam_wait_for_host_prod_granted(HSIC_BAM);
+ _msm_bam_wait_for_host_prod_granted(HSIC_CTRL);
}
-void _msm_bam_host_notify_on_resume(enum usb_bam bam_type)
+void _msm_bam_host_notify_on_resume(enum usb_ctrl bam_type)
{
spin_lock(&usb_bam_lock);
pr_debug("%s: enter bam=%s\n", __func__, bam_enable_strings[bam_type]);
@@ -1959,7 +1959,7 @@ void _msm_bam_host_notify_on_resume(enum usb_bam bam_type)
spin_unlock(&usb_bam_lock);
}
-bool msm_bam_host_lpm_ok(enum usb_bam bam_type)
+bool msm_bam_host_lpm_ok(enum usb_ctrl bam_type)
{
int i;
struct usb_bam_pipe_connect *pipe_iter;
@@ -2028,13 +2028,13 @@ bool msm_bam_host_lpm_ok(enum usb_bam bam_type)
void msm_bam_hsic_host_notify_on_resume(void)
{
- _msm_bam_host_notify_on_resume(HSIC_BAM);
+ _msm_bam_host_notify_on_resume(HSIC_CTRL);
}
int usb_bam_connect_ipa(struct usb_bam_connect_ipa_params *ipa_params)
{
u8 idx;
- enum usb_bam cur_bam;
+ enum usb_ctrl cur_bam;
enum usb_bam_mode cur_mode;
struct usb_bam_pipe_connect *pipe_connect;
int ret;
@@ -2107,12 +2107,12 @@ int usb_bam_connect_ipa(struct usb_bam_connect_ipa_params *ipa_params)
(ctx.pipes_enabled_per_bam[cur_bam] == 0) && bam2bam) {
spin_unlock(&usb_bam_lock);
- if (cur_bam != HSIC_BAM)
+ if (cur_bam != HSIC_CTRL)
msm_hw_bam_disable(1);
sps_device_reset(ctx.h_bam[cur_bam]);
- if (cur_bam != HSIC_BAM)
+ if (cur_bam != HSIC_CTRL)
msm_hw_bam_disable(0);
/* On re-connect assume out from lpm for HOST BAM */
@@ -2360,7 +2360,7 @@ static void usb_bam_wake_cb(struct sps_event_notify *notify)
container_of(event_info,
struct usb_bam_pipe_connect,
event);
- enum usb_bam bam = pipe_connect->bam_type;
+ enum usb_ctrl bam = pipe_connect->bam_type;
spin_lock(&usb_bam_lock);
@@ -2604,7 +2604,7 @@ int usb_bam_disconnect_ipa(struct usb_bam_connect_ipa_params *ipa_params)
int ret;
u8 idx = 0;
struct usb_bam_pipe_connect *pipe_connect;
- enum usb_bam cur_bam;
+ enum usb_ctrl cur_bam;
enum usb_bam_mode bam_mode;
if (!ipa_params->prod_clnt_hdl && !ipa_params->cons_clnt_hdl) {
@@ -2661,7 +2661,7 @@ int usb_bam_a2_reset(bool to_reconnect)
struct usb_bam_pipe_connect *pipe_connect;
int i;
int ret = 0, ret_int;
- enum usb_bam bam = 0;
+ enum usb_ctrl bam = 0;
bool to_reset_bam = false;
int reconnect_pipe_idx[ctx.max_connections];
@@ -2988,7 +2988,7 @@ static int usb_bam_init(int bam_type)
}
/* Check if USB3 pipe memory needs to be enabled */
- if (bam_type == SSUSB_BAM && bam_use_private_mem(bam_type)) {
+ if (bam_type == DWC3_CTRL && bam_use_private_mem(bam_type)) {
pr_debug("%s: Enabling USB private memory for: %s\n", __func__,
bam_enable_strings[bam_type]);
@@ -3024,7 +3024,7 @@ static int usb_bam_init(int bam_type)
* HSUSB and HSIC Cores don't support RESET ACK signal to BAMs
* Hence, let BAM to ignore acknowledge from USB while resetting PIPE
*/
- if (pdata->ignore_core_reset_ack && bam_type != SSUSB_BAM)
+ if (pdata->ignore_core_reset_ack && bam_type != DWC3_CTRL)
props->options = SPS_BAM_NO_EXT_P_RST;
if (pdata->disable_clk_gating)
@@ -3119,9 +3119,9 @@ static ssize_t usb_bam_store_inactivity_timer(struct device *dev,
if (strnstr(buff, "help", USB_BAM_MAX_STR_LEN)) {
pr_info("Usage: <bam_name> <ms>,<bam_name> <ms>,...\n");
pr_info("\tbam_name: [%s, %s, %s]\n",
- bam_enable_strings[SSUSB_BAM],
- bam_enable_strings[HSUSB_BAM],
- bam_enable_strings[HSIC_BAM]);
+ bam_enable_strings[DWC3_CTRL],
+ bam_enable_strings[CI_CTRL],
+ bam_enable_strings[HSIC_CTRL]);
pr_info("\tms: time in ms. Use 0 to disable timer\n");
return count;
}
@@ -3269,7 +3269,7 @@ EXPORT_SYMBOL(usb_bam_get_qdss_idx);
bool usb_bam_get_prod_granted(u8 idx)
{
struct usb_bam_pipe_connect *pipe_connect = &usb_bam_connections[idx];
- enum usb_bam cur_bam = pipe_connect->bam_type;
+ enum usb_ctrl cur_bam = pipe_connect->bam_type;
return (info[cur_bam].cur_prod_state == IPA_RM_RESOURCE_GRANTED);
}
@@ -3338,7 +3338,7 @@ int usb_bam_get_connection_idx(const char *core_name, enum peer_bam client,
}
EXPORT_SYMBOL(usb_bam_get_connection_idx);
-bool msm_bam_device_lpm_ok(enum usb_bam bam_type)
+bool msm_bam_device_lpm_ok(enum usb_ctrl bam_type)
{
pr_debug("%s: enter bam%s\n", __func__, bam_enable_strings[bam_type]);
@@ -3358,14 +3358,15 @@ bool msm_bam_device_lpm_ok(enum usb_bam bam_type)
}
}
-bool msm_bam_usb_lpm_ok(void)
+bool msm_bam_usb_lpm_ok(enum usb_ctrl bam)
{
- pr_debug("%s: enter mode %d\n", __func__, info[HSUSB_BAM].cur_bam_mode);
+ pr_debug("%s: enter mode %d on %s\n",
+ __func__, info[bam].cur_bam_mode, bam_enable_strings[bam]);
- if (info[HSUSB_BAM].cur_bam_mode == USB_BAM_DEVICE)
- return msm_bam_device_lpm_ok(HSUSB_BAM);
+ if (info[bam].cur_bam_mode == USB_BAM_DEVICE)
+ return msm_bam_device_lpm_ok(bam);
else /* USB_BAM_HOST */ {
- return msm_bam_host_lpm_ok(HSUSB_BAM);
+ return msm_bam_host_lpm_ok(bam);
}
}
EXPORT_SYMBOL(msm_bam_usb_lpm_ok);
@@ -3374,22 +3375,23 @@ bool msm_bam_hsic_lpm_ok(void)
{
pr_debug("%s: enter\n", __func__);
- if (info[HSIC_BAM].cur_bam_mode == USB_BAM_DEVICE)
- return msm_bam_device_lpm_ok(HSIC_BAM);
+ if (info[HSIC_CTRL].cur_bam_mode == USB_BAM_DEVICE)
+ return msm_bam_device_lpm_ok(HSIC_CTRL);
else /* USB_BAM_HOST */ {
- return msm_bam_host_lpm_ok(HSIC_BAM);
+ return msm_bam_host_lpm_ok(HSIC_CTRL);
}
}
EXPORT_SYMBOL(msm_bam_hsic_lpm_ok);
-/* TODO: make this for SSUSB_BAM when lpm support is in place */
-void msm_bam_notify_lpm_resume()
+void msm_bam_notify_lpm_resume(enum usb_ctrl bam)
{
/*
* If core was resumed from lpm, just clear the
* pending indication, in case it is set.
*/
- info[HSUSB_BAM].pending_lpm = 0;
+ pr_debug("%s: notifying lpm resume on %s\n",
+ __func__, bam_enable_strings[bam]);
+ info[bam].pending_lpm = 0;
}
EXPORT_SYMBOL(msm_bam_notify_lpm_resume);
diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c
index e41aa0ebfe01acbc6c5523ab956b6f05e6fa69fb..8aaa59f7886f12f64906b7108ace36803ebca17e 100644
--- a/drivers/usb/phy/phy-msm-usb.c
+++ b/drivers/usb/phy/phy-msm-usb.c
@@ -889,7 +889,7 @@ static int msm_otg_suspend(struct msm_otg *motg)
return 0;
if (motg->pdata->delay_lpm_hndshk_on_disconnect &&
- !msm_bam_usb_lpm_ok())
+ !msm_bam_usb_lpm_ok(CI_CTRL))
return -EBUSY;
motg->ui_enabled = 0;
@@ -1159,7 +1159,7 @@ static int msm_otg_resume(struct msm_otg *motg)
return 0;
if (motg->pdata->delay_lpm_hndshk_on_disconnect)
- msm_bam_notify_lpm_resume();
+ msm_bam_notify_lpm_resume(CI_CTRL);
if (motg->ui_enabled) {
motg->ui_enabled = 0;
diff --git a/include/linux/usb/msm_hsusb.h b/include/linux/usb/msm_hsusb.h
index 51d5ce2bdd6e33ed86bf2427ea5d1ff294f2d606..73e5ef764c8f5b21344cd41b2a8b3b7bd94bb87d 100644
--- a/include/linux/usb/msm_hsusb.h
+++ b/include/linux/usb/msm_hsusb.h
@@ -190,6 +190,16 @@ enum usb_vdd_value {
VDD_VAL_MAX,
};
+/**
+ * Supported USB controllers
+ */
+enum usb_ctrl {
+ DWC3_CTRL = 0, /* DWC3 controller */
+ CI_CTRL, /* ChipIdea controller */
+ HSIC_CTRL, /* HSIC controller */
+ NUM_CTRL,
+};
+
/**
* struct msm_otg_platform_data - platform device data
* for msm_otg driver.
@@ -579,8 +589,8 @@ struct usb_ext_notification {
void *ctxt;
};
#ifdef CONFIG_USB_BAM
-bool msm_bam_usb_lpm_ok(void);
-void msm_bam_notify_lpm_resume(void);
+bool msm_bam_usb_lpm_ok(enum usb_ctrl ctrl);
+void msm_bam_notify_lpm_resume(enum usb_ctrl ctrl);
void msm_bam_set_usb_host_dev(struct device *dev);
void msm_bam_set_hsic_host_dev(struct device *dev);
void msm_bam_set_usb_dev(struct device *dev);
@@ -590,8 +600,8 @@ bool msm_bam_hsic_lpm_ok(void);
void msm_bam_usb_host_notify_on_resume(void);
void msm_bam_hsic_host_notify_on_resume(void);
#else
-static inline bool msm_bam_usb_lpm_ok(void) { return true; }
-static inline void msm_bam_notify_lpm_resume(void) {}
+static inline bool msm_bam_usb_lpm_ok(enum usb_ctrl ctrl) { return true; }
+static inline void msm_bam_notify_lpm_resume(enum usb_ctrl ctrl) {}
static inline void msm_bam_set_usb_host_dev(struct device *dev) {}
static inline void msm_bam_set_hsic_host_dev(struct device *dev) {}
static inline void msm_bam_set_usb_dev(struct device *dev) {}
diff --git a/include/linux/usb_bam.h b/include/linux/usb_bam.h
index cc3a5b99383e54d725e8cc5138e8a30c386ac82c..ae840d4923502f5f9bce2fa2ec57660de661b3cf 100644
--- a/include/linux/usb_bam.h
+++ b/include/linux/usb_bam.h
@@ -16,12 +16,8 @@
#include <linux/ipa.h>
#include <linux/usb/msm_hsusb.h>
-enum usb_bam {
- SSUSB_BAM = 0,
- HSUSB_BAM,
- HSIC_BAM,
- MAX_BAMS,
-};
+#define MAX_BAMS NUM_CTRL /* Bam per USB controllers */
+
enum usb_bam_mode {
USB_BAM_DEVICE = 0,
@@ -138,7 +134,7 @@ struct usb_bam_pipe_connect {
u32 pipe_num;
enum usb_pipe_mem_type mem_type;
enum usb_bam_pipe_dir dir;
- enum usb_bam bam_type;
+ enum usb_ctrl bam_type;
enum usb_bam_mode bam_mode;
enum peer_bam peer_bam;
enum usb_bam_pipe_type pipe_type;