| /* |
| * Shared Transport Line discipline driver Core |
| * Init Manager Module header file |
| * Copyright (C) 2009 Texas Instruments |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| * |
| */ |
| |
| #ifndef ST_KIM_H |
| #define ST_KIM_H |
| |
| #include <linux/types.h> |
| #include "st.h" |
| #include "st_core.h" |
| #include "st_ll.h" |
| #include <linux/rfkill.h> |
| |
| /* time in msec to wait for |
| * line discipline to be installed |
| */ |
| #define LDISC_TIME 500 |
| #define CMD_RESP_TIME 500 |
| #define MAKEWORD(a, b) ((unsigned short)(((unsigned char)(a)) \ |
| | ((unsigned short)((unsigned char)(b))) << 8)) |
| |
| #define GPIO_HIGH 1 |
| #define GPIO_LOW 0 |
| |
| /* the Power-On-Reset logic, requires to attempt |
| * to download firmware onto chip more than once |
| * since the self-test for chip takes a while |
| */ |
| #define POR_RETRY_COUNT 5 |
| /* |
| * legacy rfkill support where-in 3 rfkill |
| * devices are created for the 3 gpios |
| * that ST has requested |
| */ |
| #define LEGACY_RFKILL_SUPPORT |
| /* |
| * header file for ST provided by KIM |
| */ |
| struct kim_data_s { |
| long uim_pid; |
| struct platform_device *kim_pdev; |
| struct completion kim_rcvd, ldisc_installed; |
| /* MAX len of the .bts firmware script name */ |
| char resp_buffer[30]; |
| const struct firmware *fw_entry; |
| long gpios[ST_MAX]; |
| struct kobject *kim_kobj; |
| /* used by kim_int_recv to validate fw response */ |
| unsigned long rx_state; |
| unsigned long rx_count; |
| struct sk_buff *rx_skb; |
| #ifdef LEGACY_RFKILL_SUPPORT |
| struct rfkill *rfkill[ST_MAX]; |
| enum proto_type rf_protos[ST_MAX]; |
| #endif |
| struct st_data_s *core_data; |
| }; |
| |
| long st_kim_start(void); |
| long st_kim_stop(void); |
| /* |
| * called from st_tty_receive to authenticate fw_download |
| */ |
| void st_kim_recv(void *, const unsigned char *, long count); |
| |
| void st_kim_chip_toggle(enum proto_type, enum kim_gpio_state); |
| |
| void st_kim_complete(void); |
| |
| /* function called from ST KIM to ST Core, to |
| * list out the protocols registered |
| */ |
| void kim_st_list_protocols(struct st_data_s *, char *); |
| |
| /* |
| * BTS headers |
| */ |
| #define ACTION_SEND_COMMAND 1 |
| #define ACTION_WAIT_EVENT 2 |
| #define ACTION_SERIAL 3 |
| #define ACTION_DELAY 4 |
| #define ACTION_RUN_SCRIPT 5 |
| #define ACTION_REMARKS 6 |
| |
| /* |
| * * BRF Firmware header |
| * */ |
| struct bts_header { |
| uint32_t magic; |
| uint32_t version; |
| uint8_t future[24]; |
| uint8_t actions[0]; |
| } __attribute__ ((packed)); |
| |
| /* |
| * * BRF Actions structure |
| * */ |
| struct bts_action { |
| uint16_t type; |
| uint16_t size; |
| uint8_t data[0]; |
| } __attribute__ ((packed)); |
| |
| struct bts_action_send { |
| uint8_t data[0]; |
| } __attribute__ ((packed)); |
| |
| struct bts_action_wait { |
| uint32_t msec; |
| uint32_t size; |
| uint8_t data[0]; |
| } __attribute__ ((packed)); |
| |
| struct bts_action_delay { |
| uint32_t msec; |
| } __attribute__ ((packed)); |
| |
| struct bts_action_serial { |
| uint32_t baud; |
| uint32_t flow_control; |
| } __attribute__ ((packed)); |
| |
| /* for identifying the change speed HCI VS |
| * command |
| */ |
| struct hci_command { |
| uint8_t prefix; |
| uint16_t opcode; |
| uint8_t plen; |
| uint32_t speed; |
| } __attribute__ ((packed)); |
| |
| |
| #endif /* ST_KIM_H */ |