void msm_serial_debug_init(unsigned int base, int irq, struct device *clk_device, int signal_irq) { int ret; void *port; debug_clk = clk_get(clk_device, "uart_clk"); if (debug_clk) clk_enable(debug_clk); port = ioremap(base, 4096); if (!port) return; init_data.base = base; init_data.irq = irq; init_data.clk_device = clk_device; init_data.signal_irq = signal_irq; debug_port_base = (unsigned int) port; debug_signal_irq = signal_irq; debug_port_init(); debug_prompt(); msm_fiq_select(irq); msm_fiq_set_handler(debug_fiq, 0); msm_fiq_enable(irq); ret = request_irq(signal_irq, debug_irq, IRQF_TRIGGER_RISING, "debug", 0); if (ret) printk(KERN_ERR "serial_debugger: could not install signal_irq"); #if defined(CONFIG_MSM_SERIAL_DEBUGGER_CONSOLE) register_console(&msm_serial_debug_console); #endif debugger_enable = 1; }
void __init msm_init_sirc(void) { int i; int_enable = 0; wake_enable = 0; for (i = FIRST_SIRC_IRQ; i < LAST_SIRC_IRQ; i++) { irq_set_chip_and_handler(i, &sirc_irq_chip, handle_edge_irq); set_irq_flags(i, IRQF_VALID); } for (i = 0; i < ARRAY_SIZE(sirc_reg_table); i++) { irq_set_chained_handler(sirc_reg_table[i].cascade_irq, sirc_irq_handler); irq_set_irq_wake(sirc_reg_table[i].cascade_irq, 1); #if defined(CONFIG_MSM_FIQ_SUPPORT) msm_fiq_select(sirc_reg_table[i].cascade_fiq); msm_fiq_enable(sirc_reg_table[i].cascade_fiq); #endif } return; }