summaryrefslogtreecommitdiff
path: root/drivers/sensors/brcm/bbdpl2/bbd.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/sensors/brcm/bbdpl2/bbd.h')
-rw-r--r--drivers/sensors/brcm/bbdpl2/bbd.h109
1 files changed, 109 insertions, 0 deletions
diff --git a/drivers/sensors/brcm/bbdpl2/bbd.h b/drivers/sensors/brcm/bbdpl2/bbd.h
new file mode 100644
index 000000000000..c632390c3baa
--- /dev/null
+++ b/drivers/sensors/brcm/bbdpl2/bbd.h
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2015 Broadcom Corporation
+ *
+ * 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 (the "GPL").
+ *
+ * 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.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef __BBD_H__
+#define __BBD_H__
+
+
+#define BBD_DEVICE_MAJOR 239
+enum {
+ BBD_MINOR_SHMD = 0,
+ BBD_MINOR_SENSOR = 1,
+ BBD_MINOR_CONTROL = 2,
+ BBD_MINOR_PATCH = 3,
+ BBD_DEVICE_INDEX
+};
+
+#define BBD_MAX_DATA_SIZE 4096 /* max data size for transition */
+
+#define BBD_CTRL_RESET_REQ "BBD:RESET_REQ"
+#define ESW_CTRL_READY "ESW:READY"
+#define ESW_CTRL_NOTREADY "ESW:NOTREADY"
+#define ESW_CTRL_CRASHED "ESW:CRASHED"
+#define BBD_CTRL_DEBUG_ON "BBD:DEBUG=1"
+#define BBD_CTRL_DEBUG_OFF "BBD:DEBUG=0"
+#define SSP_DEBUG_ON "SSP:DEBUG=1"
+#define SSP_DEBUG_OFF "SSP:DEBUG=0"
+#define SSI_DEBUG_ON "SSI:DEBUG=1"
+#define SSI_DEBUG_OFF "SSI:DEBUG=0"
+#define BBD_CTRL_SSI_PATCH_BEGIN "SSI:PatchBegin"
+#define BBD_CTRL_SSI_PATCH_END "SSI:PatchEnd"
+#define GPSD_SENSOR_ON "GPSD:SENSOR_ON"
+#define GPSD_SENSOR_OFF "GPSD:SENSOR_OFF"
+
+#ifdef DEBUG_1HZ_STAT
+
+enum {
+ STAT_TX_LHD = 0,
+ STAT_TX_SSP,
+ STAT_TX_RPC,
+ STAT_TX_TL,
+ STAT_TX_SSI,
+
+ STAT_RX_SSI,
+ STAT_RX_TL,
+ STAT_RX_RPC,
+ STAT_RX_SSP,
+ STAT_RX_LHD,
+
+ STAT_MAX
+};
+
+
+struct bbd_stat {
+ bool enabled;
+
+ u64 ts_irq;
+
+ u64 min_rx_lat; /* = (u64)-1 */
+ u64 min_rx_dur; /* = (u64)-1 */
+
+ u64 max_rx_lat; /* = 0 */
+ u64 max_rx_dur; /* = 0 */
+
+ volatile u64 stat[STAT_MAX];
+
+ struct timer_list timer;
+ struct work_struct work;
+ struct workqueue_struct *workq;
+};
+
+extern struct bbd_stat stat1hz;
+
+void bbd_update_stat(int index, unsigned int count);
+void bbd_enable_stat(void);
+void bbd_disable_stat(void);
+#endif
+
+
+/** callback for incoming data from 477x to senser hub driver **/
+typedef struct {
+ int (*on_packet)(void *ssh_data, const char *buf, size_t size);
+ int (*on_packet_alarm)(void *ssh_data);
+ int (*on_control)(void *ssh_data, const char *str_ctrl);
+ int (*on_mcu_ready)(void *ssh_data, bool ready);
+} bbd_callbacks;
+
+extern void bbd_register(void* ext_data, bbd_callbacks *pcallbacks);
+extern ssize_t bbd_send_packet(unsigned char *buf, size_t size);
+extern ssize_t bbd_pull_packet(unsigned char *buf, size_t size, unsigned int timeout_ms);
+extern int bbd_mcu_reset(void);
+extern int bbd_init(struct device* dev);
+#endif /* __BBD_H__ */