diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/bpf.h | 16 | ||||
| -rw-r--r-- | include/linux/cacheinfo.h | 1 | ||||
| -rw-r--r-- | include/linux/fsnotify.h | 7 | ||||
| -rw-r--r-- | include/linux/ktime.h | 7 | ||||
| -rw-r--r-- | include/linux/mm.h | 2 | ||||
| -rw-r--r-- | include/linux/msm_thermal.h | 3 | ||||
| -rw-r--r-- | include/linux/netfilter/x_tables.h | 10 | ||||
| -rw-r--r-- | include/linux/psci.h | 1 | ||||
| -rw-r--r-- | include/linux/sched.h | 5 | ||||
| -rw-r--r-- | include/linux/tcp.h | 7 | ||||
| -rw-r--r-- | include/linux/vermagic.h | 8 | ||||
| -rw-r--r-- | include/net/arp.h | 3 | ||||
| -rw-r--r-- | include/net/cfg80211.h | 11 | ||||
| -rw-r--r-- | include/net/cnss_utils.h | 3 | ||||
| -rw-r--r-- | include/net/ipv6.h | 1 | ||||
| -rw-r--r-- | include/net/net_namespace.h | 10 | ||||
| -rw-r--r-- | include/soc/qcom/secure_buffer.h | 1 | ||||
| -rw-r--r-- | include/sound/apr_audio-v2.h | 616 | ||||
| -rw-r--r-- | include/sound/q6core.h | 8 | ||||
| -rw-r--r-- | include/uapi/drm/drm_mode.h | 6 | ||||
| -rw-r--r-- | include/uapi/linux/eventpoll.h | 22 | ||||
| -rw-r--r-- | include/uapi/media/msm_cam_sensor.h | 2 |
22 files changed, 722 insertions, 28 deletions
diff --git a/include/linux/bpf.h b/include/linux/bpf.h index f2157159b26f..132585a7fbd8 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -31,17 +31,25 @@ struct bpf_map_ops { }; struct bpf_map { - atomic_t refcnt; + /* 1st cacheline with read-mostly members of which some + * are also accessed in fast-path (e.g. ops, max_entries). + */ + const struct bpf_map_ops *ops ____cacheline_aligned; enum bpf_map_type map_type; u32 key_size; u32 value_size; u32 max_entries; u32 pages; bool unpriv_array; - struct user_struct *user; - const struct bpf_map_ops *ops; - struct work_struct work; + /* 7 bytes hole */ + + /* 2nd cacheline with misc members to avoid false sharing + * particularly with refcounting. + */ + struct user_struct *user ____cacheline_aligned; + atomic_t refcnt; atomic_t usercnt; + struct work_struct work; }; struct bpf_map_type_list { diff --git a/include/linux/cacheinfo.h b/include/linux/cacheinfo.h index 2189935075b4..a951fd10aaaa 100644 --- a/include/linux/cacheinfo.h +++ b/include/linux/cacheinfo.h @@ -71,6 +71,7 @@ struct cpu_cacheinfo { struct cacheinfo *info_list; unsigned int num_levels; unsigned int num_leaves; + bool cpu_map_populated; }; /* diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index a7789559078b..7dba769ef934 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h @@ -230,12 +230,19 @@ static inline void fsnotify_modify(struct file *file) static inline void fsnotify_open(struct file *file) { struct path *path = &file->f_path; + struct path lower_path; struct inode *inode = file_inode(file); __u32 mask = FS_OPEN; if (S_ISDIR(inode->i_mode)) mask |= FS_ISDIR; + if (path->dentry->d_op && path->dentry->d_op->d_canonical_path) { + path->dentry->d_op->d_canonical_path(path, &lower_path); + fsnotify_parent(&lower_path, NULL, mask); + fsnotify(lower_path.dentry->d_inode, mask, &lower_path, FSNOTIFY_EVENT_PATH, NULL, 0); + path_put(&lower_path); + } fsnotify_parent(path, NULL, mask); fsnotify(inode, mask, path, FSNOTIFY_EVENT_PATH, NULL, 0); } diff --git a/include/linux/ktime.h b/include/linux/ktime.h index 2b6a204bd8d4..3ffc69ebe967 100644 --- a/include/linux/ktime.h +++ b/include/linux/ktime.h @@ -64,6 +64,13 @@ static inline ktime_t ktime_set(const s64 secs, const unsigned long nsecs) ({ (ktime_t){ .tv64 = (lhs).tv64 + (rhs).tv64 }; }) /* + * Same as ktime_add(), but avoids undefined behaviour on overflow; however, + * this means that you must check the result for overflow yourself. + */ +#define ktime_add_unsafe(lhs, rhs) \ + ({ (ktime_t){ .tv64 = (u64) (lhs).tv64 + (rhs).tv64 }; }) + +/* * Add a ktime_t variable and a scalar nanosecond value. * res = kt + nsval: */ diff --git a/include/linux/mm.h b/include/linux/mm.h index 9d83f5212ea6..d2dcc8727bc8 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1985,7 +1985,7 @@ int write_one_page(struct page *page, int wait); void task_dirty_inc(struct task_struct *tsk); /* readahead.c */ -#define VM_MAX_READAHEAD 128 /* kbytes */ +#define VM_MAX_READAHEAD 512 /* kbytes */ #define VM_MIN_READAHEAD 16 /* kbytes (includes current page) */ int force_page_cache_readahead(struct address_space *mapping, struct file *filp, diff --git a/include/linux/msm_thermal.h b/include/linux/msm_thermal.h index 33286c2d81fc..1098a0c9afaa 100644 --- a/include/linux/msm_thermal.h +++ b/include/linux/msm_thermal.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016,2018, 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 @@ -54,6 +54,7 @@ struct msm_thermal_data { uint32_t freq_limit; int32_t vdd_rstr_temp_degC; int32_t vdd_rstr_temp_hyst_degC; + int32_t vdd_rstr_sensor_id; int32_t vdd_mx_min; int32_t vdd_cx_min; int32_t psm_temp_degC; diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index 04078e8a4803..d6c53fce006b 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h @@ -243,6 +243,10 @@ int xt_check_entry_offsets(const void *base, const char *elems, unsigned int target_offset, unsigned int next_offset); +unsigned int *xt_alloc_entry_offsets(unsigned int size); +bool xt_find_jump_offset(const unsigned int *offsets, + unsigned int target, unsigned int size); + int xt_check_match(struct xt_mtchk_param *, unsigned int size, u_int8_t proto, bool inv_proto); int xt_check_target(struct xt_tgchk_param *, unsigned int size, u_int8_t proto, @@ -377,16 +381,16 @@ static inline unsigned long ifname_compare_aligned(const char *_a, * allows us to return 0 for single core systems without forcing * callers to deal with SMP vs. NONSMP issues. */ -static inline u64 xt_percpu_counter_alloc(void) +static inline unsigned long xt_percpu_counter_alloc(void) { if (nr_cpu_ids > 1) { void __percpu *res = __alloc_percpu(sizeof(struct xt_counters), sizeof(struct xt_counters)); if (res == NULL) - return (u64) -ENOMEM; + return -ENOMEM; - return (u64) (__force unsigned long) res; + return (__force unsigned long) res; } return 0; diff --git a/include/linux/psci.h b/include/linux/psci.h index 393efe2edf9a..66499dd612f5 100644 --- a/include/linux/psci.h +++ b/include/linux/psci.h @@ -28,6 +28,7 @@ int psci_cpu_init_idle(unsigned int cpu); int psci_cpu_suspend_enter(unsigned long index); struct psci_operations { + u32 (*get_version)(void); int (*cpu_suspend)(u32 state, unsigned long entry_point); int (*cpu_off)(u32 state); int (*cpu_on)(unsigned long cpuid, unsigned long entry_point); diff --git a/include/linux/sched.h b/include/linux/sched.h index d9af852bbd63..92b59a1c2010 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1517,6 +1517,10 @@ struct sched_rt_entity { unsigned short on_rq; unsigned short on_list; + /* Accesses for these must be guarded by rq->lock of the task's rq */ + bool schedtune_enqueued; + struct hrtimer schedtune_timer; + struct sched_rt_entity *back; #ifdef CONFIG_RT_GROUP_SCHED struct sched_rt_entity *parent; @@ -1539,6 +1543,7 @@ struct sched_dl_entity { u64 dl_deadline; /* relative deadline of each instance */ u64 dl_period; /* separation of two instances (period) */ u64 dl_bw; /* dl_runtime / dl_deadline */ + u64 dl_density; /* dl_runtime / dl_deadline */ /* * Actual scheduling parameters. Initialized with the values above, diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 318c24612458..2260f92f1492 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h @@ -29,9 +29,14 @@ static inline struct tcphdr *tcp_hdr(const struct sk_buff *skb) return (struct tcphdr *)skb_transport_header(skb); } +static inline unsigned int __tcp_hdrlen(const struct tcphdr *th) +{ + return th->doff * 4; +} + static inline unsigned int tcp_hdrlen(const struct sk_buff *skb) { - return tcp_hdr(skb)->doff * 4; + return __tcp_hdrlen(tcp_hdr(skb)); } static inline struct tcphdr *inner_tcp_hdr(const struct sk_buff *skb) diff --git a/include/linux/vermagic.h b/include/linux/vermagic.h index a3d04934aa96..6f8fbcf10dfb 100644 --- a/include/linux/vermagic.h +++ b/include/linux/vermagic.h @@ -24,16 +24,10 @@ #ifndef MODULE_ARCH_VERMAGIC #define MODULE_ARCH_VERMAGIC "" #endif -#ifdef RETPOLINE -#define MODULE_VERMAGIC_RETPOLINE "retpoline " -#else -#define MODULE_VERMAGIC_RETPOLINE "" -#endif #define VERMAGIC_STRING \ UTS_RELEASE " " \ MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \ MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \ - MODULE_ARCH_VERMAGIC \ - MODULE_VERMAGIC_RETPOLINE + MODULE_ARCH_VERMAGIC diff --git a/include/net/arp.h b/include/net/arp.h index 5e0f891d476c..1b3f86981757 100644 --- a/include/net/arp.h +++ b/include/net/arp.h @@ -19,6 +19,9 @@ static inline u32 arp_hashfn(const void *pkey, const struct net_device *dev, u32 static inline struct neighbour *__ipv4_neigh_lookup_noref(struct net_device *dev, u32 key) { + if (dev->flags & (IFF_LOOPBACK | IFF_POINTOPOINT)) + key = INADDR_ANY; + return ___neigh_lookup_noref(&arp_tbl, neigh_key_eq32, arp_hashfn, &key, dev); } diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 1997eed64c68..07f27b15e6fe 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -82,6 +82,9 @@ struct wiphy; /* Indicate support for including KEK length in rekey data */ #define CFG80211_REKEY_DATA_KEK_LEN 1 +/* Indicate support for regulatory update sync event */ +#define CFG80211_REG_UPDATE_SYNC_EVENT 1 + /* * wireless hardware capability structures */ @@ -5771,6 +5774,14 @@ void cfg80211_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info); */ void cfg80211_ap_stopped(struct net_device *netdev, gfp_t gfp); +/** + * cfg80211_send_reg_change_event - notify user-space of regulatory change + * @request: regulatory request + * @wiphy: the wiphy to use + */ +void cfg80211_send_reg_change_event(struct regulatory_request *request, + struct wiphy *wiphy); + /* Logging, debugging and troubleshooting/diagnostic helpers. */ /* wiphy_printk helpers, similar to dev_printk */ diff --git a/include/net/cnss_utils.h b/include/net/cnss_utils.h index 6ff0fd0907f8..77d14d14502c 100644 --- a/include/net/cnss_utils.h +++ b/include/net/cnss_utils.h @@ -33,6 +33,9 @@ extern int cnss_utils_get_driver_load_cnt(struct device *dev); extern void cnss_utils_increment_driver_load_cnt(struct device *dev); extern int cnss_utils_set_wlan_mac_address(const u8 *in, uint32_t len); extern u8 *cnss_utils_get_wlan_mac_address(struct device *dev, uint32_t *num); +extern int cnss_utils_set_wlan_derived_mac_address(const u8 *in, uint32_t len); +extern u8 *cnss_utils_get_wlan_derived_mac_address(struct device *dev, + uint32_t *num); extern void cnss_utils_set_cc_source(struct device *dev, enum cnss_utils_cc_src cc_source); extern enum cnss_utils_cc_src cnss_utils_get_cc_source(struct device *dev); diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 7a8066b90289..84f0d0602433 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -281,6 +281,7 @@ int ipv6_flowlabel_opt_get(struct sock *sk, struct in6_flowlabel_req *freq, int flags); int ip6_flowlabel_init(void); void ip6_flowlabel_cleanup(void); +bool ip6_autoflowlabel(struct net *net, const struct ipv6_pinfo *np); static inline void fl6_sock_release(struct ip6_flowlabel *fl) { diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 2dcea635ecce..93328c61934a 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h @@ -209,6 +209,11 @@ int net_eq(const struct net *net1, const struct net *net2) return net1 == net2; } +static inline int check_net(const struct net *net) +{ + return atomic_read(&net->count) != 0; +} + void net_drop_ns(void *); #else @@ -233,6 +238,11 @@ int net_eq(const struct net *net1, const struct net *net2) return 1; } +static inline int check_net(const struct net *net) +{ + return 1; +} + #define net_drop_ns NULL #endif diff --git a/include/soc/qcom/secure_buffer.h b/include/soc/qcom/secure_buffer.h index b5e71387a6fc..1e22937b61bb 100644 --- a/include/soc/qcom/secure_buffer.h +++ b/include/soc/qcom/secure_buffer.h @@ -38,6 +38,7 @@ enum vmid { VMID_WLAN = 0x18, VMID_WLAN_CE = 0x19, VMID_CP_CAMERA_PREVIEW = 0x1D, + VMID_CP_SPSS_SP_SHARED = 0x22, VMID_LAST, VMID_INVAL = -1 }; diff --git a/include/sound/apr_audio-v2.h b/include/sound/apr_audio-v2.h index ca2ceff39f2f..cd85a4a40d3a 100644 --- a/include/sound/apr_audio-v2.h +++ b/include/sound/apr_audio-v2.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2018, 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 @@ -214,6 +214,16 @@ struct adm_cmd_matrix_map_routings_v5 { */ #define ADM_CMD_DEVICE_OPEN_V6 0x00010356 +/* This command allows a client to open a COPP/Voice Proc the +* way as ADM_CMD_DEVICE_OPEN_V8 but supports any number channel +* of configuration. +* +* @return +* #ADM_CMDRSP_DEVICE_OPEN_V8 with the resulting status and +* COPP ID. +*/ +#define ADM_CMD_DEVICE_OPEN_V8 0x0001036A + /* Definition for a low latency stream session. */ #define ADM_LOW_LATENCY_DEVICE_SESSION 0x2000 @@ -492,6 +502,179 @@ struct adm_cmd_device_open_v6 { */ } __packed; +/* ADM device open command payload of the +* #ADM_CMD_DEVICE_OPEN_V8 command. +*/ +struct adm_cmd_device_open_v8 { + struct apr_hdr hdr; + u16 flags; +/* Bit width Native mode enabled : 11th bit of flag parameter +* If 11th bit of flag is set then that means matrix mixer will be +* running in native mode for bit width for this device session. +* +* Channel Native mode enabled : 12th bit of flag parameter +* If 12th bit of flag is set then that means matrix mixer will be +* running in native mode for channel configuration for this device session. +* All other bits are reserved; clients must set them to 0. +**/ + u16 mode_of_operation; +/* Specifies whether the COPP must be opened on the Tx or Rx + * path. Use the ADM_CMD_COPP_OPEN_MODE_OF_OPERATION_* macros for + * supported values and interpretation. + * Supported values: + * - 0x1 -- Rx path COPP + * - 0x2 -- Tx path live COPP + * - 0x3 -- Tx path nonlive COPP + * Live connections cause sample discarding in the Tx device + * matrix if the destination output ports do not pull them + * fast enough. Nonlive connections queue the samples + * indefinitely. + */ + u32 topology_id; + /* Audio COPP topology ID; 32-bit GUID. */ + + + u16 endpoint_id_1; +/* Logical and physical endpoint ID of the audio path. + * If the ID is a voice processor Tx block, it receives near + * samples. Supported values: Any pseudoport, AFE Rx port, + * or AFE Tx port For a list of valid IDs, refer to + * @xhyperref{Q4,[Q4]}. + * Q4 = Hexagon Multimedia: AFE Interface Specification + */ + + u16 endpoint_id_2; +/* Logical and physical endpoint ID 2 for a voice processor + * Tx block. + * This is not applicable to audio COPP. + * Supported values: + * - AFE Rx port + * - 0xFFFF -- Endpoint 2 is unavailable and the voice + * processor Tx + * block ignores this endpoint + * When the voice processor Tx block is created on the audio + * record path, + * it can receive far-end samples from an AFE Rx port if the + * voice call + * is active. The ID of the AFE port is provided in this + * field. + * For a list of valid IDs, refer @xhyperref{Q4,[Q4]}. + */ + +/* + * Logical and physical endpoint ID of the audio path. + * This indicated afe rx port in ADM loopback use cases. + * In all other use cases this should be set to 0xffff + */ + u16 endpoint_id_3; + u16 reserved; + + u16 dev_num_channel; +/* Number of channels the audio COPP sends to/receives from + * the endpoint. + * Supported values: 1 to 32. + * The value is ignored for the voice processor Tx block, + * where channel + * configuration is derived from the topology ID. + */ + + u16 bit_width; +/* Bit width (in bits) that the audio COPP sends to/receives + * from the + * endpoint. The value is ignored for the voice processing + * Tx block, + * where the PCM width is 16 bits. + */ + + u32 sample_rate; +/* Sampling rate at which the audio COPP/voice processor + * Tx block + * interfaces with the endpoint. + * Supported values for voice processor Tx: 8000, 16000, + * 48000 Hz + * Supported values for audio COPP: >0 and <=192 kHz + */ + + u8 dev_channel_mapping[32]; +/* Array of channel mapping of buffers that the audio COPP + * sends to the endpoint. Channel[i] mapping describes channel + * I inside the buffer, where 0 < i < dev_num_channel. + * This value is relevant only for an audio Rx COPP. + * For the voice processor block and Tx audio block, this field + * is set to zero and is ignored. + */ + + u16 dev_num_channel_eid2; +/* Number of channels the audio COPP sends to/receives from + * the endpoint. + * Supported values: 1 to 32. + * The value is ignored for the voice processor Tx block, + * where channel + * configuration is derived from the topology ID. + */ + + u16 bit_width_eid2; +/* Bit width (in bits) that the audio COPP sends to/receives + * from the + * endpoint. The value is ignored for the voice processing + * Tx block, + * where the PCM width is 16 bits. + */ + + u32 sample_rate_eid2; +/* Sampling rate at which the audio COPP/voice processor + * Tx block + * interfaces with the endpoint. + * Supported values for voice processor Tx: 8000, 16000, + * 48000 Hz + * Supported values for audio COPP: >0 and <=192 kHz + */ + + u8 dev_channel_mapping_eid2[32]; +/* Array of channel mapping of buffers that the audio COPP + * sends to the endpoint. Channel[i] mapping describes channel + * I inside the buffer, where 0 < i < dev_num_channel. + * This value is relevant only for an audio Rx COPP. + * For the voice processor block and Tx audio block, this field + * is set to zero and is ignored. + */ + + u16 dev_num_channel_eid3; +/* Number of channels the audio COPP sends to/receives from + * the endpoint. + * Supported values: 1 to 32. + * The value is ignored for the voice processor Tx block, + * where channel + * configuration is derived from the topology ID. + */ + + u16 bit_width_eid3; +/* Bit width (in bits) that the audio COPP sends to/receives + * from the + * endpoint. The value is ignored for the voice processing + * Tx block, + * where the PCM width is 16 bits. + */ + + u32 sample_rate_eid3; +/* Sampling rate at which the audio COPP/voice processor + * Tx block + * interfaces with the endpoint. + * Supported values for voice processor Tx: 8000, 16000, + * 48000 Hz + * Supported values for audio COPP: >0 and <=192 kHz + */ + + u8 dev_channel_mapping_eid3[32]; +/* Array of channel mapping of buffers that the audio COPP + * sends to the endpoint. Channel[i] mapping describes channel + * I inside the buffer, where 0 < i < dev_num_channel. + * This value is relevant only for an audio Rx COPP. + * For the voice processor block and Tx audio block, this field + * is set to zero and is ignored. + */ +} __packed; + /* * This command allows the client to close a COPP and disconnect * the device session. @@ -661,6 +844,10 @@ struct adm_cmd_rsp_device_open_v5 { */ #define ADM_CMDRSP_DEVICE_OPEN_V6 0x00010357 +/* Returns the status and COPP ID to an #ADM_CMD_DEVICE_OPEN_V8 command. + */ +#define ADM_CMDRSP_DEVICE_OPEN_V8 0x0001036B + /* Payload of the #ADM_CMDRSP_DEVICE_OPEN_V6 message, * which returns the * status and COPP ID to an #ADM_CMD_DEVICE_OPEN_V6 command @@ -863,6 +1050,12 @@ struct audproc_enable_param_t { */ #define ADM_CMD_MATRIX_RAMP_GAINS_V5 0x0001032C +/* + * Allows a client to control the gains on various session-to-COPP paths. + * Maximum support 32 channels + */ +#define ADM_CMD_MATRIX_RAMP_GAINS_V7 0x0001036C + /* Indicates that the target gain in the * current adm_session_copp_gain_v5 * structure is to be applied to all @@ -975,12 +1168,97 @@ struct adm_session_copp_gain_v5 { /* Target linear gain for channel 8 in Q13 format; */ } __packed; +/* Payload of the #ADM_CMD_MATRIX_RAMP_GAINS_V7 command. + * Immediately following this structure are num_gains of the + * adm_session_copp_gain_v5structure. + */ +struct adm_cmd_matrix_ramp_gains_v7 { + struct apr_hdr hdr; + u32 matrix_id; +/* Specifies whether the matrix ID is Audio Rx (0) or Audio Tx (1). + * Use the ADM_MATRIX_ID_AUDIO_RX or ADM_MATRIX_ID_AUDIOX + * macros to set this field. +*/ + + u16 num_gains; + /* Number of gains being applied. */ + + u16 reserved_for_align; + /* Reserved. This field must be set to zero.*/ +} __packed; + +/* Session-to-COPP path gain structure, used by the + * #ADM_CMD_MATRIX_RAMP_GAINS_V7 command. + * This structure specifies the target + * gain (per channel) that must be applied + * to a particular session-to-COPP path in + * the audio matrix. The structure can + * also be used to apply the gain globally + * to all session-to-COPP paths that + * exist for the given session. + * The aDSP uses device channel mapping to + * determine which channel gains to + * use from this command. For example, + * if the device is configured as stereo, + * the aDSP uses only target_gain_ch_1 and + * target_gain_ch_2, and it ignores + * the others. + */ +struct adm_session_copp_gain_v7 { + u16 session_id; +/* Handle of the ASM session. + * Supported values: 1 to 8. + */ + + u16 copp_id; +/* Handle of the COPP. Gain will be applied on the Session ID + * COPP ID path. + */ + + u16 ramp_duration; +/* Duration (in milliseconds) of the ramp over + * which target gains are + * to be applied. Use + * #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_DURATION_IMMEDIATE + * to indicate that gain must be applied immediately. + */ + + u16 step_duration; +/* Duration (in milliseconds) of each step in the ramp. + * This parameter is ignored if ramp_duration is equal to + * #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_DURATION_IMMEDIATE. + * Supported value: 1 + */ + + u16 ramp_curve; +/* Type of ramping curve. + * Supported value: #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_CURVE_LINEAR + */ + + u16 stream_type; +/* Type of stream_type. + * Supported value: #STREAM_TYPE_ASM STREAM_TYPE_LSM + */ + u16 num_channels; +/* Number of channels on which gain needs to be applied. + * Supported value: 1 to 32. + */ + u16 reserved_for_align; + /* Reserved. This field must be set to zero. */ +} __packed; + /* Allows to set mute/unmute on various session-to-COPP paths. * For every session-to-COPP path (stream-device interconnection), * mute/unmute can be set individually on the output channels. */ #define ADM_CMD_MATRIX_MUTE_V5 0x0001032D +/* Allows to set mute/unmute on various session-to-COPP paths. + * For every session-to-COPP path (stream-device interconnection), + * mute/unmute can be set individually on the output channels. + */ +#define ADM_CMD_MATRIX_MUTE_V7 0x0001036D + /* Indicates that mute/unmute in the * current adm_session_copp_mute_v5structure * is to be applied to all the session-to-COPP @@ -1046,6 +1324,48 @@ struct adm_cmd_matrix_mute_v5 { /* Clients must set this field to zero.*/ } __packed; +/* Payload of the #ADM_CMD_MATRIX_MUTE_V7 command*/ +struct adm_cmd_matrix_mute_v7 { + struct apr_hdr hdr; + u32 matrix_id; +/* Specifies whether the matrix ID is Audio Rx (0) or Audio Tx (1). + * Use the ADM_MATRIX_ID_AUDIO_RX or ADM_MATRIX_ID_AUDIOX + * macros to set this field. + */ + + u16 session_id; +/* Handle of the ASM session. + * Supported values: 1 to . + */ + + u16 copp_id; +/* Handle of the COPP. + * Use ADM_CMD_MATRIX_MUTE_COPP_ID_ALL_CONNECTED_COPPS + * to indicate that mute/unmute must be applied to + * all the COPPs connected to session_id. + * Supported values: + * - 0xFFFF -- Apply mute/unmute to all connected COPPs + * - Other values -- Valid COPP ID + */ + + u16 ramp_duration; +/* Duration (in milliseconds) of the ramp over + * which target gains are + * to be applied. Use + * #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_DURATION_IMMEDIATE + * to indicate that gain must be applied immediately. + */ + + u16 stream_type; +/* Specify whether the stream type is connectedon the ASM or LSM + * Supported value: 1 + */ + u16 num_channels; +/* Number of channels on which gain needs to be applied + * Supported value: 1 to 32 + */ +} __packed; + #define ASM_PARAM_ID_AAC_STEREO_MIX_COEFF_SELECTION_FLAG_V2 (0x00010DD8) struct asm_aac_stereo_mix_coeff_selection_param_v2 { @@ -2646,6 +2966,8 @@ struct afe_param_id_internal_bt_fm_cfg { #define AFE_PORT_MAX_AUDIO_CHAN_CNT 0x8 +#define AFE_PORT_MAX_AUDIO_CHAN_CNT_V2 0x20 + /* Payload of the #AFE_PORT_CMD_SLIMBUS_CONFIG command's SLIMbus * port configuration parameter. */ @@ -3075,6 +3397,11 @@ struct afe_param_id_tdm_cfg { */ #define AFE_API_VERSION_SLOT_MAPPING_CONFIG 0x1 +/** Version information used to handle future additions to slot mapping +* configuration support 32 channels. +*/ +#define AFE_API_VERSION_SLOT_MAPPING_CONFIG_V2 0x2 + /** Data align type */ #define AFE_SLOT_MAPPING_DATA_ALIGN_MSB 0 #define AFE_SLOT_MAPPING_DATA_ALIGN_LSB 1 @@ -3118,6 +3445,49 @@ struct afe_param_id_slot_mapping_cfg { @values, in byte*/ } __packed; +/* Payload of the AFE_PARAM_ID_PORT_SLOT_MAPPING_CONFIG_V2 +* command's TDM configuration parameter. +*/ +struct afe_param_id_slot_mapping_cfg_v2 { + u32 minor_version; + /**< Minor version used for tracking TDM slot configuration. + * @values #AFE_API_VERSION_TDM_SLOT_CONFIG + */ + + u16 num_channel; + /**< number of channel of the audio sample. + * @values 1, 2, 4, 6, 8, 16, 32 @tablebulletend + */ + + u16 bitwidth; + /**< Slot bit width for each channel + * @values 16, 24, 32 + */ + + u32 data_align_type; + /**< indicate how data packed from slot_offset for 32 slot bit width + * in case of sample bit width is 24. + * @values + * #AFE_SLOT_MAPPING_DATA_ALIGN_MSB + * #AFE_SLOT_MAPPING_DATA_ALIGN_LSB + */ + + u16 offset[AFE_PORT_MAX_AUDIO_CHAN_CNT_V2]; + /**< Array of the slot mapping start offset in bytes for this frame. + * The bytes is counted from 0. The 0 is mapped to the 1st byte + * in or out of the digital serial data line this sub-frame belong to. + * slot_offset[] setting is per-channel based. + * The max num of channel supported is 8. + * The valid offset value must always be continuly placed in + * from index 0. + * Set offset as AFE_SLOT_MAPPING_OFFSET_INVALID for not used arrays. + * If "slot_bitwidth_per_channel" is 32 and "sample_bitwidth" is 24, + * "data_align_type" is used to indicate how 24 bit sample data in + * aligning with 32 bit slot width per-channel. + * @values, in byte + */ +} __packed; + /** ID of the parameter used by #AFE_MODULE_TDM to configure the customer TDM header. #AFE_PORT_CMD_SET_PARAM can use this parameter ID. */ @@ -3183,6 +3553,7 @@ struct afe_param_id_custom_tdm_header_cfg { struct afe_tdm_port_config { struct afe_param_id_tdm_cfg tdm; struct afe_param_id_slot_mapping_cfg slot_mapping; + struct afe_param_id_slot_mapping_cfg_v2 slot_mapping_v2; struct afe_param_id_custom_tdm_header_cfg custom_tdm_header; } __packed; @@ -4139,6 +4510,23 @@ struct asm_stream_pan_ctrl_params { uint32_t gain[64]; } __packed; +struct adm_matrix_ramp_gains_params { + uint16_t session_id; + uint16_t be_id; + uint16_t num_gains; + uint16_t path; + uint16_t channels; + uint16_t gain_value[32]; +} __packed; + +struct adm_matrix_mute_params { + uint16_t session_id; + uint16_t be_id; + uint16_t channels; + uint16_t path; + uint8_t mute_flag[32]; +} __packed; + #define ASM_END_POINT_DEVICE_MATRIX 0 #define PCM_CHANNEL_NULL 0 @@ -4191,7 +4579,69 @@ struct asm_stream_pan_ctrl_params { /* Rear right of center. */ #define PCM_CHANNEL_RRC 16 -#define PCM_FORMAT_MAX_NUM_CHANNEL 8 +/* Second low frequency channel. */ +#define PCM_CHANNEL_LFE2 17 + +/* Side left channel. */ +#define PCM_CHANNEL_SL 18 + +/* Side right channel. */ +#define PCM_CHANNEL_SR 19 + +/* Top front left channel. */ +#define PCM_CHANNEL_TFL 20 + +/* Left vertical height channel. */ +#define PCM_CHANNEL_LVH 20 + +/* Top front right channel. */ +#define PCM_CHANNEL_TFR 21 + +/* Right vertical height channel. */ +#define PCM_CHANNEL_RVH 21 + +/* Top center channel. */ +#define PCM_CHANNEL_TC 22 + +/* Top back left channel. */ +#define PCM_CHANNEL_TBL 23 + +/* Top back right channel. */ +#define PCM_CHANNEL_TBR 24 + +/* Top side left channel. */ +#define PCM_CHANNEL_TSL 25 + +/* Top side right channel. */ +#define PCM_CHANNEL_TSR 26 + +/* Top back center channel. */ +#define PCM_CHANNEL_TBC 27 + +/* Bottom front center channel. */ +#define PCM_CHANNEL_BFC 28 + +/* Bottom front left channel. */ +#define PCM_CHANNEL_BFL 29 + +/* Bottom front right channel. */ +#define PCM_CHANNEL_BFR 30 + +/* Left wide channel. */ +#define PCM_CHANNEL_LW 31 + +/* Right wide channel. */ +#define PCM_CHANNEL_RW 32 + +/* Left side direct channel. */ +#define PCM_CHANNEL_LSD 33 + +/* Right side direct channel. */ +#define PCM_CHANNEL_RSD 34 + +#define PCM_FORMAT_MAX_NUM_CHANNEL 8 + +#define PCM_FORMAT_MAX_NUM_CHANNEL_V2 32 #define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V2 0x00010DA5 @@ -4199,6 +4649,8 @@ struct asm_stream_pan_ctrl_params { #define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V4 0x0001320C +#define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V5 0x00013222 + #define ASM_MEDIA_FMT_EVRCB_FS 0x00010BEF #define ASM_MEDIA_FMT_EVRCWB_FS 0x00010BF0 @@ -4413,6 +4865,56 @@ struct asm_multi_channel_pcm_fmt_blk_v4 { */ } __packed; +struct asm_multi_channel_pcm_fmt_blk_v5 { + uint16_t num_channels; +/* + * Number of channels + * Supported values: 1 to 32 + */ + + uint16_t bits_per_sample; +/* + * Number of bits per sample per channel + * Supported values: 16, 24, 32 + */ + + uint32_t sample_rate; +/* + * Number of samples per second + * Supported values: 2000 to 48000, 96000,192000 Hz + */ + + uint16_t is_signed; +/* Flag that indicates that PCM samples are signed (1) */ + + uint16_t sample_word_size; +/* + * Size in bits of the word that holds a sample of a channel. + * Supported values: 12,24,32 + */ + uint16_t endianness; +/* + * Flag to indicate the endianness of the pcm sample + * Supported values: 0 - Little endian (all other formats) + * 1 - Big endian (AIFF) + */ + uint16_t mode; +/* + * Mode to provide additional info about the pcm input data. + * Supported values: 0 - Default QFs (Q15 for 16b, Q23 for packed 24b, + * Q31 for unpacked 24b or 32b) + * 15 - for 16 bit + * 23 - for 24b packed or 8.24 format + * 31 - for 24b unpacked or 32bit + */ + + uint8_t channel_mapping[PCM_FORMAT_MAX_NUM_CHANNEL_V2]; +/* + * Each element, i, in the array describes channel i inside the buffer where + * 0 <= i < num_channels. Unused channels are set to 0. + */ +} __packed; + /* * Payload of the multichannel PCM configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V3 media format. @@ -4433,6 +4935,16 @@ struct asm_multi_channel_pcm_fmt_blk_param_v4 { struct asm_multi_channel_pcm_fmt_blk_v4 param; } __packed; +/* + * Payload of the multichannel PCM configuration parameters in + * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V5 media format. + */ +struct asm_multi_channel_pcm_fmt_blk_param_v5 { + struct apr_hdr hdr; + struct asm_data_cmd_media_fmt_update_v2 fmt_blk; + struct asm_multi_channel_pcm_fmt_blk_v5 param; +} __packed; + struct asm_stream_cmd_set_encdec_param { u32 param_id; /* ID of the parameter. */ @@ -4470,6 +4982,78 @@ struct asm_dec_ddp_endp_param_v2 { /* * Payload of the multichannel PCM encoder configuration parameters in + * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V5 media format. + */ +struct asm_multi_channel_pcm_enc_cfg_v5 { + struct apr_hdr hdr; + struct asm_stream_cmd_set_encdec_param encdec; + struct asm_enc_cfg_blk_param_v2 encblk; + uint16_t num_channels; + /* + * Number of PCM channels. + * @values + * - 0 -- Native mode + * - 1 -- 8 channels + * Native mode indicates that encoding must be performed with the number + * of channels at the input. + */ + uint16_t bits_per_sample; + /* + * Number of bits per sample per channel. + * @values 16, 24 + */ + uint32_t sample_rate; + /* + * Number of samples per second. + * @values 0, 8000 to 48000 Hz + * A value of 0 indicates the native sampling rate. Encoding is + * performed at the input sampling rate. + */ + uint16_t is_signed; + /* + * Flag that indicates the PCM samples are signed (1). Currently, only + * signed PCM samples are supported. + */ + uint16_t sample_word_size; + /* + * The size in bits of the word that holds a sample of a channel. + * @values 16, 24, 32 + * 16-bit samples are always placed in 16-bit words: + * sample_word_size = 1. + * 24-bit samples can be placed in 32-bit words or in consecutive + * 24-bit words. + * - If sample_word_size = 32, 24-bit samples are placed in the + * most significant 24 bits of a 32-bit word. + * - If sample_word_size = 24, 24-bit samples are placed in + * 24-bit words. @tablebulletend + */ + uint16_t endianness; + /* + * Flag to indicate the endianness of the pcm sample + * Supported values: 0 - Little endian (all other formats) + * 1 - Big endian (AIFF) + */ + uint16_t mode; + /* + * Mode to provide additional info about the pcm input data. + * Supported values: 0 - Default QFs (Q15 for 16b, Q23 for packed 24b, + * Q31 for unpacked 24b or 32b) + * 15 - for 16 bit + * 23 - for 24b packed or 8.24 format + */ + uint8_t channel_mapping[PCM_FORMAT_MAX_NUM_CHANNEL_V2]; + /* + * Channel mapping array expected at the encoder output. + * Channel[i] mapping describes channel i inside the buffer, where + * 0 @le i < num_channels. All valid used channels must be present at + * the beginning of the array. + * If Native mode is set for the channels, this field is ignored. + * @values See Section @xref{dox:PcmChannelDefs} + */ +} __packed; + +/* + * Payload of the multichannel PCM encoder configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V4 media format. */ @@ -7016,9 +7600,11 @@ struct asm_ac3_generic_param { #define ASM_PARAM_ID_DEC_OUTPUT_CHAN_MAP 0x00010D82 -/* Maximum number of decoder output channels.*/ +/* Maximum number of decoder output channels.*/ #define MAX_CHAN_MAP_CHANNELS 16 +#define MAX_CHAN_MAP_CHANNELS_V2 32 + /* Structure for decoder output channel mapping. */ /* Payload of the #ASM_PARAM_ID_DEC_OUTPUT_CHAN_MAP parameter in the @@ -7038,6 +7624,23 @@ struct asm_dec_out_chan_map_param { u8 channel_mapping[MAX_CHAN_MAP_CHANNELS]; } __packed; +/* Payload of the #ASM_PARAM_ID_DEC_OUTPUT_CHAN_MAP parameter in the + * #ASM_STREAM_CMD_SET_ENCDEC_PARAM command. + */ +struct asm_dec_out_chan_map_param_v2 { + struct apr_hdr hdr; + struct asm_stream_cmd_set_encdec_param encdec; + u32 num_channels; +/* Number of decoder output channels. + * Supported values: 0 to #MAX_CHAN_MAP_CHANNELS_V2 + * + * A value of 0 indicates native channel mapping, which is valid + * only for NT mode. This means the output of the decoder is to be + * preserved as is. + */ + u8 channel_mapping[MAX_CHAN_MAP_CHANNELS_V2]; +} __packed; + #define ASM_STREAM_CMD_OPEN_WRITE_COMPRESSED 0x00010D84 /* Bitmask for the IEC 61937 enable flag.*/ @@ -8728,6 +9331,8 @@ struct asm_eq_params { #define VSS_ICOMMON_CMD_GET_PARAM_V3 0x00013246 #define VSS_ICOMMON_RSP_GET_PARAM_V3 0x00013247 +#define VSS_MAX_AVCS_NUM_SERVICES 25 + /** ID of the Bass Boost module. This module supports the following parameter IDs: - #AUDPROC_PARAM_ID_BASS_BOOST_ENABLE @@ -9371,6 +9976,7 @@ struct asm_aptx_dec_fmt_blk_v2 { #define AVCS_CMDRSP_GET_FWK_VERSION (0x0001292D) #define AVCS_SERVICE_ID_ALL (0xFFFFFFFF) +#define APRV2_IDS_SERVICE_ID_ADSP_CVP_V (0xB) struct avcs_get_fwk_version { /* @@ -9429,9 +10035,9 @@ struct avs_svc_api_info { }; struct avcs_fwk_ver_info { - struct avcs_get_fwk_version avcs_build; + struct avcs_get_fwk_version avcs_fwk_version; struct avs_svc_api_info services[0]; -}; +} __packed; /* LSM Specific */ #define VW_FEAT_DIM (39) diff --git a/include/sound/q6core.h b/include/sound/q6core.h index 0ce171973cb5..e70e4ba9b968 100644 --- a/include/sound/q6core.h +++ b/include/sound/q6core.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2018, 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 @@ -24,8 +24,10 @@ bool q6core_is_adsp_ready(void); int q6core_add_remove_pool_pages(phys_addr_t buf_add, uint32_t bufsz, uint32_t mempool_id, bool add_pages); -int q6core_get_avcs_fwk_ver_info(uint32_t service_id, - struct avcs_fwk_ver_info *ver_info); +int q6core_get_service_version(uint32_t service_id, + struct avcs_fwk_ver_info *ver_info, + size_t size); +size_t q6core_get_fwk_version_size(uint32_t service_id); #define ADSP_CMD_SET_DTS_EAGLE_DATA_ID 0x00012919 #define DTS_EAGLE_LICENSE_ID 0x00028346 diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h index f693b5b5b7ab..a73de08c6584 100644 --- a/include/uapi/drm/drm_mode.h +++ b/include/uapi/drm/drm_mode.h @@ -84,6 +84,8 @@ extern "C" { #define DRM_MODE_PICTURE_ASPECT_NONE 0 #define DRM_MODE_PICTURE_ASPECT_4_3 1 #define DRM_MODE_PICTURE_ASPECT_16_9 2 +#define DRM_MODE_PICTURE_ASPECT_64_27 3 +#define DRM_MODE_PICTURE_ASPECT_256_135 4 /* Aspect ratio flag bitmask (4 bits 27:24) */ #define DRM_MODE_FLAG_PIC_AR_MASK (0x0F<<24) @@ -93,6 +95,10 @@ extern "C" { (DRM_MODE_PICTURE_ASPECT_4_3<<24) #define DRM_MODE_FLAG_PIC_AR_16_9 \ (DRM_MODE_PICTURE_ASPECT_16_9<<24) +#define DRM_MODE_FLAG_PIC_AR_64_27 \ + (DRM_MODE_PICTURE_ASPECT_64_27<<24) +#define DRM_MODE_FLAG_PIC_AR_256_135 \ + (DRM_MODE_PICTURE_ASPECT_256_135<<24) /* DPMS flags */ /* bit compatible with the xorg definitions. */ diff --git a/include/uapi/linux/eventpoll.h b/include/uapi/linux/eventpoll.h index 47d6342b1c48..6016e9ed0960 100644 --- a/include/uapi/linux/eventpoll.h +++ b/include/uapi/linux/eventpoll.h @@ -26,6 +26,22 @@ #define EPOLL_CTL_DEL 2 #define EPOLL_CTL_MOD 3 +/* Epoll event masks */ +#define EPOLLIN 0x00000001 +#define EPOLLPRI 0x00000002 +#define EPOLLOUT 0x00000004 +#define EPOLLERR 0x00000008 +#define EPOLLHUP 0x00000010 +#define EPOLLRDNORM 0x00000040 +#define EPOLLRDBAND 0x00000080 +#define EPOLLWRNORM 0x00000100 +#define EPOLLWRBAND 0x00000200 +#define EPOLLMSG 0x00000400 +#define EPOLLRDHUP 0x00002000 + +/* Set exclusive wakeup mode for the target file descriptor */ +#define EPOLLEXCLUSIVE (1U << 28) + /* * Request the handling of system wakeup events so as to prevent system suspends * from happening while those events are being processed. @@ -36,13 +52,13 @@ * * Requires CAP_BLOCK_SUSPEND */ -#define EPOLLWAKEUP (1 << 29) +#define EPOLLWAKEUP (1U << 29) /* Set the One Shot behaviour for the target file descriptor */ -#define EPOLLONESHOT (1 << 30) +#define EPOLLONESHOT (1U << 30) /* Set the Edge Triggered behaviour for the target file descriptor */ -#define EPOLLET (1 << 31) +#define EPOLLET (1U << 31) /* * On x86-64 make the 64bit structure have the same alignment as the diff --git a/include/uapi/media/msm_cam_sensor.h b/include/uapi/media/msm_cam_sensor.h index 0ec18d663cff..e4b4554dd690 100644 --- a/include/uapi/media/msm_cam_sensor.h +++ b/include/uapi/media/msm_cam_sensor.h @@ -39,6 +39,8 @@ #define MSM_V4L2_PIX_FMT_META v4l2_fourcc('M', 'E', 'T', 'A') /* META */ #define MSM_V4L2_PIX_FMT_META10 v4l2_fourcc('M', 'E', '1', '0') /* META10 */ +#define MSM_V4L2_PIX_FMT_META12 v4l2_fourcc('M', 'E', '1', '2') /* META12 */ + #define MSM_V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4') /* 14 BGBG.. GRGR.. */ #define MSM_V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4') |
