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