blob: c9ec4f8db086f41fedba417820600d70c2edff26 [file] [log] [blame]
Iliyan Malchev8c0dbf62010-06-05 17:36:24 -07001/*
Colin Cross66bbef22014-04-02 18:30:04 -07002 * drivers/staging/android/fiq_debugger/fiq_debugger.h
Iliyan Malchev8c0dbf62010-06-05 17:36:24 -07003 *
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 */
43struct 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
64#endif