OSDN Git Service

Merge "Merge android-4.4.191 (6da3fbc) into msm-4.4"
authorLinux Build Service Account <lnxbuild@localhost>
Fri, 13 Sep 2019 06:56:08 +0000 (23:56 -0700)
committerGerrit - the friendly Code Review server <code-review@localhost>
Fri, 13 Sep 2019 06:56:08 +0000 (23:56 -0700)
arch/arm/boot/dts/qcom/msm8996-vidc.dtsi
arch/arm64/configs/msmcortex-perf_defconfig
arch/arm64/configs/msmcortex_defconfig
arch/arm64/configs/sdm660-perf_defconfig
arch/arm64/configs/sdm660_defconfig
drivers/hid/hid-core.c
drivers/net/wireless/cnss2/main.c
drivers/soc/qcom/avtimer.c
include/linux/hid.h
include/net/cnss2.h
sound/soc/msm/qdsp6v2/rtac.c

index 21aa1db..5059b33 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (c) 2014-2015, 2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2014-2015, 2017, 2019, 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
                                <&venus_smmu 0x2d>,
                                <&venus_smmu 0x31>;
                        buffer-types = <0xfff>;
-                       virtual-addr-pool = <0x70800000 0x8F800000>;
+                       virtual-addr-pool = <0x70800000 0x6f800000>;
                };
 
                firmware_cb {
index 7349f53..6e3cbef 100644 (file)
@@ -621,7 +621,6 @@ CONFIG_QUOTA=y
 CONFIG_QUOTA_NETLINK_INTERFACE=y
 CONFIG_QFMT_V2=y
 CONFIG_FUSE_FS=y
-CONFIG_OVERLAY_FS=y
 CONFIG_MSDOS_FS=y
 CONFIG_VFAT_FS=y
 CONFIG_TMPFS=y
index de05a73..51d31bc 100644 (file)
@@ -648,7 +648,6 @@ CONFIG_QUOTA=y
 CONFIG_QUOTA_NETLINK_INTERFACE=y
 CONFIG_QFMT_V2=y
 CONFIG_FUSE_FS=y
-CONFIG_OVERLAY_FS=y
 CONFIG_MSDOS_FS=y
 CONFIG_VFAT_FS=y
 CONFIG_TMPFS=y
index 1505108..274519f 100644 (file)
@@ -627,7 +627,6 @@ CONFIG_QUOTA=y
 CONFIG_QUOTA_NETLINK_INTERFACE=y
 CONFIG_QFMT_V2=y
 CONFIG_FUSE_FS=y
-CONFIG_OVERLAY_FS=y
 CONFIG_MSDOS_FS=y
 CONFIG_VFAT_FS=y
 CONFIG_TMPFS=y
index 2eceb3b..8df8694 100644 (file)
@@ -650,7 +650,6 @@ CONFIG_QUOTA=y
 CONFIG_QUOTA_NETLINK_INTERFACE=y
 CONFIG_QFMT_V2=y
 CONFIG_FUSE_FS=y
-CONFIG_OVERLAY_FS=y
 CONFIG_MSDOS_FS=y
 CONFIG_VFAT_FS=y
 CONFIG_TMPFS=y
index fd8cd41..7f6c137 100644 (file)
@@ -200,14 +200,13 @@ static unsigned hid_lookup_collection(struct hid_parser *parser, unsigned type)
  * Add a usage to the temporary parser table.
  */
 
-static int hid_add_usage(struct hid_parser *parser, unsigned usage, u8 size)
+static int hid_add_usage(struct hid_parser *parser, unsigned usage)
 {
        if (parser->local.usage_index >= HID_MAX_USAGES) {
                hid_err(parser->device, "usage index exceeded\n");
                return -1;
        }
        parser->local.usage[parser->local.usage_index] = usage;
-       parser->local.usage_size[parser->local.usage_index] = size;
        parser->local.collection_index[parser->local.usage_index] =
                parser->collection_stack_ptr ?
                parser->collection_stack[parser->collection_stack_ptr - 1] : 0;
@@ -464,7 +463,10 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
                        return 0;
                }
 
-               return hid_add_usage(parser, data, item->size);
+               if (item->size <= 2)
+                       data = (parser->global.usage_page << 16) + data;
+
+               return hid_add_usage(parser, data);
 
        case HID_LOCAL_ITEM_TAG_USAGE_MINIMUM:
 
@@ -473,6 +475,9 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
                        return 0;
                }
 
+               if (item->size <= 2)
+                       data = (parser->global.usage_page << 16) + data;
+
                parser->local.usage_minimum = data;
                return 0;
 
@@ -483,6 +488,9 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
                        return 0;
                }
 
+               if (item->size <= 2)
+                       data = (parser->global.usage_page << 16) + data;
+
                count = data - parser->local.usage_minimum;
                if (count + parser->local.usage_index >= HID_MAX_USAGES) {
                        /*
@@ -502,7 +510,7 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
                }
 
                for (n = parser->local.usage_minimum; n <= data; n++)
-                       if (hid_add_usage(parser, n, item->size)) {
+                       if (hid_add_usage(parser, n)) {
                                dbg_hid("hid_add_usage failed\n");
                                return -1;
                        }
@@ -517,22 +525,6 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
 }
 
 /*
- * Concatenate Usage Pages into Usages where relevant:
- * As per specification, 6.2.2.8: "When the parser encounters a main item it
- * concatenates the last declared Usage Page with a Usage to form a complete
- * usage value."
- */
-
-static void hid_concatenate_usage_page(struct hid_parser *parser)
-{
-       int i;
-
-       for (i = 0; i < parser->local.usage_index; i++)
-               if (parser->local.usage_size[i] <= 2)
-                       parser->local.usage[i] += parser->global.usage_page << 16;
-}
-
-/*
  * Process a main item.
  */
 
@@ -541,8 +533,6 @@ static int hid_parser_main(struct hid_parser *parser, struct hid_item *item)
        __u32 data;
        int ret;
 
-       hid_concatenate_usage_page(parser);
-
        data = item_udata(item);
 
        switch (item->tag) {
@@ -756,8 +746,6 @@ static int hid_scan_main(struct hid_parser *parser, struct hid_item *item)
        __u32 data;
        int i;
 
-       hid_concatenate_usage_page(parser);
-
        data = item_udata(item);
 
        switch (item->tag) {
index 1da33c2..498650e 100644 (file)
@@ -1226,6 +1226,26 @@ int cnss_force_collect_rddm(struct device *dev)
 }
 EXPORT_SYMBOL(cnss_force_collect_rddm);
 
+int cnss_qmi_send_get(struct device *dev)
+{
+       return 0;
+}
+EXPORT_SYMBOL(cnss_qmi_send_get);
+
+int cnss_qmi_send_put(struct device *dev)
+{
+       return 0;
+}
+EXPORT_SYMBOL(cnss_qmi_send_put);
+
+int cnss_qmi_send(struct device *dev, int type, void *cmd,
+                 int cmd_len, void *cb_ctx,
+                 int (*cb)(void *ctx, void *event, int event_len))
+{
+       return -EINVAL;
+}
+EXPORT_SYMBOL(cnss_qmi_send);
+
 static int cnss_wlfw_server_arrive_hdlr(struct cnss_plat_data *plat_priv)
 {
        int ret;
index 4331af8..42d8fd5 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2016, 2019, 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
@@ -91,6 +91,13 @@ static int32_t aprv2_core_fn_q(struct apr_client_data *data, void *priv)
                }
 
                payload1 = data->payload;
+
+               if (data->payload_size < 2 * sizeof(uint32_t)) {
+                       pr_err("%s: payload has invalid size %d\n",
+                               __func__, data->payload_size);
+                       return -EINVAL;
+               }
+
                switch (payload1[0]) {
                case AVCS_CMD_REMOTE_AVTIMER_RELEASE_REQUEST:
                        pr_debug("%s: Cmd = TIMER RELEASE status[0x%x]\n",
@@ -116,6 +123,11 @@ static int32_t aprv2_core_fn_q(struct apr_client_data *data, void *priv)
        }
 
        case AVCS_CMD_RSP_REMOTE_AVTIMER_VOTE_REQUEST:
+               if (data->payload_size < sizeof(uint32_t)) {
+                       pr_err("%s: payload has invalid size %d\n",
+                               __func__, data->payload_size);
+                       return -EINVAL;
+               }
                payload1 = data->payload;
                pr_debug("%s: RSP_REMOTE_AVTIMER_VOTE_REQUEST handle %x\n",
                        __func__, payload1[0]);
index 5f1e901..d16de62 100644 (file)
@@ -378,7 +378,6 @@ struct hid_global {
 
 struct hid_local {
        unsigned usage[HID_MAX_USAGES]; /* usage array */
-       u8 usage_size[HID_MAX_USAGES]; /* usage size array */
        unsigned collection_index[HID_MAX_USAGES]; /* collection index array */
        unsigned usage_index;
        unsigned usage_minimum;
index eb6908f..69b9e5d 100644 (file)
@@ -202,6 +202,11 @@ extern int cnss_self_recovery(struct device *dev,
                              enum cnss_recovery_reason reason);
 extern int cnss_force_fw_assert(struct device *dev);
 extern int cnss_force_collect_rddm(struct device *dev);
+extern int cnss_qmi_send_get(struct device *dev);
+extern int cnss_qmi_send_put(struct device *dev);
+extern int cnss_qmi_send(struct device *dev, int type, void *cmd,
+                        int cmd_len, void *cb_ctx,
+                        int (*cb)(void *ctx, void *event, int event_len));
 extern void *cnss_get_virt_ramdump_mem(struct device *dev, unsigned long *size);
 extern int cnss_get_fw_files_for_target(struct device *dev,
                                        struct cnss_fw_files *pfw_files,
index 0a33171..5572a3d 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2019, 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
@@ -962,7 +962,8 @@ void rtac_set_asm_handle(u32 session_id, void *handle)
        pr_debug("%s\n", __func__);
 
        mutex_lock(&rtac_asm_apr_mutex);
-       rtac_asm_apr_data[session_id].apr_handle = handle;
+       if (rtac_asm_apr_data[session_id].apr_handle)
+               rtac_asm_apr_data[session_id].apr_handle = handle;
        mutex_unlock(&rtac_asm_apr_mutex);
 }