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 int (*tty_write)(struct platform_device *pdev, const char *s, int count); 67 int (*write_room)(struct platform_device *pdev); 68 #endif 69 #ifdef CONFIG_FIQ_DEBUGGER_TRUST_ZONE 70 void (*switch_cpu)(struct platform_device *pdev, u32 cpu); 71 void (*enable_debug)(struct platform_device *pdev, bool val); 72 #endif 73 }; 74 75 #ifdef CONFIG_FIQ_GLUE 76 void gic_set_irq_secure(struct irq_data *d); 77 void gic_set_irq_priority(struct irq_data *d, u8 pri); 78 #endif 79 80 void fiq_tty_wake_up(struct platform_device *pdev); 81 #endif 82