1 /* 2 * User Mode Init manager - For shared transport 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program;if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 */ 18 19 #ifndef UIM_H 20 #define UIM_H 21 22 /* the line discipline ideally should be coming 23 * from tty.h 24 */ 25 #define N_TI_WL 22 26 27 /* Paramaters to set the baud rate*/ 28 #define FLOW_CTL 0x0001 29 #define ARM_NCCS 19 30 31 #ifndef TCGETS2 32 #define TCGETS2 _IOR('T',0x2A, struct termios2) 33 #endif 34 #ifndef TCSETS2 35 #define TCSETS2 _IOW('T',0x2B, struct termios2) 36 #endif 37 38 /*HCI Command and Event information*/ 39 #define HCI_HDR_OPCODE 0xff36 40 #define WRITE_BD_ADDR_OPCODE 0xFC06 41 #define RESP_PREFIX 0x04 42 #define MAX_TRY 10 43 44 /* HCI Packet types */ 45 #define HCI_COMMAND_PKT 0x01 46 #define HCI_EVENT_PKT 0x04 47 48 /* HCI command macros*/ 49 #define HCI_EVENT_HDR_SIZE 2 50 #define HCI_COMMAND_HDR_SIZE 3 51 #define HCI_COMMAND_HDR_SIZE 3 52 53 /* HCI event macros*/ 54 #define EVT_CMD_COMPLETE_SIZE 3 55 #define EVT_CMD_STATUS_SIZE 4 56 #define EVT_CMD_COMPLETE 0x0E 57 #define EVT_CMD_STATUS 0x0F 58 59 /* use it for string lengths and buffers */ 60 #define UART_DEV_NAME_LEN 32 61 /* BD address length in format xx:xx:xx:xx:xx:xx */ 62 #define BD_ADDR_LEN 17 63 64 /* the sysfs entries with device configuration set by 65 * shared transport driver 66 */ 67 #define INSTALL_SYSFS_ENTRY "/sys/devices/platform/kim/install" 68 #define DEV_NAME_SYSFS "/sys/devices/platform/kim/dev_name" 69 #define BAUD_RATE_SYSFS "/sys/devices/platform/kim/baud_rate" 70 #define FLOW_CTRL_SYSFS "/sys/devices/platform/kim/flow_cntrl" 71 72 #define INSTALL_SYSFS_ENTRY_OLD "/sys/devices/kim/install" 73 #define DEV_NAME_SYSFS_OLD "/sys/devices/kim/dev_name" 74 #define BAUD_RATE_SYSFS_OLD "/sys/devices/kim/baud_rate" 75 #define FLOW_CTRL_SYSFS_OLD "/sys/devices/kim/flow_cntrl" 76 77 #define VERBOSE 78 /*Debug logs*/ 79 #define UIM_ERR(fmt, arg...) printf("uim:"fmt"\n" , ##arg) 80 #if defined(UIM_DEBUG) /* limited debug messages */ 81 #define UIM_START_FUNC() printf("uim: Inside %s", __FUNCTION__) 82 #define UIM_DBG(fmt, arg...) printf("uim:"fmt"\n" , ## arg) 83 #define UIM_VER(fmt, arg...) 84 #elif defined(VERBOSE) /* very verbose */ 85 #define UIM_START_FUNC() printf("uim:@ %s\n", __FUNCTION__) 86 #define UIM_DBG(fmt, arg...) printf("uim:"fmt"\n" , ## arg) 87 #define UIM_VER(fmt, arg...) printf("uim:"fmt"\n" , ## arg) 88 #else /* error msgs only */ 89 #define UIM_START_FUNC() 90 #define UIM_DBG(fmt, arg...) 91 #define UIM_VER(fmt, arg...) 92 #endif 93 94 /* HCI command header*/ 95 typedef struct { 96 uint16_t opcode; /* OCF & OGF */ 97 uint8_t plen; 98 } __attribute__ ((packed)) hci_command_hdr; 99 100 /* HCI event header*/ 101 typedef struct { 102 uint8_t evt; 103 uint8_t plen; 104 } __attribute__ ((packed)) hci_event_hdr; 105 106 /* HCI command complete event*/ 107 typedef struct { 108 uint8_t ncmd; 109 uint16_t opcode; 110 } __attribute__ ((packed)) evt_cmd_complete; 111 112 /* HCI event status*/ 113 typedef struct { 114 uint8_t status; 115 uint8_t ncmd; 116 uint16_t opcode; 117 } __attribute__ ((packed)) evt_cmd_status; 118 119 /* HCI Event structure to set the cusrom baud rate*/ 120 typedef struct { 121 uint8_t uart_prefix; 122 hci_event_hdr hci_hdr; 123 evt_cmd_complete cmd_complete; 124 uint8_t status; 125 uint8_t data[16]; 126 } __attribute__ ((packed)) command_complete_t; 127 128 /* HCI Command structure to set the cusrom baud rate*/ 129 typedef struct { 130 uint8_t uart_prefix; 131 hci_command_hdr hci_hdr; 132 uint32_t speed; 133 } __attribute__ ((packed)) uim_speed_change_cmd; 134 135 /* BD address structure to set the uim BD address*/ 136 typedef struct { 137 unsigned char b[6]; 138 } __attribute__((packed)) bdaddr_t; 139 140 /* HCI Command structure to set the uim BD address*/ 141 typedef struct { 142 uint8_t uart_prefix; 143 hci_command_hdr hci_hdr; 144 bdaddr_t addr; 145 } __attribute__ ((packed)) uim_bdaddr_change_cmd;\ 146 147 #endif /* UIM_H */ 148