summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/alarmtimer.h5
-rw-r--r--include/linux/mm.h15
-rw-r--r--include/linux/perf_event.h2
-rw-r--r--include/linux/posix-timers.h4
-rw-r--r--include/linux/sched.h7
-rw-r--r--include/linux/usb.h4
-rw-r--r--include/net/neighbour.h28
-rw-r--r--include/sound/apr_audio-v2.h138
-rw-r--r--include/sound/pcm_params.h4
-rw-r--r--include/sound/q6afe-v2.h70
-rw-r--r--include/uapi/linux/nl80211.h44
-rw-r--r--include/uapi/linux/time.h1
12 files changed, 296 insertions, 26 deletions
diff --git a/include/linux/alarmtimer.h b/include/linux/alarmtimer.h
index 38a75b5d4792..9333ae59c8c8 100644
--- a/include/linux/alarmtimer.h
+++ b/include/linux/alarmtimer.h
@@ -5,12 +5,10 @@
#include <linux/hrtimer.h>
#include <linux/timerqueue.h>
#include <linux/rtc.h>
-#include <linux/types.h>
enum alarmtimer_type {
ALARM_REALTIME,
ALARM_BOOTTIME,
- ALARM_POWEROFF_REALTIME,
ALARM_NUMTYPE,
};
@@ -50,9 +48,6 @@ void alarm_start_relative(struct alarm *alarm, ktime_t start);
void alarm_restart(struct alarm *alarm);
int alarm_try_to_cancel(struct alarm *alarm);
int alarm_cancel(struct alarm *alarm);
-void set_power_on_alarm(void);
-void power_on_alarm_init(void);
-enum alarmtimer_type clock2alarm(clockid_t clockid);
u64 alarm_forward(struct alarm *alarm, ktime_t now, ktime_t interval);
u64 alarm_forward_now(struct alarm *alarm, ktime_t interval);
diff --git a/include/linux/mm.h b/include/linux/mm.h
index a8e09a66bb2d..47c7bb494c74 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1208,7 +1208,7 @@ static inline int fixup_user_fault(struct task_struct *tsk,
extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write);
extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
- void *buf, int len, int write);
+ void *buf, int len, unsigned int gup_flags);
long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,
@@ -1216,19 +1216,17 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
struct vm_area_struct **vmas, int *nonblocking);
long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,
- int write, int force, struct page **pages,
+ unsigned int gup_flags, struct page **pages,
struct vm_area_struct **vmas);
long get_user_pages_locked(struct task_struct *tsk, struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,
- int write, int force, struct page **pages,
- int *locked);
+ unsigned int gup_flags, struct page **pages, int *locked);
long __get_user_pages_unlocked(struct task_struct *tsk, struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,
- int write, int force, struct page **pages,
- unsigned int gup_flags);
+ struct page **pages, unsigned int gup_flags);
long get_user_pages_unlocked(struct task_struct *tsk, struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,
- int write, int force, struct page **pages);
+ struct page **pages, unsigned int gup_flags);
int get_user_pages_fast(unsigned long start, int nr_pages, int write,
struct page **pages);
@@ -1246,7 +1244,7 @@ struct frame_vector {
struct frame_vector *frame_vector_create(unsigned int nr_frames);
void frame_vector_destroy(struct frame_vector *vec);
int get_vaddr_frames(unsigned long start, unsigned int nr_pfns,
- bool write, bool force, struct frame_vector *vec);
+ unsigned int gup_flags, struct frame_vector *vec);
void put_vaddr_frames(struct frame_vector *vec);
int frame_vector_to_pages(struct frame_vector *vec);
void frame_vector_to_pfns(struct frame_vector *vec);
@@ -2142,6 +2140,7 @@ static inline struct page *follow_page(struct vm_area_struct *vma,
#define FOLL_TRIED 0x800 /* a retry, previous pass started an IO */
#define FOLL_MLOCK 0x1000 /* lock present pages */
#define FOLL_COW 0x4000 /* internal GUP flag */
+#define FOLL_ANON 0x8000 /* don't do file mappings */
typedef int (*pte_fn_t)(pte_t *pte, pgtable_t token, unsigned long addr,
void *data);
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index f501b8c0de4e..efce166a9f17 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -231,7 +231,7 @@ struct pmu {
int capabilities;
int * __percpu pmu_disable_count;
- struct perf_cpu_context * __percpu pmu_cpu_context;
+ struct perf_cpu_context __percpu *pmu_cpu_context;
atomic_t exclusive_cnt; /* < 0: cpu; > 0: tsk */
int task_ctx_nr;
int hrtimer_interval_ms;
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h
index 907f3fd191ac..3e28a1a8d823 100644
--- a/include/linux/posix-timers.h
+++ b/include/linux/posix-timers.h
@@ -65,8 +65,8 @@ struct k_itimer {
spinlock_t it_lock;
clockid_t it_clock; /* which timer type */
timer_t it_id; /* timer id */
- int it_overrun; /* overrun on pending signal */
- int it_overrun_last; /* overrun on last delivered signal */
+ s64 it_overrun; /* overrun on pending signal */
+ s64 it_overrun_last; /* overrun on last delivered signal */
int it_requeue_pending; /* waiting to requeue this timer */
#define REQUEUE_PENDING 1
int it_sigev_notify; /* notify word of sigevent struct */
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 8f6894c6e83c..ded334b5cf8d 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -3082,7 +3082,12 @@ static inline void set_task_comm(struct task_struct *tsk, const char *from)
{
__set_task_comm(tsk, from, false);
}
-extern char *get_task_comm(char *to, struct task_struct *tsk);
+
+extern char *__get_task_comm(char *to, size_t len, struct task_struct *tsk);
+#define get_task_comm(buf, tsk) ({ \
+ BUILD_BUG_ON(sizeof(buf) != TASK_COMM_LEN); \
+ __get_task_comm(buf, sizeof(buf), tsk); \
+})
#ifdef CONFIG_SMP
void scheduler_ipi(void);
diff --git a/include/linux/usb.h b/include/linux/usb.h
index d88c31c8e6a4..e27df29a298e 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -336,11 +336,11 @@ struct usb_host_bos {
};
int __usb_get_extra_descriptor(char *buffer, unsigned size,
- unsigned char type, void **ptr);
+ unsigned char type, void **ptr, size_t min);
#define usb_get_extra_descriptor(ifpoint, type, ptr) \
__usb_get_extra_descriptor((ifpoint)->extra, \
(ifpoint)->extralen, \
- type, (void **)ptr)
+ type, (void **)ptr, sizeof(**(ptr)))
/* ----------------------------------------------------------------------- */
diff --git a/include/net/neighbour.h b/include/net/neighbour.h
index 8b683841e574..f6017ddc4ded 100644
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -448,6 +448,7 @@ static inline int neigh_hh_bridge(struct hh_cache *hh, struct sk_buff *skb)
static inline int neigh_hh_output(const struct hh_cache *hh, struct sk_buff *skb)
{
+ unsigned int hh_alen = 0;
unsigned int seq;
int hh_len;
@@ -455,16 +456,33 @@ static inline int neigh_hh_output(const struct hh_cache *hh, struct sk_buff *skb
seq = read_seqbegin(&hh->hh_lock);
hh_len = hh->hh_len;
if (likely(hh_len <= HH_DATA_MOD)) {
- /* this is inlined by gcc */
- memcpy(skb->data - HH_DATA_MOD, hh->hh_data, HH_DATA_MOD);
+ hh_alen = HH_DATA_MOD;
+
+ /* skb_push() would proceed silently if we have room for
+ * the unaligned size but not for the aligned size:
+ * check headroom explicitly.
+ */
+ if (likely(skb_headroom(skb) >= HH_DATA_MOD)) {
+ /* this is inlined by gcc */
+ memcpy(skb->data - HH_DATA_MOD, hh->hh_data,
+ HH_DATA_MOD);
+ }
} else {
- int hh_alen = HH_DATA_ALIGN(hh_len);
+ hh_alen = HH_DATA_ALIGN(hh_len);
- memcpy(skb->data - hh_alen, hh->hh_data, hh_alen);
+ if (likely(skb_headroom(skb) >= hh_alen)) {
+ memcpy(skb->data - hh_alen, hh->hh_data,
+ hh_alen);
+ }
}
} while (read_seqretry(&hh->hh_lock, seq));
- skb_push(skb, hh_len);
+ if (WARN_ON_ONCE(skb_headroom(skb) < hh_alen)) {
+ kfree_skb(skb);
+ return NET_XMIT_DROP;
+ }
+
+ __skb_push(skb, hh_len);
return dev_queue_xmit(skb);
}
diff --git a/include/sound/apr_audio-v2.h b/include/sound/apr_audio-v2.h
index 48fe32252e8d..89e05abfd74b 100644
--- a/include/sound/apr_audio-v2.h
+++ b/include/sound/apr_audio-v2.h
@@ -1489,11 +1489,35 @@ struct adm_cmd_connect_afe_port_v5 {
#define AFE_PORT_ID_PRIMARY_MI2S_RX 0x1000
#define AFE_PORT_ID_PRIMARY_MI2S_TX 0x1001
#define AFE_PORT_ID_SECONDARY_MI2S_RX 0x1002
+#define AFE_PORT_ID_SECONDARY_MI2S_RX_1 0x1040
+#define AFE_PORT_ID_SECONDARY_MI2S_RX_2 0x1042
+#define AFE_PORT_ID_SECONDARY_MI2S_RX_3 0x1044
+#define AFE_PORT_ID_SECONDARY_MI2S_RX_4 0x1046
#define AFE_PORT_ID_SECONDARY_MI2S_TX 0x1003
+#define AFE_PORT_ID_SECONDARY_MI2S_TX_1 0x1041
+#define AFE_PORT_ID_SECONDARY_MI2S_TX_2 0x1043
+#define AFE_PORT_ID_SECONDARY_MI2S_TX_3 0x1045
+#define AFE_PORT_ID_SECONDARY_MI2S_TX_4 0x1047
#define AFE_PORT_ID_TERTIARY_MI2S_RX 0x1004
+#define AFE_PORT_ID_TERTIARY_MI2S_RX_1 0x1048
+#define AFE_PORT_ID_TERTIARY_MI2S_RX_2 0x104A
+#define AFE_PORT_ID_TERTIARY_MI2S_RX_3 0x104C
+#define AFE_PORT_ID_TERTIARY_MI2S_RX_4 0x104E
#define AFE_PORT_ID_TERTIARY_MI2S_TX 0x1005
+#define AFE_PORT_ID_TERTIARY_MI2S_TX_1 0x1049
+#define AFE_PORT_ID_TERTIARY_MI2S_TX_2 0x104B
+#define AFE_PORT_ID_TERTIARY_MI2S_TX_3 0x104D
+#define AFE_PORT_ID_TERTIARY_MI2S_TX_4 0x104F
#define AFE_PORT_ID_QUATERNARY_MI2S_RX 0x1006
+#define AFE_PORT_ID_QUATERNARY_MI2S_RX_1 0x1020
+#define AFE_PORT_ID_QUATERNARY_MI2S_RX_2 0x1022
+#define AFE_PORT_ID_QUATERNARY_MI2S_RX_3 0x1024
+#define AFE_PORT_ID_QUATERNARY_MI2S_RX_4 0x1026
#define AFE_PORT_ID_QUATERNARY_MI2S_TX 0x1007
+#define AFE_PORT_ID_QUATERNARY_MI2S_TX_1 0x1021
+#define AFE_PORT_ID_QUATERNARY_MI2S_TX_2 0x1023
+#define AFE_PORT_ID_QUATERNARY_MI2S_TX_3 0x1025
+#define AFE_PORT_ID_QUATERNARY_MI2S_TX_4 0x1027
#define AUDIO_PORT_ID_I2S_RX 0x1008
#define AFE_PORT_ID_DIGITAL_MIC_TX 0x1009
#define AFE_PORT_ID_PRIMARY_PCM_RX 0x100A
@@ -10886,6 +10910,7 @@ struct afe_port_cmd_set_aanc_acdb_table {
#define AFE_PARAM_ID_GROUP_DEVICE_CFG 0x00010255
#define AFE_PARAM_ID_GROUP_DEVICE_ENABLE 0x00010256
#define AFE_GROUP_DEVICE_ID_SECONDARY_MI2S_RX 0x1102
+#define AFE_PARAM_ID_GROUP_DEVICE_I2S_CONFIG 0x00010286
/* Payload of the #AFE_PARAM_ID_GROUP_DEVICE_CFG
* parameter, which configures max of 8 AFE ports
@@ -11069,6 +11094,119 @@ struct afe_param_id_group_device_tdm_cfg {
@values 1 to 2^32 -1 */
} __packed;
+#define AFE_GROUP_DEVICE_ID_SECONDARY_MI2S_TX \
+ (AFE_PORT_ID_SECONDARY_MI2S_TX + 0x100)
+#define AFE_GROUP_DEVICE_ID_TERTIARY_MI2S_RX \
+ (AFE_PORT_ID_TERTIARY_MI2S_RX + 0x100)
+#define AFE_GROUP_DEVICE_ID_TERTIARY_MI2S_TX \
+ (AFE_PORT_ID_TERTIARY_MI2S_TX + 0x100)
+#define AFE_GROUP_DEVICE_ID_QUATERNARY_MI2S_RX \
+ (AFE_PORT_ID_QUATERNARY_MI2S_RX + 0x100)
+#define AFE_GROUP_DEVICE_ID_QUATERNARY_MI2S_TX \
+ (AFE_PORT_ID_QUATERNARY_MI2S_TX + 0x100)
+
+#define AFE_API_VERSION_GROUP_DEVICE_I2S_CONFIG 0x1
+
+/* Payload of the AFE_PARAM_ID_GROUP_DEVICE_I2S_CONFIG parameter ID
+* used by AFE_MODULE_GROUP_DEVICE.
+*/
+struct afe_param_id_group_device_i2s_cfg_v1 {
+ u32 minor_version;
+ /**< Minor version used to track group device configuration.
+ * @values #AFE_API_VERSION_GROUP_DEVICE_I2S_CONFIG
+ */
+
+ u16 group_id;
+ /**< ID for the group device.
+ * @values
+ * - #AFE_GROUP_DEVICE_ID_SECONDARY_MI2S_RX
+ * - #AFE_GROUP_DEVICE_ID_SECONDARY_MI2S_TX
+ * - #AFE_GROUP_DEVICE_ID_TERTIARY_MI2S_RX
+ * - #AFE_GROUP_DEVICE_ID_TERTIARY_MI2S_TX
+ * - #AFE_GROUP_DEVICE_ID_QUATERNARY_MI2S_RX
+ * - #AFE_GROUP_DEVICE_ID_QUATERNARY_MI2S_RX
+ */
+
+ u16 channel_mode;
+ /**< Group line channel mode
+ * @values
+ * - #AFE_PORT_I2S_SD0
+ * - #AFE_PORT_I2S_SD1
+ * - #AFE_PORT_I2S_SD2
+ * - #AFE_PORT_I2S_SD3
+ * - #AFE_PORT_I2S_QUAD01
+ * - #AFE_PORT_I2S_QUAD23
+ * - #AFE_PORT_I2S_6CHS
+ * - #AFE_PORT_I2S_8CHS
+ */
+
+ u32 sample_rate;
+ /**< Sampling rate of the port.
+ * @values
+ * - #AFE_PORT_SAMPLE_RATE_8K
+ * - #AFE_PORT_SAMPLE_RATE_16K
+ * - #AFE_PORT_SAMPLE_RATE_24K
+ * - #AFE_PORT_SAMPLE_RATE_32K
+ */
+
+ u16 port_id[AFE_GROUP_DEVICE_NUM_PORTS];
+ /**< Array of member port IDs of this group.
+ * @values
+ * - #AFE_PORT_ID_SECONDARY_MI2S_RX_1
+ * - #AFE_PORT_ID_SECONDARY_MI2S_RX_2
+ * - #AFE_PORT_ID_SECONDARY_MI2S_RX_3
+ * - #AFE_PORT_ID_SECONDARY_MI2S_RX_4
+
+ * - #AFE_PORT_ID_SECONDARY_MI2S_TX_1
+ * - #AFE_PORT_ID_SECONDARY_MI2S_TX_2
+ * - #AFE_PORT_ID_SECONDARY_MI2S_TX_3
+ * - #AFE_PORT_ID_SECONDARY_MI2S_TX_4
+
+ * - #AFE_PORT_ID_TERTIARY_MI2S_RX_1
+ * - #AFE_PORT_ID_TERTIARY_MI2S_RX_2
+ * - #AFE_PORT_ID_TERTIARY_MI2S_RX_3
+ * - #AFE_PORT_ID_TERTIARY_MI2S_RX_4
+
+ * - #AFE_PORT_ID_TERTIARY_MI2S_TX_1
+ * - #AFE_PORT_ID_TERTIARY_MI2S_TX_2
+ * - #AFE_PORT_ID_TERTIARY_MI2S_TX_3
+ * - #AFE_PORT_ID_TERTIARY_MI2S_TX_4
+
+ * - #AFE_PORT_ID_QUATERNARY_MI2S_RX_1
+ * - #AFE_PORT_ID_QUATERNARY_MI2S_RX_2
+ * - #AFE_PORT_ID_QUATERNARY_MI2S_RX_3
+ * - #AFE_PORT_ID_QUATERNARY_MI2S_RX_4
+
+ * - #AFE_PORT_ID_QUATERNARY_MI2S_TX_1
+ * - #AFE_PORT_ID_QUATERNARY_MI2S_TX_2
+ * - #AFE_PORT_ID_QUATERNARY_MI2S_TX_3
+ * - #AFE_PORT_ID_QUATERNARY_MI2S_TX_4
+ * @tablebulletend
+ */
+
+ u16 bit_width;
+ /**< Bit width of the sample.
+ * @values 16, 24, (32)
+ */
+
+ u16 reserved;
+} __packed;
+
+struct afe_param_id_group_device_enable {
+ u16 group_id;
+ u16 enable;
+} __packed;
+
+union afe_port_group_mi2s_config {
+ struct afe_param_id_group_device_i2s_cfg_v1 i2s_cfg;
+ struct afe_param_id_group_device_enable group_enable;
+} __packed;
+
+struct afe_i2s_port_config {
+ struct afe_param_id_i2s_cfg i2s_cfg;
+ struct afe_param_id_slot_mapping_cfg slot_mapping;
+} __packed;
+
/* Payload of the #AFE_PARAM_ID_GROUP_DEVICE_ENABLE
* parameter, which enables or
* disables any module.
diff --git a/include/sound/pcm_params.h b/include/sound/pcm_params.h
index 747c94a9a3d6..91f6abfb2ce0 100644
--- a/include/sound/pcm_params.h
+++ b/include/sound/pcm_params.h
@@ -251,11 +251,13 @@ static inline int snd_interval_empty(const struct snd_interval *i)
static inline int snd_interval_single(const struct snd_interval *i)
{
return (i->min == i->max ||
- (i->min + 1 == i->max && i->openmax));
+ (i->min + 1 == i->max && (i->openmin || i->openmax)));
}
static inline int snd_interval_value(const struct snd_interval *i)
{
+ if (i->openmin && !i->openmax)
+ return i->max;
return i->min;
}
diff --git a/include/sound/q6afe-v2.h b/include/sound/q6afe-v2.h
index cdbf97023f66..a6d697d6a8f8 100644
--- a/include/sound/q6afe-v2.h
+++ b/include/sound/q6afe-v2.h
@@ -208,6 +208,33 @@ enum {
IDX_AFE_PORT_ID_INT5_MI2S_TX,
IDX_AFE_PORT_ID_INT6_MI2S_RX,
IDX_AFE_PORT_ID_INT6_MI2S_TX,
+ /* IDX 143 -> 150 */
+ IDX_AFE_PORT_ID_SECONDARY_MI2S_RX_1,
+ IDX_AFE_PORT_ID_SECONDARY_MI2S_RX_2,
+ IDX_AFE_PORT_ID_SECONDARY_MI2S_RX_3,
+ IDX_AFE_PORT_ID_SECONDARY_MI2S_RX_4,
+ IDX_AFE_PORT_ID_SECONDARY_MI2S_TX_1,
+ IDX_AFE_PORT_ID_SECONDARY_MI2S_TX_2,
+ IDX_AFE_PORT_ID_SECONDARY_MI2S_TX_3,
+ IDX_AFE_PORT_ID_SECONDARY_MI2S_TX_4,
+ /* IDX 151 -> 158 */
+ IDX_AFE_PORT_ID_TERTIARY_MI2S_RX_1,
+ IDX_AFE_PORT_ID_TERTIARY_MI2S_RX_2,
+ IDX_AFE_PORT_ID_TERTIARY_MI2S_RX_3,
+ IDX_AFE_PORT_ID_TERTIARY_MI2S_RX_4,
+ IDX_AFE_PORT_ID_TERTIARY_MI2S_TX_1,
+ IDX_AFE_PORT_ID_TERTIARY_MI2S_TX_2,
+ IDX_AFE_PORT_ID_TERTIARY_MI2S_TX_3,
+ IDX_AFE_PORT_ID_TERTIARY_MI2S_TX_4,
+ /* IDX 159 -> 166 */
+ IDX_AFE_PORT_ID_QUATERNARY_MI2S_RX_1,
+ IDX_AFE_PORT_ID_QUATERNARY_MI2S_RX_2,
+ IDX_AFE_PORT_ID_QUATERNARY_MI2S_RX_3,
+ IDX_AFE_PORT_ID_QUATERNARY_MI2S_RX_4,
+ IDX_AFE_PORT_ID_QUATERNARY_MI2S_TX_1,
+ IDX_AFE_PORT_ID_QUATERNARY_MI2S_TX_2,
+ IDX_AFE_PORT_ID_QUATERNARY_MI2S_TX_3,
+ IDX_AFE_PORT_ID_QUATERNARY_MI2S_TX_4,
AFE_MAX_PORTS
};
@@ -292,6 +319,44 @@ enum {
IDX_GROUP_TDM_MAX,
};
+enum {
+ IDX_SECONDARY_MI2S_RX_1,
+ IDX_SECONDARY_MI2S_RX_2,
+ IDX_SECONDARY_MI2S_RX_3,
+ IDX_SECONDARY_MI2S_RX_4,
+ IDX_SECONDARY_MI2S_TX_1,
+ IDX_SECONDARY_MI2S_TX_2,
+ IDX_SECONDARY_MI2S_TX_3,
+ IDX_SECONDARY_MI2S_TX_4,
+ IDX_TERTIARY_MI2S_RX_1,
+ IDX_TERTIARY_MI2S_RX_2,
+ IDX_TERTIARY_MI2S_RX_3,
+ IDX_TERTIARY_MI2S_RX_4,
+ IDX_TERTIARY_MI2S_TX_1,
+ IDX_TERTIARY_MI2S_TX_2,
+ IDX_TERTIARY_MI2S_TX_3,
+ IDX_TERTIARY_MI2S_TX_4,
+ IDX_QUATERNARY_MI2S_RX_1,
+ IDX_QUATERNARY_MI2S_RX_2,
+ IDX_QUATERNARY_MI2S_RX_3,
+ IDX_QUATERNARY_MI2S_RX_4,
+ IDX_QUATERNARY_MI2S_TX_1,
+ IDX_QUATERNARY_MI2S_TX_2,
+ IDX_QUATERNARY_MI2S_TX_3,
+ IDX_QUATERNARY_MI2S_TX_4,
+ IDX_GROUP_MI2S_PORT_MAX,
+};
+
+enum {
+ IDX_GROUP_SECONDARY_MI2S_RX,
+ IDX_GROUP_SECONDARY_MI2S_TX,
+ IDX_GROUP_TERTIARY_MI2S_RX,
+ IDX_GROUP_TERTIARY_MI2S_TX,
+ IDX_GROUP_QUATERNARY_MI2S_RX,
+ IDX_GROUP_QUATERNARY_MI2S_TX,
+ IDX_GROUP_MI2S_MAX,
+};
+
enum afe_mad_type {
MAD_HW_NONE = 0x00,
MAD_HW_AUDIO = 0x01,
@@ -458,4 +523,9 @@ int afe_request_dma_resources(uint8_t dma_type, uint8_t num_read_dma_channels,
int afe_get_dma_idx(bool **ret_rddma_idx,
bool **ret_wrdma_idx);
int afe_release_all_dma_resources(void);
+int afe_i2s_port_start(u16 port_id, struct afe_i2s_port_config *i2s_port,
+ u32 rate, u16 num_groups);
+int afe_port_group_mi2s_enable(u16 group_id,
+ union afe_port_group_mi2s_config *afe_group_config,
+ u16 enable);
#endif /* __Q6AFE_V2_H__ */
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 749f6507dfa3..1035cc3cf401 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -916,6 +916,22 @@
* does not result in a change for the current association. Currently,
* only the %NL80211_ATTR_IE data is used and updated with this command.
*
+ * @NL80211_CMD_SET_PMK: For offloaded 4-Way handshake, set the PMK or PMK-R0
+ * for the given authenticator address (specified with &NL80211_ATTR_MAC).
+ * When &NL80211_ATTR_PMKR0_NAME is set, &NL80211_ATTR_PMK specifies the
+ * PMK-R0, otherwise it specifies the PMK.
+ * @NL80211_CMD_DEL_PMK: For offloaded 4-Way handshake, delete the previously
+ * configured PMK for the authenticator address identified by
+ * &NL80211_ATTR_MAC.
+ * @NL80211_CMD_PORT_AUTHORIZED: An event that indicates that the 4 way
+ * handshake was completed successfully by the driver. The BSSID is
+ * specified with &NL80211_ATTR_MAC. Drivers that support 4 way handshake
+ * offload should send this event after indicating 802.11 association with
+ * &NL80211_CMD_CONNECT or &NL80211_CMD_ROAM. If the 4 way handshake failed
+ * &NL80211_CMD_DISCONNECT should be indicated instead.
+ *
+ * @NL80211_CMD_RELOAD_REGDB: Request that the regdb firmware file is reloaded.
+ *
* @NL80211_CMD_MAX: highest used command number
* @__NL80211_CMD_AFTER_LAST: internal use
*/
@@ -1115,6 +1131,13 @@ enum nl80211_commands {
NL80211_CMD_UPDATE_CONNECT_PARAMS,
+ NL80211_CMD_SET_PMK,
+ NL80211_CMD_DEL_PMK,
+
+ NL80211_CMD_PORT_AUTHORIZED,
+
+ NL80211_CMD_RELOAD_REGDB,
+
/* add new commands above here */
/* used to define NL80211_CMD_MAX below */
@@ -2036,6 +2059,20 @@ enum nl80211_commands {
* @NL80211_ATTR_PMK: PMK for the PMKSA identified by %NL80211_ATTR_PMKID.
* This is used with @NL80211_CMD_SET_PMKSA.
*
+ * @NL80211_ATTR_SCHED_SCAN_MULTI: flag attribute which user-space shall use to
+ * indicate that it supports multiple active scheduled scan requests.
+ * @NL80211_ATTR_SCHED_SCAN_MAX_REQS: indicates maximum number of scheduled
+ * scan request that may be active for the device (u32).
+ *
+ * @NL80211_ATTR_WANT_1X_4WAY_HS: flag attribute which user-space can include
+ * in %NL80211_CMD_CONNECT to indicate that for 802.1X authentication it
+ * wants to use the supported offload of the 4-way handshake.
+ * @NL80211_ATTR_PMKR0_NAME: PMK-R0 Name for offloaded FT.
+ * @NL80211_ATTR_PORT_AUTHORIZED: flag attribute used in %NL80211_CMD_ROAMED
+ * notification indicating that that 802.1X authentication was done by
+ * the driver or is not needed (because roaming used the Fast Transition
+ * protocol).
+ *
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2455,6 +2492,13 @@ enum nl80211_attrs {
NL80211_ATTR_PMK,
+ NL80211_ATTR_SCHED_SCAN_MULTI,
+ NL80211_ATTR_SCHED_SCAN_MAX_REQS,
+
+ NL80211_ATTR_WANT_1X_4WAY_HS,
+ NL80211_ATTR_PMKR0_NAME,
+ NL80211_ATTR_PORT_AUTHORIZED,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
diff --git a/include/uapi/linux/time.h b/include/uapi/linux/time.h
index 7fe799e867d4..e75e1b6ff27f 100644
--- a/include/uapi/linux/time.h
+++ b/include/uapi/linux/time.h
@@ -56,7 +56,6 @@ struct itimerval {
#define CLOCK_BOOTTIME_ALARM 9
#define CLOCK_SGI_CYCLE 10 /* Hardware specific */
#define CLOCK_TAI 11
-#define CLOCK_POWEROFF_ALARM 12
#define MAX_CLOCKS 16
#define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC)