caf75155110f4cf77ed3c37f5fd47cc8c96ae026
[firefly-linux-kernel-4.4.55.git] / drivers / staging / android / fiq_debugger / fiq_debugger.h
1 /*
2  * drivers/staging/android/fiq_debugger/fiq_debugger.h
3  *
4  * Copyright (C) 2010 Google, Inc.
5  * Author: Colin Cross <ccross@android.com>
6  *
7  * This software is licensed under the terms of the GNU General Public
8  * License version 2, as published by the Free Software Foundation, and
9  * may be copied, distributed, and modified under those terms.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  */
17
18 #ifndef _ARCH_ARM_MACH_TEGRA_FIQ_DEBUGGER_H_
19 #define _ARCH_ARM_MACH_TEGRA_FIQ_DEBUGGER_H_
20
21 #include <linux/serial_core.h>
22
23 #define FIQ_DEBUGGER_NO_CHAR NO_POLL_CHAR
24 #define FIQ_DEBUGGER_BREAK 0x00ff0100
25
26 #define FIQ_DEBUGGER_FIQ_IRQ_NAME       "fiq"
27 #define FIQ_DEBUGGER_SIGNAL_IRQ_NAME    "signal"
28 #define FIQ_DEBUGGER_WAKEUP_IRQ_NAME    "wakeup"
29
30 /**
31  * struct fiq_debugger_pdata - fiq debugger platform data
32  * @uart_resume:        used to restore uart state right before enabling
33  *                      the fiq.
34  * @uart_enable:        Do the work necessary to communicate with the uart
35  *                      hw (enable clocks, etc.). This must be ref-counted.
36  * @uart_disable:       Do the work necessary to disable the uart hw
37  *                      (disable clocks, etc.). This must be ref-counted.
38  * @uart_dev_suspend:   called during PM suspend, generally not needed
39  *                      for real fiq mode debugger.
40  * @uart_dev_resume:    called during PM resume, generally not needed
41  *                      for real fiq mode debugger.
42  */
43 struct fiq_debugger_pdata {
44         int (*uart_init)(struct platform_device *pdev);
45         void (*uart_free)(struct platform_device *pdev);
46         int (*uart_resume)(struct platform_device *pdev);
47         int (*uart_getc)(struct platform_device *pdev);
48         void (*uart_putc)(struct platform_device *pdev, unsigned int c);
49         void (*uart_flush)(struct platform_device *pdev);
50         void (*uart_enable)(struct platform_device *pdev);
51         void (*uart_disable)(struct platform_device *pdev);
52
53         int (*uart_dev_suspend)(struct platform_device *pdev);
54         int (*uart_dev_resume)(struct platform_device *pdev);
55
56         void (*fiq_enable)(struct platform_device *pdev, unsigned int fiq,
57                                                                 bool enable);
58         void (*fiq_ack)(struct platform_device *pdev, unsigned int fiq);
59
60         void (*force_irq)(struct platform_device *pdev, unsigned int irq);
61         void (*force_irq_ack)(struct platform_device *pdev, unsigned int irq);
62
63 #ifdef CONFIG_RK_CONSOLE_THREAD
64         void (*console_write)(struct platform_device *pdev, const char *s,
65                               unsigned int count);
66 #endif
67 };
68
69 #endif