diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/extcon.h | 3 | ||||
| -rw-r--r-- | include/linux/ipa.h | 142 | ||||
| -rw-r--r-- | include/linux/ipa_mhi.h | 161 | ||||
| -rw-r--r-- | include/linux/trace_events.h | 13 |
4 files changed, 174 insertions, 145 deletions
diff --git a/include/linux/extcon.h b/include/linux/extcon.h index faf9ae79ca3c..e1360198955a 100644 --- a/include/linux/extcon.h +++ b/include/linux/extcon.h @@ -58,6 +58,9 @@ /* connector orientation 0 - CC1, 1 - CC2 */ #define EXTCON_USB_CC 28 +/* connector speed 0 - High Speed, 1 - super speed */ +#define EXTCON_USB_SPEED 29 + /* Display external connector */ #define EXTCON_DISP_HDMI 40 /* High-Definition Multimedia Interface */ #define EXTCON_DISP_MHL 41 /* Mobile High-Definition Link */ diff --git a/include/linux/ipa.h b/include/linux/ipa.h index 0dd2f0bf9c23..a0dd21d215d2 100644 --- a/include/linux/ipa.h +++ b/include/linux/ipa.h @@ -1056,92 +1056,6 @@ struct ipa_wdi_buffer_info { }; /** - * enum ipa_mhi_event_type - event type for mhi callback - * - * @IPA_MHI_EVENT_READY: IPA MHI is ready and IPA uC is loaded. After getting - * this event MHI client is expected to call to ipa_mhi_start() API - * @IPA_MHI_EVENT_DATA_AVAILABLE: downlink data available on MHI channel - */ -enum ipa_mhi_event_type { - IPA_MHI_EVENT_READY, - IPA_MHI_EVENT_DATA_AVAILABLE, - IPA_MHI_EVENT_MAX, -}; - -typedef void (*mhi_client_cb)(void *priv, enum ipa_mhi_event_type event, - unsigned long data); - -/** - * struct ipa_mhi_msi_info - parameters for MSI (Message Signaled Interrupts) - * @addr_low: MSI lower base physical address - * @addr_hi: MSI higher base physical address - * @data: Data Pattern to use when generating the MSI - * @mask: Mask indicating number of messages assigned by the host to device - * - * msi value is written according to this formula: - * ((data & ~mask) | (mmio.msiVec & mask)) - */ -struct ipa_mhi_msi_info { - u32 addr_low; - u32 addr_hi; - u32 data; - u32 mask; -}; - -/** - * struct ipa_mhi_init_params - parameters for IPA MHI initialization API - * - * @msi: MSI (Message Signaled Interrupts) parameters - * @mmio_addr: MHI MMIO physical address - * @first_ch_idx: First channel ID for hardware accelerated channels. - * @first_er_idx: First event ring ID for hardware accelerated channels. - * @assert_bit40: should assert bit 40 in order to access hots space. - * if PCIe iATU is configured then not need to assert bit40 - * @notify: client callback - * @priv: client private data to be provided in client callback - * @test_mode: flag to indicate if IPA MHI is in unit test mode - */ -struct ipa_mhi_init_params { - struct ipa_mhi_msi_info msi; - u32 mmio_addr; - u32 first_ch_idx; - u32 first_er_idx; - bool assert_bit40; - mhi_client_cb notify; - void *priv; - bool test_mode; -}; - -/** - * struct ipa_mhi_start_params - parameters for IPA MHI start API - * - * @host_ctrl_addr: Base address of MHI control data structures - * @host_data_addr: Base address of MHI data buffers - * @channel_context_addr: channel context array address in host address space - * @event_context_addr: event context array address in host address space - */ -struct ipa_mhi_start_params { - u32 host_ctrl_addr; - u32 host_data_addr; - u64 channel_context_array_addr; - u64 event_context_array_addr; -}; - -/** - * struct ipa_mhi_connect_params - parameters for IPA MHI channel connect API - * - * @sys: IPA EP configuration info - * @channel_id: MHI channel id - */ -struct ipa_mhi_connect_params { - struct ipa_sys_connect_params sys; - u8 channel_id; -}; - -/* bit #40 in address should be asserted for MHI transfers over pcie */ -#define IPA_MHI_HOST_ADDR(addr) ((addr) | BIT_ULL(40)) - -/** * struct ipa_gsi_ep_config - IPA GSI endpoint configurations * * @ipa_ep_num: IPA EP pipe number @@ -1436,23 +1350,6 @@ int ipa_dma_uc_memcpy(phys_addr_t dest, phys_addr_t src, int len); void ipa_dma_destroy(void); /* - * MHI - */ -int ipa_mhi_init(struct ipa_mhi_init_params *params); - -int ipa_mhi_start(struct ipa_mhi_start_params *params); - -int ipa_mhi_connect_pipe(struct ipa_mhi_connect_params *in, u32 *clnt_hdl); - -int ipa_mhi_disconnect_pipe(u32 clnt_hdl); - -int ipa_mhi_suspend(bool force); - -int ipa_mhi_resume(void); - -void ipa_mhi_destroy(void); - -/* * mux id */ int ipa_write_qmap_id(struct ipa_ioc_write_qmapid *param_in); @@ -2112,45 +2009,6 @@ static inline void ipa_dma_destroy(void) } /* - * MHI - */ -static inline int ipa_mhi_init(struct ipa_mhi_init_params *params) -{ - return -EPERM; -} - -static inline int ipa_mhi_start(struct ipa_mhi_start_params *params) -{ - return -EPERM; -} - -static inline int ipa_mhi_connect_pipe(struct ipa_mhi_connect_params *in, - u32 *clnt_hdl) -{ - return -EPERM; -} - -static inline int ipa_mhi_disconnect_pipe(u32 clnt_hdl) -{ - return -EPERM; -} - -static inline int ipa_mhi_suspend(bool force) -{ - return -EPERM; -} - -static inline int ipa_mhi_resume(void) -{ - return -EPERM; -} - -static inline void ipa_mhi_destroy(void) -{ - return; -} - -/* * mux id */ static inline int ipa_write_qmap_id(struct ipa_ioc_write_qmapid *param_in) diff --git a/include/linux/ipa_mhi.h b/include/linux/ipa_mhi.h new file mode 100644 index 000000000000..4d3b9747a876 --- /dev/null +++ b/include/linux/ipa_mhi.h @@ -0,0 +1,161 @@ +/* Copyright (c) 2016, The Linux Foundation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only 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. + */ + +#ifndef IPA_MHI_H_ +#define IPA_MHI_H_ + +#include <linux/ipa.h> +#include <linux/types.h> + +/** + * enum ipa_mhi_event_type - event type for mhi callback + * + * @IPA_MHI_EVENT_READY: IPA MHI is ready and IPA uC is loaded. After getting + * this event MHI client is expected to call to ipa_mhi_start() API + * @IPA_MHI_EVENT_DATA_AVAILABLE: downlink data available on MHI channel + */ +enum ipa_mhi_event_type { + IPA_MHI_EVENT_READY, + IPA_MHI_EVENT_DATA_AVAILABLE, + IPA_MHI_EVENT_MAX, +}; + +typedef void (*mhi_client_cb)(void *priv, enum ipa_mhi_event_type event, + unsigned long data); + +/** + * struct ipa_mhi_msi_info - parameters for MSI (Message Signaled Interrupts) + * @addr_low: MSI lower base physical address + * @addr_hi: MSI higher base physical address + * @data: Data Pattern to use when generating the MSI + * @mask: Mask indicating number of messages assigned by the host to device + * + * msi value is written according to this formula: + * ((data & ~mask) | (mmio.msiVec & mask)) + */ +struct ipa_mhi_msi_info { + u32 addr_low; + u32 addr_hi; + u32 data; + u32 mask; +}; + +/** + * struct ipa_mhi_init_params - parameters for IPA MHI initialization API + * + * @msi: MSI (Message Signaled Interrupts) parameters + * @mmio_addr: MHI MMIO physical address + * @first_ch_idx: First channel ID for hardware accelerated channels. + * @first_er_idx: First event ring ID for hardware accelerated channels. + * @assert_bit40: should assert bit 40 in order to access host space. + * if PCIe iATU is configured then not need to assert bit40 + * @notify: client callback + * @priv: client private data to be provided in client callback + * @test_mode: flag to indicate if IPA MHI is in unit test mode + */ +struct ipa_mhi_init_params { + struct ipa_mhi_msi_info msi; + u32 mmio_addr; + u32 first_ch_idx; + u32 first_er_idx; + bool assert_bit40; + mhi_client_cb notify; + void *priv; + bool test_mode; +}; + +/** + * struct ipa_mhi_start_params - parameters for IPA MHI start API + * + * @host_ctrl_addr: Base address of MHI control data structures + * @host_data_addr: Base address of MHI data buffers + * @channel_context_addr: channel context array address in host address space + * @event_context_addr: event context array address in host address space + */ +struct ipa_mhi_start_params { + u32 host_ctrl_addr; + u32 host_data_addr; + u64 channel_context_array_addr; + u64 event_context_array_addr; +}; + +/** + * struct ipa_mhi_connect_params - parameters for IPA MHI channel connect API + * + * @sys: IPA EP configuration info + * @channel_id: MHI channel id + */ +struct ipa_mhi_connect_params { + struct ipa_sys_connect_params sys; + u8 channel_id; +}; + +/* bit #40 in address should be asserted for MHI transfers over pcie */ +#define IPA_MHI_HOST_ADDR(addr) ((addr) | BIT_ULL(40)) + +#if defined CONFIG_IPA || defined CONFIG_IPA3 + +int ipa_mhi_init(struct ipa_mhi_init_params *params); + +int ipa_mhi_start(struct ipa_mhi_start_params *params); + +int ipa_mhi_connect_pipe(struct ipa_mhi_connect_params *in, u32 *clnt_hdl); + +int ipa_mhi_disconnect_pipe(u32 clnt_hdl); + +int ipa_mhi_suspend(bool force); + +int ipa_mhi_resume(void); + +void ipa_mhi_destroy(void); + +#else /* (CONFIG_IPA || CONFIG_IPA3) */ + +static inline int ipa_mhi_init(struct ipa_mhi_init_params *params) +{ + return -EPERM; +} + +static inline int ipa_mhi_start(struct ipa_mhi_start_params *params) +{ + return -EPERM; +} + +static inline int ipa_mhi_connect_pipe(struct ipa_mhi_connect_params *in, + u32 *clnt_hdl) +{ + return -EPERM; +} + +static inline int ipa_mhi_disconnect_pipe(u32 clnt_hdl) +{ + return -EPERM; +} + +static inline int ipa_mhi_suspend(bool force) +{ + return -EPERM; +} + +static inline int ipa_mhi_resume(void) +{ + return -EPERM; +} + +static inline void ipa_mhi_destroy(void) +{ + +} + +#endif /* (CONFIG_IPA || CONFIG_IPA3) */ + +#endif /* IPA_MHI_H_ */ diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h index 429fdfc3baf5..f01c2ff9845b 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -8,6 +8,7 @@ #include <linux/hardirq.h> #include <linux/perf_event.h> #include <linux/tracepoint.h> +#include <linux/coresight-stm.h> struct trace_array; struct trace_buffer; @@ -231,7 +232,8 @@ void *trace_event_buffer_reserve(struct trace_event_buffer *fbuffer, struct trace_event_file *trace_file, unsigned long len); -void trace_event_buffer_commit(struct trace_event_buffer *fbuffer); +void trace_event_buffer_commit(struct trace_event_buffer *fbuffer, + unsigned long len); enum { TRACE_EVENT_FL_FILTERED_BIT, @@ -500,6 +502,7 @@ __event_trigger_test_discard(struct trace_event_file *file, * @entry: The event itself * @irq_flags: The state of the interrupts at the start of the event * @pc: The state of the preempt count at the start of the event. + * @len: The length of the payload data required for stm logging. * * This is a helper function to handle triggers that require data * from the event itself. It also tests the event against filters and @@ -509,12 +512,16 @@ static inline void event_trigger_unlock_commit(struct trace_event_file *file, struct ring_buffer *buffer, struct ring_buffer_event *event, - void *entry, unsigned long irq_flags, int pc) + void *entry, unsigned long irq_flags, int pc, + unsigned long len) { enum event_trigger_type tt = ETT_NONE; - if (!__event_trigger_test_discard(file, buffer, event, entry, &tt)) + if (!__event_trigger_test_discard(file, buffer, event, entry, &tt)) { + if (len) + stm_log(OST_ENTITY_FTRACE_EVENTS, entry, len); trace_buffer_unlock_commit(file->tr, buffer, event, irq_flags, pc); + } if (tt) event_triggers_post_call(file, tt); |
