From ac7992081abba87627c9e91735b3309584b48585 Mon Sep 17 00:00:00 2001
From: Gregory Hermant <gregory.hermant@calao-systems.com>
Date: Wed, 14 Nov 2012 14:27:02 +0100
Subject: [PATCH] add support for the ST-Ericsson CG2900 GPS FM Bluetooth
 combo controller


Signed-off-by: Gregory Hermant <gregory.hermant@calao-systems.com>
---
 tools/hciattach.c |   22 +++++++++++++++-------
 tools/hciattach.h |    1 +
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/tools/hciattach.c b/tools/hciattach.c
index e4d5aa1..7f08243 100644
--- a/tools/hciattach.c
+++ b/tools/hciattach.c
@@ -1066,6 +1066,11 @@ struct uart_t uart[] = {
 	{ "texasalt",   0x0000, 0x0000, HCI_UART_LL,   115200, 115200,
 				FLOW_CTL, DISABLE_PM, NULL, texasalt, NULL   },
 
+	/* ST-Ericsson CG2900 GPS FM Bluetooth combo controller */
+	{ "cg2900",     0x0000, 0x0000, HCI_UART_STE,  115200, 115200,
+				FLOW_CTL, DISABLE_PM, NULL, NULL     },
+
+
 	/* ST Microelectronics minikits based on STLC2410/STLC2415 */
 	{ "st",         0x0000, 0x0000, HCI_UART_H4,    57600, 115200,
 				FLOW_CTL, DISABLE_PM,  NULL, st       },
@@ -1157,10 +1162,10 @@ static struct uart_t * get_by_type(char *type)
 }
 
 /* Initialize UART driver */
-static int init_uart(char *dev, struct uart_t *u, int send_break, int raw)
+static int init_uart(char *dev, struct uart_t *u, int send_break, int raw, int line_disc)
 {
 	struct termios ti;
-	int fd, i;
+	int fd;
 	unsigned long flags = 0;
 
 	if (raw)
@@ -1217,8 +1222,7 @@ static int init_uart(char *dev, struct uart_t *u, int send_break, int raw)
 	}
 
 	/* Set TTY to N_HCI line discipline */
-	i = N_HCI;
-	if (ioctl(fd, TIOCSETD, &i) < 0) {
+	if (ioctl(fd, TIOCSETD, &line_disc) < 0) {
 		perror("Can't set line discipline");
 		return -1;
 	}
@@ -1243,7 +1247,7 @@ static void usage(void)
 {
 	printf("hciattach - HCI UART driver initialization utility\n");
 	printf("Usage:\n");
-	printf("\thciattach [-n] [-p] [-b] [-r] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow] [bdaddr]\n");
+	printf("\thciattach [-n] [-p] [-a line_disc_nr] [-b] [-r] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow] [bdaddr]\n");
 	printf("\thciattach -l\n");
 }
 
@@ -1252,6 +1256,7 @@ int main(int argc, char *argv[])
 	struct uart_t *u = NULL;
 	int detach, printpid, raw, opt, i, n, ld, err;
 	int to = 10;
+	int line_disc = N_HCI;
 	int init_speed = 0;
 	int send_break = 0;
 	pid_t pid;
@@ -1264,8 +1269,11 @@ int main(int argc, char *argv[])
 	printpid = 0;
 	raw = 0;
 
-	while ((opt=getopt(argc, argv, "bnpt:s:lr")) != EOF) {
+	while ((opt=getopt(argc, argv, "bnpt:s:lra:")) != EOF) {
 		switch(opt) {
+		case 'a':
+                        line_disc = atoi(optarg);
+                        break;
 		case 'b':
 			send_break = 1;
 			break;
@@ -1381,7 +1389,7 @@ int main(int argc, char *argv[])
 	alarm(to);
 	bcsp_max_retries = to;
 
-	n = init_uart(dev, u, send_break, raw);
+	n = init_uart(dev, u, send_break, raw, line_disc);
 	if (n < 0) {
 		perror("Can't initialize device");
 		exit(1);
diff --git a/tools/hciattach.h b/tools/hciattach.h
index fed0d11..09b534d 100644
--- a/tools/hciattach.h
+++ b/tools/hciattach.h
@@ -39,6 +39,7 @@
 #define HCI_UART_H4DS	3
 #define HCI_UART_LL	4
 #define HCI_UART_ATH3K  5
+#define HCI_UART_STE	6
 
 #define HCI_UART_RAW_DEVICE	0
 
-- 
1.7.9.5

