151 lines
3.5 KiB
C
151 lines
3.5 KiB
C
|
/*
|
||
|
* 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 */
|