[RAMEN9610-20413][9610] wlbt: SCSC Driver version 10.6.1.0
[GitHub/MotorolaMobilityLLC/kernel-slsi.git] / drivers / misc / samsung / scsc / panicmon.c
1 /****************************************************************************
2 *
3 * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
4 *
5 ****************************************************************************/
6
7 #include <scsc/scsc_logring.h>
8
9 #include "panicmon.h"
10 #include "scsc_mif_abs.h"
11 #include "mxman.h"
12
13 static void panicmon_isr(int irq, void *data)
14 {
15 struct panicmon *panicmon = (struct panicmon *)data;
16
17 SCSC_TAG_DEBUG(PANIC_MON, "panicmon=%p panicmon->mx=%p mxman=%p\n", panicmon, panicmon->mx, scsc_mx_get_mxman(panicmon->mx));
18 /* Avoid unused parameter error */
19 (void)irq;
20 mxman_fail(scsc_mx_get_mxman(panicmon->mx), SCSC_PANIC_CODE_FW << 15, __func__);
21 }
22
23
24 void panicmon_init(struct panicmon *panicmon, struct scsc_mx *mx)
25 {
26 struct scsc_mif_abs *mif;
27
28 panicmon->mx = mx;
29 mif = scsc_mx_get_mif_abs(mx);
30 /* register isr with mif abstraction */
31 mif->irq_reg_reset_request_handler(mif, panicmon_isr, (void *)panicmon);
32 }
33
34 void panicmon_deinit(struct panicmon *panicmon)
35 {
36 struct scsc_mif_abs *mif;
37
38 mif = scsc_mx_get_mif_abs(panicmon->mx);
39 mif->irq_unreg_reset_request_handler(mif);
40 }