Loading drivers/soc/qcom/qdsp6v2/apr.c +9 −4 Original line number Diff line number Diff line Loading @@ -327,9 +327,12 @@ struct apr_svc *apr_register(char *dest, char *svc_name, apr_fn svc_fn, if (!strcmp(dest, "ADSP")) domain_id = APR_DOMAIN_ADSP; else if (!strcmp(dest, "MODEM")) else if (!strcmp(dest, "MODEM")) { /* Register voice services if destination permits */ if (!apr_register_voice_svc()) goto done; domain_id = APR_DOMAIN_MODEM; else { } else { pr_err("APR: wrong destination\n"); goto done; } Loading Loading @@ -671,7 +674,7 @@ void apr_reset(void *handle) } /* Dispatch the Reset events to Modem and audio clients */ void dispatch_event(unsigned long code, unsigned short proc) void dispatch_event(unsigned long code, uint16_t proc) { struct apr_client *apr_client; struct apr_client_data data; Loading @@ -681,7 +684,9 @@ void dispatch_event(unsigned long code, unsigned short proc) data.opcode = RESET_EVENTS; data.reset_event = code; data.reset_proc = proc; /* Service domain can be different from the processor */ data.reset_proc = apr_get_reset_domain(proc); clnt = APR_CLIENT_AUDIO; apr_client = &client[proc][clnt]; Loading drivers/soc/qcom/qdsp6v2/apr_v2.c +11 −1 Original line number Diff line number Diff line /* * Copyright (c) 2012, 2013 The Linux Foundation. All rights reserved. * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -58,3 +58,13 @@ void subsys_notif_register(struct notifier_block *mod_notif, subsys_notif_register_notifier("modem", mod_notif); subsys_notif_register_notifier(apr_get_lpass_subsys_name(), lp_notif); } uint16_t apr_get_reset_domain(uint16_t proc) { return proc; } bool apr_register_voice_svc() { return true; } drivers/soc/qcom/qdsp6v2/apr_v3.c +9 −0 Original line number Diff line number Diff line Loading @@ -42,3 +42,12 @@ void subsys_notif_register(struct notifier_block *mod_notif, subsys_notif_register_notifier("modem", mod_notif); } uint16_t apr_get_reset_domain(uint16_t proc) { return APR_DEST_QDSP6; } bool apr_register_voice_svc() { return false; } include/linux/qdsp6v2/apr.h +2 −0 Original line number Diff line number Diff line Loading @@ -174,4 +174,6 @@ enum apr_subsys_state apr_get_q6_state(void); int apr_set_q6_state(enum apr_subsys_state state); void apr_set_subsys_state(void); const char *apr_get_lpass_subsys_name(void); bool apr_register_voice_svc(void); uint16_t apr_get_reset_domain(uint16_t proc); #endif Loading
drivers/soc/qcom/qdsp6v2/apr.c +9 −4 Original line number Diff line number Diff line Loading @@ -327,9 +327,12 @@ struct apr_svc *apr_register(char *dest, char *svc_name, apr_fn svc_fn, if (!strcmp(dest, "ADSP")) domain_id = APR_DOMAIN_ADSP; else if (!strcmp(dest, "MODEM")) else if (!strcmp(dest, "MODEM")) { /* Register voice services if destination permits */ if (!apr_register_voice_svc()) goto done; domain_id = APR_DOMAIN_MODEM; else { } else { pr_err("APR: wrong destination\n"); goto done; } Loading Loading @@ -671,7 +674,7 @@ void apr_reset(void *handle) } /* Dispatch the Reset events to Modem and audio clients */ void dispatch_event(unsigned long code, unsigned short proc) void dispatch_event(unsigned long code, uint16_t proc) { struct apr_client *apr_client; struct apr_client_data data; Loading @@ -681,7 +684,9 @@ void dispatch_event(unsigned long code, unsigned short proc) data.opcode = RESET_EVENTS; data.reset_event = code; data.reset_proc = proc; /* Service domain can be different from the processor */ data.reset_proc = apr_get_reset_domain(proc); clnt = APR_CLIENT_AUDIO; apr_client = &client[proc][clnt]; Loading
drivers/soc/qcom/qdsp6v2/apr_v2.c +11 −1 Original line number Diff line number Diff line /* * Copyright (c) 2012, 2013 The Linux Foundation. All rights reserved. * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -58,3 +58,13 @@ void subsys_notif_register(struct notifier_block *mod_notif, subsys_notif_register_notifier("modem", mod_notif); subsys_notif_register_notifier(apr_get_lpass_subsys_name(), lp_notif); } uint16_t apr_get_reset_domain(uint16_t proc) { return proc; } bool apr_register_voice_svc() { return true; }
drivers/soc/qcom/qdsp6v2/apr_v3.c +9 −0 Original line number Diff line number Diff line Loading @@ -42,3 +42,12 @@ void subsys_notif_register(struct notifier_block *mod_notif, subsys_notif_register_notifier("modem", mod_notif); } uint16_t apr_get_reset_domain(uint16_t proc) { return APR_DEST_QDSP6; } bool apr_register_voice_svc() { return false; }
include/linux/qdsp6v2/apr.h +2 −0 Original line number Diff line number Diff line Loading @@ -174,4 +174,6 @@ enum apr_subsys_state apr_get_q6_state(void); int apr_set_q6_state(enum apr_subsys_state state); void apr_set_subsys_state(void); const char *apr_get_lpass_subsys_name(void); bool apr_register_voice_svc(void); uint16_t apr_get_reset_domain(uint16_t proc); #endif