2 * Provide kernel console on headphone jack
4 * Copyright (C) 2011 Michael Gernoth <michael@gernoth.net>
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
11 #include <linux/module.h>
12 #include <linux/gpio_mapping.h>
13 #include <linux/gpio.h>
14 #include <linux/platform_device.h>
15 #include <linux/serial_reg.h>
16 #include <linux/clk.h>
18 #include <plat/board.h>
19 #include <plat/control.h>
20 #include <asm/mach/serial_omap.h>
23 #include "prm-regbits-34xx.h"
25 static int hs_switch
= -1;
28 * int add_preferred_console(char *name, int idx, char *options)
29 * c0069208 T add_preferred_console
32 static int (*add_preferred_console
)(char *, int, char*) = (int (*)(char*, int, char*))0xc0069208;
34 void my_omap_serial_init(int wake_gpio_strobe
, unsigned int wake_strobe_enable_mask
);
35 int my_omap_hs_init(void);
36 int my_serial_omap_init(void);
38 #define MAPPHONE_BPWAKE_STROBE_GPIO 157
40 static int __init
headphone_cons_init(void)
42 /* Get the headset switch gpio number from devtree */
43 hs_switch
= get_gpio_by_name("headset_uart_switch");
47 printk(KERN_INFO
"headset_uart_switch: %d, value: %d\n", hs_switch
, gpio_get_value(hs_switch
));
49 if (!gpio_get_value(hs_switch
))
52 printk(KERN_INFO
"Loading slightly modified omap serial driver...\n");
53 my_serial_omap_init();
55 printk(KERN_INFO
"Enabling UART3...\n");
56 my_omap_serial_init(MAPPHONE_BPWAKE_STROBE_GPIO
, 0x01);
59 /* route kernel uart out headset jack */
60 gpio_direction_output(hs_switch
, 0);
61 printk(KERN_INFO
"headset_uart_switch: %d, value: %d\n", hs_switch
, gpio_get_value(hs_switch
));
63 //add_preferred_console("ttyS", 2, "115200");
68 static void __exit
headphone_cons_exit(void)
73 printk(KERN_INFO
"value: %d\n", gpio_get_value(hs_switch
));
74 gpio_direction_output(hs_switch
, 1);
75 printk(KERN_INFO
"value: %d\n", gpio_get_value(hs_switch
));
80 module_init(headphone_cons_init
);
82 module_exit(headphone_cons_exit
);
85 MODULE_LICENSE("GPL");
86 MODULE_AUTHOR("Michael Gernoth <michael@gernoth.net>");