From fe99e930dbe366e302f8b50fb008da901f1aff99 Mon Sep 17 00:00:00 2001 From: LibXZR Date: Fri, 9 Jun 2023 12:36:45 +0800 Subject: [PATCH] treewide: Clean up oplus feedback We don't need those tracers. Change-Id: I9539aaceed82a36d6e92faabfaf999caed08e3ed Signed-off-by: LibXZR --- OplusKernelEnvConfig.mk | 1 - .../arm64/boot/dts/vendor/19805/kona-mtp.dtsi | 3 - .../arm64/boot/dts/vendor/19811/kona-mtp.dtsi | 3 - .../arm64/boot/dts/vendor/19821/kona-mtp.dtsi | 3 - .../arm64/boot/dts/vendor/20828/kona-mtp.dtsi | 3 - arch/arm64/configs/vendor/oplus.config | 3 - drivers/gpu/msm/kgsl_iommu.c | 11 - drivers/misc/Kconfig | 4 - drivers/misc/aw8697_haptic/Kconfig | 5 - drivers/misc/aw8697_haptic/Makefile | 1 - drivers/misc/aw8697_haptic/haptic_feedback.c | 658 ------------------ drivers/misc/aw8697_haptic/haptic_feedback.h | 186 ----- drivers/misc/aw8697_haptic/haptic_hv.c | 24 - drivers/power/oplus/oplus_chg_track.c | 194 ------ drivers/power/oplus/oplus_debug_info.c | 142 +--- drivers/power/oplus/oplus_debug_info.h | 8 - .../power/oplus/v2/monitor/oplus_chg_track.c | 185 +---- .../oplus_sensor_feedback/sensor_feedback.c | 13 - drivers/soc/oplus/system/Kconfig | 5 - drivers/soc/oplus/system/Makefile | 5 - drivers/soc/oplus/system/feedback/Kconfig | 8 - drivers/soc/oplus/system/feedback/Makefile | 4 - drivers/soc/oplus/system/feedback/kernel_fb.c | 601 ---------------- .../system/feedback/oplus_fb_guard_netlink.h | 64 -- drivers/soc/oplus/system/include/kernel_fb.h | 40 -- .../oplus/system/include/oplus_mm_kevent_fb.h | 105 --- drivers/soc/oplus/system/oplus_mm_fb/Kconfig | 5 - drivers/soc/oplus/system/oplus_mm_fb/Makefile | 2 - .../system/oplus_mm_fb/oplus_mm_fb_netlink.h | 52 -- .../system/oplus_mm_fb/oplus_mm_kevent.c | 320 --------- .../system/oplus_mm_fb/oplus_mm_kevent.h | 67 -- .../system/oplus_mm_fb/oplus_mm_kevent_fb.c | 610 ---------------- drivers/soc/qcom/subsys-pil-tz.c | 23 - include/soc/oplus/system/kernel_fb.h | 39 -- include/soc/oplus/system/oplus_mm_kevent_fb.h | 105 --- oplus_native_features.mk | 6 +- .../audio/asoc/codecs/tfa98xx-v6/tfa98xx_v6.c | 256 ------- techpack/audio/asoc/codecs/wcd-mbhc-adc.c | 19 - techpack/display/msm/dsi/dsi_ctrl.c | 7 - techpack/display/msm/dsi/dsi_ctrl_hw.h | 2 - techpack/display/msm/dsi/dsi_defs.h | 2 - techpack/display/msm/dsi/dsi_display.c | 2 - techpack/display/msm/dsi/dsi_phy_hw.h | 2 - techpack/display/msm/msm_iommu.c | 8 - .../display/msm/sde/sde_encoder_phys_cmd.c | 7 - techpack/display/msm/sde/sde_kms.h | 2 - 46 files changed, 5 insertions(+), 3810 deletions(-) delete mode 100644 drivers/misc/aw8697_haptic/haptic_feedback.c delete mode 100644 drivers/misc/aw8697_haptic/haptic_feedback.h delete mode 100644 drivers/soc/oplus/system/feedback/Kconfig delete mode 100644 drivers/soc/oplus/system/feedback/Makefile delete mode 100644 drivers/soc/oplus/system/feedback/kernel_fb.c delete mode 100644 drivers/soc/oplus/system/feedback/oplus_fb_guard_netlink.h delete mode 100644 drivers/soc/oplus/system/include/kernel_fb.h delete mode 100644 drivers/soc/oplus/system/include/oplus_mm_kevent_fb.h delete mode 100644 drivers/soc/oplus/system/oplus_mm_fb/Kconfig delete mode 100644 drivers/soc/oplus/system/oplus_mm_fb/Makefile delete mode 100644 drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_fb_netlink.h delete mode 100644 drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent.c delete mode 100644 drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent.h delete mode 100644 drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent_fb.c delete mode 100644 include/soc/oplus/system/kernel_fb.h delete mode 100644 include/soc/oplus/system/oplus_mm_kevent_fb.h diff --git a/OplusKernelEnvConfig.mk b/OplusKernelEnvConfig.mk index ae629d41ad78..c6e5e7c1715b 100644 --- a/OplusKernelEnvConfig.mk +++ b/OplusKernelEnvConfig.mk @@ -79,7 +79,6 @@ OPLUS_FEATURE_PROCESS_RECLAIM \ OPLUS_FEATURE_ZRAM_OPT \ OPLUS_FEATURE_AUDIO_FTM \ OPLUS_FEATURE_SPEAKER_MUTE \ -OPLUS_FEATURE_MM_FEEDBACK \ OPLUS_FEATURE_MI2S_SLAVE \ OPLUS_FEATURE_KTV \ OPLUS_FEATURE_QCOM_WATCHDOG \ diff --git a/arch/arm64/boot/dts/vendor/19805/kona-mtp.dtsi b/arch/arm64/boot/dts/vendor/19805/kona-mtp.dtsi index b6ad3b83e6e1..b2171d181cca 100644 --- a/arch/arm64/boot/dts/vendor/19805/kona-mtp.dtsi +++ b/arch/arm64/boot/dts/vendor/19805/kona-mtp.dtsi @@ -280,9 +280,6 @@ Hw,sim_det = "modem_det"; }; //#endif /* OPLUS_BUG_DEBUG */ - feedback_fb { - compatible = "oplus,haptic-feedback"; - }; }; /*&qupv3_se13_i2c { #address-cells = <1>; diff --git a/arch/arm64/boot/dts/vendor/19811/kona-mtp.dtsi b/arch/arm64/boot/dts/vendor/19811/kona-mtp.dtsi index 795057e8ab15..ec02700b944f 100644 --- a/arch/arm64/boot/dts/vendor/19811/kona-mtp.dtsi +++ b/arch/arm64/boot/dts/vendor/19811/kona-mtp.dtsi @@ -287,9 +287,6 @@ Hw,sim_det = "modem_det"; }; //#endif /* OPLUS_BUG_DEBUG */ - feedback_fb { - compatible = "oplus,haptic-feedback"; - }; }; /*&qupv3_se13_i2c { #address-cells = <1>; diff --git a/arch/arm64/boot/dts/vendor/19821/kona-mtp.dtsi b/arch/arm64/boot/dts/vendor/19821/kona-mtp.dtsi index 43b1442d4ab2..0cadb93dfc92 100644 --- a/arch/arm64/boot/dts/vendor/19821/kona-mtp.dtsi +++ b/arch/arm64/boot/dts/vendor/19821/kona-mtp.dtsi @@ -277,9 +277,6 @@ pinctrl-0 = <&rf_cable0_active>; };*/ //#endif /* OPLUS_FEATURE_TP_BASIC */ - feedback_fb { - compatible = "oplus,haptic-feedback"; - }; }; /*&qupv3_se13_i2c { #address-cells = <1>; diff --git a/arch/arm64/boot/dts/vendor/20828/kona-mtp.dtsi b/arch/arm64/boot/dts/vendor/20828/kona-mtp.dtsi index 4b4fed6dd1a5..08b3b7ab981a 100644 --- a/arch/arm64/boot/dts/vendor/20828/kona-mtp.dtsi +++ b/arch/arm64/boot/dts/vendor/20828/kona-mtp.dtsi @@ -278,9 +278,6 @@ Hw,sim_det = "modem_det"; }; //#endif /* OPLUS_BUG_DEBUG */ - feedback_fb { - compatible = "oplus,haptic-feedback"; - }; }; /*&qupv3_se13_i2c { #address-cells = <1>; diff --git a/arch/arm64/configs/vendor/oplus.config b/arch/arm64/configs/vendor/oplus.config index 93b95e74a339..e1a726998e82 100644 --- a/arch/arm64/configs/vendor/oplus.config +++ b/arch/arm64/configs/vendor/oplus.config @@ -18,7 +18,6 @@ CONFIG_EMMC_SDCARD_OPTIMIZE=y CONFIG_EROFS_FS=y CONFIG_EXFAT_FS=y CONFIG_FRAME_WARN=4096 -CONFIG_HAPTIC_FEEDBACK=y CONFIG_HARDEN_BRANCH_PREDICTOR=y CONFIG_HID_BETOP_FF=y # CONFIG_HL6111R is not set @@ -50,11 +49,9 @@ CONFIG_OPLUS_FEATURE_DATA_EVAL=y CONFIG_OPLUS_FEATURE_DNS_HOOK=y CONFIG_OPLUS_FEATURE_DUMP_DEVICE_INFO=y CONFIG_OPLUS_FEATURE_FDLEAK_CHECK=y -CONFIG_OPLUS_FEATURE_FEEDBACK=y CONFIG_OPLUS_FEATURE_IM=y CONFIG_OPLUS_FEATURE_MDMFEATURE=y CONFIG_OPLUS_FEATURE_MIDAS=y -CONFIG_OPLUS_FEATURE_MM_FEEDBACK=y CONFIG_OPLUS_FEATURE_OLC=y CONFIG_OPLUS_FEATURE_OPROJECT=y CONFIG_OPLUS_FEATURE_PMIC_MONITOR=y diff --git a/drivers/gpu/msm/kgsl_iommu.c b/drivers/gpu/msm/kgsl_iommu.c index 25d45364fb0a..885b17788740 100644 --- a/drivers/gpu/msm/kgsl_iommu.c +++ b/drivers/gpu/msm/kgsl_iommu.c @@ -21,10 +21,6 @@ #include "kgsl_sharedmem.h" #include "kgsl_trace.h" -#ifdef OPLUS_BUG_STABILITY -#include -#endif /*OPLUS_BUG_STABILITY*/ - #define _IOMMU_PRIV(_mmu) (&((_mmu)->priv.iommu)) #define ADDR_IN_GLOBAL(_mmu, _a) \ @@ -830,13 +826,6 @@ static int kgsl_iommu_fault_handler(struct iommu_domain *domain, no_page_fault_log = kgsl_mmu_log_fault_addr(mmu, ptbase, addr); if (!no_page_fault_log && __ratelimit(&_rs)) { - #ifdef OPLUS_BUG_STABILITY - mm_fb_kevent(OPLUS_MM_DIRVER_FB_EVENT_DISPLAY, - OPLUS_DISPLAY_EVENTID_GPU_FAULT, - "gpu fault", MM_FB_KEY_RATELIMIT_1H, - "pid=%08lx,comm=%d", ptname, comm); - #endif /*OPLUS_BUG_STABILITY*/ - dev_crit(ctx->kgsldev->dev, "GPU PAGE FAULT: addr = %lX pid= %d name=%s\n", addr, ptname, comm); diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index 0660da335bc2..51e4de2db678 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -654,10 +654,6 @@ config SIM_DETECT default n help Say Y here to enable sim detect system support -config HAPTIC_FEEDBACK - tristate "Haptic driver feedback for awinic aw8697 series" - help - This option enables support for aw8697 series Haptic Driver Feedback. #endif /* OPLUS_FEATURE_SIM_DETECT */ #ifdef OPLUS_FEATURE_SIM_DETECT diff --git a/drivers/misc/aw8697_haptic/Kconfig b/drivers/misc/aw8697_haptic/Kconfig index 075dc4f062ae..49b7b66e4ccc 100644 --- a/drivers/misc/aw8697_haptic/Kconfig +++ b/drivers/misc/aw8697_haptic/Kconfig @@ -3,8 +3,3 @@ config AW8697_HAPTIC depends on I2C help This option enables support for aw8697 series Haptic Driver. - -config HAPTIC_FEEDBACK - tristate "Haptic driver feedback for awinic aw8697 series" - help - This option enables support for aw8697 series Haptic Driver Feedback. \ No newline at end of file diff --git a/drivers/misc/aw8697_haptic/Makefile b/drivers/misc/aw8697_haptic/Makefile index ebcf94ac1f11..e0e451be42f6 100644 --- a/drivers/misc/aw8697_haptic/Makefile +++ b/drivers/misc/aw8697_haptic/Makefile @@ -10,4 +10,3 @@ obj-$(CONFIG_AW8697_HAPTIC) += aw8697.o obj-$(CONFIG_AW8697_HAPTIC) += haptic.o haptic-objs := aw8692x.o haptic_hv.o -obj-$(CONFIG_HAPTIC_FEEDBACK) += haptic_feedback.o \ No newline at end of file diff --git a/drivers/misc/aw8697_haptic/haptic_feedback.c b/drivers/misc/aw8697_haptic/haptic_feedback.c deleted file mode 100644 index d16bee542688..000000000000 --- a/drivers/misc/aw8697_haptic/haptic_feedback.c +++ /dev/null @@ -1,658 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (C) 2022-2024 Oplus. All rights reserved. - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -#include -#endif -#include "haptic_feedback.h" - -static struct oplus_haptic_track *g_haptic_track_chip; - -static bool oplus_haptic_event_record_time_need_update(void) -{ - struct oplus_haptic_track *chip = g_haptic_track_chip; - struct timespec now = {0}; - struct timespec last_record; - long time_step; - - if (!chip) - return false; - - getnstimeofday(&now); - last_record = chip->lastest_record; - - time_step = (now.tv_sec - last_record.tv_sec) / SECSONDS_PER_HOUR; - if (time_step >= UPLOAD_TIME_LIMIT_HOURS) { - chip->lastest_record = now; - return true; - } - - return false; -} - -static void oplus_haptic_event_queue_update(void) { - struct oplus_haptic_track *chip = g_haptic_track_chip; - struct haptic_dev_track_event *dev_event; - struct haptic_mem_alloc_track_event *mem_event; - bool update_flag = false; - - if (!chip) - return; - - update_flag = oplus_haptic_event_record_time_need_update(); - if (update_flag == false) - return; - - /* clear dev_event_que */ - dev_event = &chip->dev_track_event; - memset(dev_event->dev_event_que, 0, sizeof(struct haptic_dev_event_info) * MAX_DEV_EVENT_QUEUE_LEN); - dev_event->que_front = 0; - dev_event->que_rear = 0; - - /* clear mem_event_que */ - mem_event = &chip->mem_alloc_track_event; - memset(mem_event->mem_event_que, 0, sizeof(struct haptic_mem_alloc_event_info) * MAX_MEM_ALLOC_EVENT_QUEUE_LEN); - mem_event->que_front = 0; - mem_event->que_rear = 0; -} - -static struct haptic_fb_info g_haptic_fb_table[] = { - {HAPTIC_I2C_READ_TRACK_ERR, "i2c_read_err", HAPTIC_TRACK_EVENT_DEVICE_ERR}, - {HAPTIC_I2C_WRITE_TRACK_ERR, "i2c_write_err", HAPTIC_TRACK_EVENT_DEVICE_ERR}, - - {HAPTIC_F0_CALI_TRACK, "f0_cali_err", HAPTIC_TRACK_EVENT_FRE_CALI_ERR}, - {HAPTIC_OSC_CALI_TRACK, "osc_cali_err", HAPTIC_TRACK_EVENT_FRE_CALI_ERR}, - - {HAPTIC_MEM_ALLOC_TRACK, "mem_alloc_err", HAPTIC_TRACK_EVENT_MEM_ALLOC_ERR}, -}; - -static int oplus_haptic_event_payload_pack(struct haptic_fb_detail *fb_info) -{ - int i = 0; - char *fb_event_field = NULL; - char *fb_event_desc = NULL; - struct oplus_haptic_track *chip = g_haptic_track_chip; - char *log_tag = HAPTIC_EVENT_TAG; - char *event_id = HAPTIC_EVENT_ID; - int len; - - if ((!chip) || (!chip->dcs_info) || (!fb_info)) - return TRACK_CMD_ERROR_CHIP_NULL; - - for (i = 0; i < ARRAY_SIZE(g_haptic_fb_table); i++) { - if (g_haptic_fb_table[i].fb_event_type == fb_info->track_type) { - fb_event_desc = g_haptic_fb_table[i].fb_event_desc; - fb_event_field = g_haptic_fb_table[i].fb_event_field; - break; - } - } - - if (i == ARRAY_SIZE(g_haptic_fb_table)) { - haptic_fb_err("%s: invalid fb_event_type \n", __func__); - return TRACK_CMD_ERROR_DATA_INVALID; - } - - memset(chip->dcs_info, 0x0, OPLUS_HSPTIC_TRIGGER_MSG_LEN); - snprintf(chip->dcs_info->payload, MAX_PAYLOAD_LEN, - "NULL$$EventField@@%s$$FieldData@@%s$$detailData@@%s", - fb_event_field, - fb_event_desc, - fb_info->detailData); - chip->dcs_info->payload[MAX_PAYLOAD_LEN - 1] = '\0'; - len = strlen(chip->dcs_info->payload); - - chip->dcs_info->type = 1; - strncpy(chip->dcs_info->log_tag, log_tag, MAX_HAPTIC_EVENT_TAG_LEN); - chip->dcs_info->log_tag[MAX_HAPTIC_EVENT_TAG_LEN - 1] = '\0'; - strncpy(chip->dcs_info->event_id, event_id, MAX_HAPTIC_EVENT_ID_LEN); - chip->dcs_info->event_id[MAX_HAPTIC_EVENT_ID_LEN - 1] = '\0'; - chip->dcs_info->payload_length = len + 1; - - return TRACK_CMD_ACK_OK; -} - -static int oplus_haptic_track_upload_trigger_data(struct haptic_fb_detail *fb_detail) -{ - int rc = 0; - struct oplus_haptic_track *chip = g_haptic_track_chip; - - if (!chip) - return TRACK_CMD_ERROR_CHIP_NULL; - - if (!fb_detail) { - haptic_fb_err("%s:dev_event is null \n", __func__); - return TRACK_CMD_ERROR_CHIP_NULL; - } - - mutex_lock(&chip->trigger_ack_lock); - mutex_lock(&chip->payload_lock); - mutex_lock(&chip->trigger_data_lock); - - rc = oplus_haptic_event_payload_pack(fb_detail); - if (rc) { - haptic_fb_err("%s: oplus_payload_pack err \n", __func__); - mutex_unlock(&chip->trigger_data_lock); - mutex_unlock(&chip->payload_lock); - mutex_unlock(&chip->trigger_ack_lock); - return rc; - } - chip->trigger_data_ok = true; - mutex_unlock(&chip->trigger_data_lock); - - reinit_completion(&chip->trigger_ack); - wake_up(&chip->upload_wq); - - rc = wait_for_completion_timeout( - &chip->trigger_ack, - msecs_to_jiffies(OPLUS_HAPTIC_TRACK_WAIT_TIME_MS)); - - if (!rc) { - if (delayed_work_pending(&chip->upload_info_dwork)) - cancel_delayed_work_sync(&chip->upload_info_dwork); - pr_err("Error, timed_out_upload_trigger_data \r\n"); - mutex_unlock(&chip->payload_lock); - mutex_unlock(&chip->trigger_ack_lock); - return TRACK_CMD_ERROR_TIME_OUT; - } - - mutex_unlock(&chip->payload_lock); - mutex_unlock(&chip->trigger_ack_lock); - haptic_fb_info("success\n"); - - return TRACK_CMD_ACK_OK; -} - -int oplus_haptic_track_dev_err(uint32_t track_type, uint32_t reg_addr, uint32_t err_code) -{ - struct oplus_haptic_track *chip = g_haptic_track_chip; - struct haptic_dev_track_event *track_event; - uint32_t que_rear; - - if (!chip) - return TRACK_CMD_ERROR_CHIP_NULL; - - oplus_haptic_event_queue_update(); - track_event = &chip->dev_track_event; - que_rear = track_event->que_rear; - - if (que_rear >= MAX_DEV_EVENT_QUEUE_LEN) - return TRACK_CMD_ERROR_QUEUE_FULL; - - track_event->dev_event_que[que_rear].track_type = track_type; - track_event->dev_event_que[que_rear].reg_addr = reg_addr; - track_event->dev_event_que[que_rear].err_code = err_code; - track_event->que_rear++; - - schedule_delayed_work(&track_event->track_dev_err_load_trigger_work, 0); - - return TRACK_CMD_ACK_OK; -} -EXPORT_SYMBOL(oplus_haptic_track_dev_err); - -int oplus_haptic_track_fre_cail(uint32_t track_type, uint32_t cali_data, uint32_t result_flag, char *fail_info) -{ - struct oplus_haptic_track *chip = g_haptic_track_chip; - struct haptic_fre_cail_track_event *track_event; - - if (!chip) - return TRACK_CMD_ERROR_CHIP_NULL; - - track_event = &chip->fre_cail_track_event; - memset(track_event->fre_event.fail_info, 0, sizeof(char) * MAX_FAIL_INFO_LEN); - - track_event->fre_event.track_type = track_type; - track_event->fre_event.cali_data = cali_data; - track_event->fre_event.result_flag = result_flag; - strncpy(track_event->fre_event.fail_info, fail_info, MAX_FAIL_INFO_LEN - 1); - track_event->fre_event.fail_info[MAX_FAIL_INFO_LEN - 1] = '\0'; - - schedule_delayed_work(&track_event->track_fre_cail_load_trigger_work, 0); - - return TRACK_CMD_ACK_OK; -} -EXPORT_SYMBOL(oplus_haptic_track_fre_cail); - -int oplus_haptic_track_mem_alloc_err(uint32_t track_type, uint32_t alloc_len, const char *fun_name) -{ - struct oplus_haptic_track *chip = g_haptic_track_chip; - struct haptic_mem_alloc_track_event *track_event; - uint32_t que_rear; - - if (!chip) - return TRACK_CMD_ERROR_CHIP_NULL; - - oplus_haptic_event_queue_update(); - track_event = &chip->mem_alloc_track_event; - que_rear = track_event->que_rear; - - if (que_rear >= MAX_MEM_ALLOC_EVENT_QUEUE_LEN) - return TRACK_CMD_ERROR_QUEUE_FULL; - - track_event->mem_event_que[que_rear].track_type = track_type; - track_event->mem_event_que[que_rear].alloc_len = alloc_len; - strncpy(track_event->mem_event_que[que_rear].fun_name, fun_name, MAX_FUN_NAME_LEN - 1); - track_event->mem_event_que[que_rear].fun_name[MAX_FUN_NAME_LEN - 1] = '\0'; - track_event->que_rear++; - - schedule_delayed_work(&track_event->track_mem_alloc_err_load_trigger_work, 0); - - return TRACK_CMD_ACK_OK; -} -EXPORT_SYMBOL(oplus_haptic_track_mem_alloc_err); - -static void oplus_haptic_track_dev_err_load_trigger_work(struct work_struct *work) -{ - uint32_t que_front; - struct oplus_haptic_track *chip = g_haptic_track_chip; - struct delayed_work *dwork = to_delayed_work(work); - struct haptic_dev_track_event *dev_event = - container_of(dwork, struct haptic_dev_track_event, - track_dev_err_load_trigger_work); - struct haptic_fb_detail *fb_detail; - - if ((!chip) || (!dev_event)) { - haptic_fb_err("%s:g_haptic_track_chip is null \n", __func__); - return; - } - - que_front = dev_event->que_front; - if (que_front >= dev_event->que_rear) - return; - - fb_detail = &dev_event->dev_detail_data; - fb_detail->track_type = dev_event->dev_event_que[que_front].track_type; - memset(fb_detail->detailData, 0, MAX_DETAIL_INFO_LEN); - snprintf(fb_detail->detailData, MAX_DETAIL_INFO_LEN, - "reg_addr:0x%x,err_code:%u", dev_event->dev_event_que[que_front].reg_addr, - dev_event->dev_event_que[que_front].err_code); - - dev_event->que_front++; - oplus_haptic_track_upload_trigger_data(fb_detail); -} - -static void oplus_haptic_track_fre_cail_load_trigger_work(struct work_struct *work) -{ - struct oplus_haptic_track *chip = g_haptic_track_chip; - struct delayed_work *dwork = to_delayed_work(work); - struct haptic_fre_cail_track_event *cail_event = - container_of(dwork, struct haptic_fre_cail_track_event, - track_fre_cail_load_trigger_work); - struct haptic_fb_detail *fb_detail; - - if ((!chip) || (!cail_event)) { - haptic_fb_err("%s:g_haptic_track_chip is null \n", __func__); - return; - } - - fb_detail = &cail_event->fre_cali_detail; - fb_detail->track_type = cail_event->fre_event.track_type; - memset(fb_detail->detailData, 0, MAX_DETAIL_INFO_LEN); - snprintf(fb_detail->detailData, MAX_DETAIL_INFO_LEN, - "cali_data:%u,cali_ret:0x%x,fail_info:%s", cail_event->fre_event.cali_data, - cail_event->fre_event.result_flag, cail_event->fre_event.fail_info); - - oplus_haptic_track_upload_trigger_data(fb_detail); -} - -static void oplus_haptic_track_mem_alloc_load_trigger_work(struct work_struct *work) -{ - uint32_t que_front; - struct oplus_haptic_track *chip = g_haptic_track_chip; - struct delayed_work *dwork = to_delayed_work(work); - struct haptic_mem_alloc_track_event *mem_event = - container_of(dwork, struct haptic_mem_alloc_track_event, - track_mem_alloc_err_load_trigger_work); - struct haptic_fb_detail *fb_detail; - - if ((!chip) || (!mem_event)) { - haptic_fb_err("%s:g_haptic_track_chip is null \n", __func__); - return; - } - - que_front = mem_event->que_front; - if (que_front >= mem_event->que_rear) - return; - - fb_detail = &mem_event->mem_detail; - fb_detail->track_type = mem_event->mem_event_que[que_front].track_type; - memset(fb_detail->detailData, 0, MAX_DETAIL_INFO_LEN); - snprintf(fb_detail->detailData, MAX_DETAIL_INFO_LEN, - "alloc_len:0x%x,fun_name:%s", mem_event->mem_event_que[que_front].alloc_len, - mem_event->mem_event_que[que_front].fun_name); - - (mem_event->que_front)++; - oplus_haptic_track_upload_trigger_data(fb_detail); -} - -static void oplus_haptic_track_upload_info_dwork(struct work_struct *work) -{ - int ret = 0; - struct delayed_work *dwork = to_delayed_work(work); - struct oplus_haptic_track *chip = - container_of(dwork, struct oplus_haptic_track, upload_info_dwork); - - if ((!chip) || (!chip->dcs_info)) - return; - -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - ret = fb_kevent_send_to_user(chip->dcs_info); -#endif - if (!ret) { - complete(&chip->trigger_ack); - } else if (chip->fb_retry_cnt > 0) { - queue_delayed_work(chip->trigger_upload_wq, &chip->upload_info_dwork, - msecs_to_jiffies(OPLUS_HAPTIC_UPDATE_INFO_DELAY_MS)); - } - - haptic_fb_info("retry_cnt: %d, ret = %d\n", chip->fb_retry_cnt, ret); - chip->fb_retry_cnt--; -} - -static int oplus_haptic_track_thread(void *data) -{ - int rc = 0; - struct oplus_haptic_track *chip = (struct oplus_haptic_track *)data; - - if (!chip) - return -1; - - haptic_fb_info("start\n"); - while (!kthread_should_stop()) { - mutex_lock(&chip->upload_lock); - rc = wait_event_interruptible(chip->upload_wq, - chip->trigger_data_ok); - mutex_unlock(&chip->upload_lock); - if (rc) - return rc; - if (!chip->trigger_data_ok) - haptic_fb_err("oplus haptic track false wakeup, rc=%d\n", rc); - mutex_lock(&chip->trigger_data_lock); - chip->trigger_data_ok = false; - chip->fb_retry_cnt = OPLUS_HAPTIC_FB_RETRY_TIME; - - queue_delayed_work(chip->trigger_upload_wq, - &chip->upload_info_dwork, 0); - - mutex_unlock(&chip->trigger_data_lock); - } - - return rc; -} - -static void oplus_haptic_track_init(struct oplus_haptic_track *track_dev) -{ - struct oplus_haptic_track *chip = track_dev; - struct haptic_dev_track_event *dev_event; - struct haptic_fre_cail_track_event *fre_cail_event; - struct haptic_mem_alloc_track_event *mem_alloc_event; - - chip->trigger_data_ok = false; - mutex_init(&chip->upload_lock); - mutex_init(&chip->trigger_data_lock); - mutex_init(&chip->trigger_ack_lock); - init_waitqueue_head(&chip->upload_wq); - init_completion(&chip->trigger_ack); - mutex_init(&chip->payload_lock); - - /* init timespec */ - getnstimeofday(&track_dev->lastest_record); - - /* event track init */ - dev_event = &(track_dev->dev_track_event); - INIT_DELAYED_WORK(&dev_event->track_dev_err_load_trigger_work, - oplus_haptic_track_dev_err_load_trigger_work); - dev_event->que_front = 0; - dev_event->que_rear = 0; - - /* fre cali track init */ - fre_cail_event = &(track_dev->fre_cail_track_event); - INIT_DELAYED_WORK(&fre_cail_event->track_fre_cail_load_trigger_work, - oplus_haptic_track_fre_cail_load_trigger_work); - - /* mem alloc track init */ - mem_alloc_event = &(track_dev->mem_alloc_track_event); - INIT_DELAYED_WORK(&mem_alloc_event->track_mem_alloc_err_load_trigger_work, - oplus_haptic_track_mem_alloc_load_trigger_work); - mem_alloc_event->que_front = 0; - mem_alloc_event->que_rear = 0; -} - -/* debug node */ -static struct haptic_dev_event_info event_info_node; -static struct haptic_fre_cail_event_info fre_cail_node; -static struct haptic_mem_alloc_event_info mem_alloc_node; - -static ssize_t dev_event_track_show(struct device *dev, struct device_attribute *attr, char *buf) -{ - return oplus_haptic_track_dev_err(event_info_node.track_type, event_info_node.reg_addr, event_info_node.err_code); -} - -static ssize_t dev_event_track_store(struct device *dev, struct device_attribute *attr, - const char *buf, size_t len) -{ - uint8_t track_type = 0; - uint8_t reg_addr = 0; - uint32_t err_code = 0; - - if (sscanf(buf, "%d %x %d", &track_type, ®_addr, &err_code) == 3) { - if (track_type >= HAPTIC_TRACK_TYPE_MAX) { - haptic_fb_err("%s: first value out of range!\n", __func__); - return len; - } - event_info_node.track_type = track_type; - event_info_node.reg_addr = reg_addr; - event_info_node.err_code = err_code; - } - - return len; -} - -static ssize_t dev_fre_cail_track_show(struct device *dev, struct device_attribute *attr, char *buf) -{ - return oplus_haptic_track_fre_cail(fre_cail_node.track_type, fre_cail_node.cali_data, - fre_cail_node.result_flag, fre_cail_node.fail_info); -} - -static ssize_t dev_fre_cail_track_store(struct device *dev, struct device_attribute *attr, - const char *buf, size_t len) -{ - uint8_t track_type = 0; - uint32_t cali_data = 0; - uint32_t result_flag = 0; /* 0 is success, 1 is fail */ - char fail_info[MAX_FAIL_INFO_LEN]; - - if (sscanf(buf, "%d %d %d %127s", &track_type, &cali_data, &result_flag, &fail_info[0]) == 4) { - if (track_type >= HAPTIC_TRACK_TYPE_MAX) { - haptic_fb_err("%s: first value out of range!\n", __func__); - return len; - } - fre_cail_node.track_type = track_type; - fre_cail_node.cali_data = cali_data; - fre_cail_node.result_flag = result_flag; - memset(fre_cail_node.fail_info, 0, MAX_FAIL_INFO_LEN); - strncpy(fre_cail_node.fail_info, fail_info, MAX_FAIL_INFO_LEN - 1); - fre_cail_node.fail_info[MAX_FAIL_INFO_LEN - 1] = '\0'; - } - - return len; -} - -static ssize_t dev_mem_alloc_track_show(struct device *dev, struct device_attribute *attr, char *buf) -{ - return oplus_haptic_track_mem_alloc_err(mem_alloc_node.track_type, mem_alloc_node.alloc_len, __func__); -} - -static ssize_t dev_mem_alloc_track_store(struct device *dev, struct device_attribute *attr, - const char *buf, size_t len) -{ - uint8_t track_type = 0; - uint32_t alloc_len = 0; - - if (sscanf(buf, "%d %x", &track_type, &alloc_len) == 2) { - if (track_type >= HAPTIC_TRACK_TYPE_MAX) { - haptic_fb_err("%s: first value out of range!\n", __func__); - return len; - } - mem_alloc_node.track_type = track_type; - mem_alloc_node.alloc_len = alloc_len; - } - - return len; -} - -static DEVICE_ATTR(event_track, 0664, dev_event_track_show, - dev_event_track_store); -static DEVICE_ATTR(fre_cali_track, 0664, dev_fre_cail_track_show, - dev_fre_cail_track_store); -static DEVICE_ATTR(mem_alloc_track, 0664, dev_mem_alloc_track_show, - dev_mem_alloc_track_store); - -static struct attribute *haptic_fb_attributes[] = { - &dev_attr_event_track.attr, - &dev_attr_fre_cali_track.attr, - &dev_attr_mem_alloc_track.attr, - NULL, -}; - -static struct attribute_group haptic_fb_attributes_group = { - .attrs = haptic_fb_attributes -}; - - -static struct file_operations mytest_ops = { - .owner = THIS_MODULE, -}; - -static int major; -static struct class *cls; - -static int oplus_haptic_feedback_probe(struct platform_device *pdev) -{ - int ret; - struct oplus_haptic_track *hapric_track; - /* debug_node */ - struct device *mydev; - - major = register_chrdev(0, "haptic_fb", &mytest_ops); - cls = class_create(THIS_MODULE, "haptic_fb_class"); - mydev = device_create(cls, 0, MKDEV(major, 0), NULL, "haptic_fb_device"); - ret = sysfs_create_group(&(mydev->kobj), &haptic_fb_attributes_group); - if (ret < 0) { - haptic_fb_err("%s: error creating sysfs attr files\n", __func__); - return ret; - } - - hapric_track = devm_kzalloc(&pdev->dev, sizeof(struct oplus_haptic_track), GFP_KERNEL); - if (!hapric_track) { - pr_err("alloc memory error\n"); - return -ENOMEM; - } - - hapric_track->dcs_info = (struct kernel_packet_info *)devm_kzalloc(&pdev->dev, - sizeof(char) * OPLUS_HSPTIC_TRIGGER_MSG_LEN, GFP_KERNEL); - if (!hapric_track->dcs_info) { - ret = -ENOMEM; - goto dcs_info_kmalloc_fail; - } - - hapric_track->dev = &pdev->dev; - platform_set_drvdata(pdev, hapric_track); - - oplus_haptic_track_init(hapric_track); - - /* creat feedback monitor thread */ - hapric_track->track_upload_kthread = kthread_run(oplus_haptic_track_thread, (void *)hapric_track, - "track_upload_kthread"); - if (IS_ERR(hapric_track->track_upload_kthread)) { - pr_err("failed to create oplus_haptic_track_thread\n"); - ret = -EINVAL; - goto track_kthread_init_err; - } - - INIT_DELAYED_WORK(&hapric_track->upload_info_dwork, - oplus_haptic_track_upload_info_dwork); - - hapric_track->trigger_upload_wq = create_workqueue("haptic_chg_trigger_upload_wq"); - g_haptic_track_chip = hapric_track; - pr_info("probe done\n"); - - return 0; -track_kthread_init_err: - devm_kfree(&pdev->dev, hapric_track->dcs_info); -dcs_info_kmalloc_fail: - devm_kfree(&pdev->dev, hapric_track); - return ret; -} - -static int oplus_haptic_feedback_remove(struct platform_device *pdev) -{ - struct oplus_haptic_track *hapric_track = platform_get_drvdata(pdev); - - device_destroy(cls, MKDEV(major, 0)); - class_destroy(cls); - unregister_chrdev(major, "haptic_fb"); - - mutex_destroy(&hapric_track->upload_lock); - mutex_destroy(&hapric_track->trigger_data_lock); - mutex_destroy(&hapric_track->trigger_ack_lock); - mutex_destroy(&hapric_track->payload_lock); - cancel_delayed_work_sync(&hapric_track->dev_track_event.track_dev_err_load_trigger_work); - cancel_delayed_work_sync(&hapric_track->fre_cail_track_event.track_fre_cail_load_trigger_work); - cancel_delayed_work_sync(&hapric_track->mem_alloc_track_event.track_mem_alloc_err_load_trigger_work); - devm_kfree(&pdev->dev, hapric_track->dcs_info); - devm_kfree(&pdev->dev, hapric_track); - return 0; -} - -static const struct of_device_id oplus_haptic_drv_match[] = { - {.compatible = "oplus,haptic-feedback"}, - {}, -}; - -static struct platform_driver oplus_haptic_feedback_driver = { - .driver = - { - .name = "haptic_feedback", - .owner = THIS_MODULE, - .of_match_table = of_match_ptr(oplus_haptic_drv_match), - }, - .probe = oplus_haptic_feedback_probe, - .remove = oplus_haptic_feedback_remove, -}; - -static int __init haptic_feedback_init(void) -{ - pr_info("sensor_feedback_init call\n"); - - return platform_driver_register(&oplus_haptic_feedback_driver); -} - -static void __exit haptic_feedback_exit(void) -{ - pr_info("sensor_feedback_exit call\n"); - - platform_driver_unregister(&oplus_haptic_feedback_driver); -} - -module_init(haptic_feedback_init); -module_exit(haptic_feedback_exit); - -MODULE_LICENSE("GPL v2"); diff --git a/drivers/misc/aw8697_haptic/haptic_feedback.h b/drivers/misc/aw8697_haptic/haptic_feedback.h deleted file mode 100644 index c33958c16b4f..000000000000 --- a/drivers/misc/aw8697_haptic/haptic_feedback.h +++ /dev/null @@ -1,186 +0,0 @@ -#ifndef _HAPTIC_FEEDBACK_H_ -#define _HAPTIC_FEEDBACK_H_ - -#define HAPTIC_EVENT_TAG "fb_vibrator" -#define HAPTIC_EVENT_ID "vibrator_track" -#define MAX_HAPTIC_EVENT_TAG_LEN (32) -#define MAX_HAPTIC_EVENT_ID_LEN (20) -#define OPLUS_HAPTIC_TRACK_WAIT_TIME_MS (3000) -#define MAX_PAYLOAD_LEN (1024) -#define MAX_DETAIL_INFO_LEN (512) -#define MAX_FAIL_INFO_LEN (128) -#define MAX_FUN_NAME_LEN (64) -#define OPLUS_HAPTIC_UPDATE_INFO_DELAY_MS (500) -#define OPLUS_HAPTIC_FB_RETRY_TIME (2) -#define UPLOAD_TIME_LIMIT_HOURS (2) -#define SECSONDS_PER_HOUR (60 * 60) - -#define MAX_DEV_EVENT_QUEUE_LEN (10) -#define MAX_MEM_ALLOC_EVENT_QUEUE_LEN (5) - -#define OPLUS_HSPTIC_TRIGGER_MSG_LEN (2048) - -#define HAPTIC_TRACK_EVENT_DEVICE_ERR "haptic_device_err" -#define HAPTIC_TRACK_EVENT_FRE_CALI_ERR "haptic_fre_cli_err" -#define HAPTIC_TRACK_EVENT_MEM_ALLOC_ERR "haptic_mem_alloc_err" - -#ifdef CONFIG_OPLUS_CHARGER_MTK /* mtk platform */ -#include -#include -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)) -#ifdef __KERNEL__ -#ifndef _STRUCT_TIMESPEC -#define _STRUCT_TIMESPEC -struct timespec { - __kernel_old_time_t tv_sec; /* seconds */ - long tv_nsec; /* nanoseconds */ -}; -#endif -#endif - -#if __BITS_PER_LONG == 64 -/* timespec64 is defined as timespec here */ -static inline struct timespec timespec64_to_timespec(const struct timespec64 ts64) { - return *(const struct timespec *)&ts64; -} - -static inline struct timespec64 timespec_to_timespec64(const struct timespec ts) { - return *(const struct timespec64 *)&ts; -} - -#else -static inline struct timespec timespec64_to_timespec(const struct timespec64 ts64) { - struct timespec ret; - - ret.tv_sec = (time_t)ts64.tv_sec; - ret.tv_nsec = ts64.tv_nsec; - return ret; -} - -static inline struct timespec64 timespec_to_timespec64(const struct timespec ts) { - struct timespec64 ret; - - ret.tv_sec = ts.tv_sec; - ret.tv_nsec = ts.tv_nsec; - return ret; -} -#endif - -static inline void getnstimeofday(struct timespec *ts) { - struct timespec64 ts64; - - ktime_get_real_ts64(&ts64); - *ts = timespec64_to_timespec(ts64); -} -#endif -#endif - -/********************************************************* - * - * Log Format - * - *********************************************************/ -#define haptic_fb_err(format, ...) \ - pr_err("[haptic_hv]" format, ##__VA_ARGS__) - -#define haptic_fb_info(format, ...) \ - pr_info("[haptic_hv]" format, ##__VA_ARGS__) - -#define haptic_fb_dbg(format, ...) \ - pr_debug("[haptic_hv]" format, ##__VA_ARGS__) - -enum oplus_haptic_track_cmd_error { - TRACK_CMD_ACK_OK = 0, - TRACK_CMD_ERROR_CHIP_NULL, - TRACK_CMD_ERROR_DATA_NULL, - TRACK_CMD_ERROR_DATA_INVALID, - TRACK_CMD_ERROR_TIME_OUT, - TRACK_CMD_ERROR_QUEUE_FULL, -}; - -enum haptic_fb_track_type { - HAPTIC_I2C_READ_TRACK_ERR, - HAPTIC_I2C_WRITE_TRACK_ERR, - HAPTIC_F0_CALI_TRACK, - HAPTIC_OSC_CALI_TRACK, - HAPTIC_MEM_ALLOC_TRACK, - HAPTIC_TRACK_TYPE_MAX, -}; - -struct haptic_fb_detail { - uint32_t track_type; - char detailData[MAX_DETAIL_INFO_LEN]; -}; - -struct haptic_dev_event_info { - uint32_t track_type; - uint32_t reg_addr; - uint32_t err_code; -}; - -struct haptic_dev_track_event { - struct haptic_dev_event_info dev_event_que[MAX_DEV_EVENT_QUEUE_LEN]; - uint32_t que_front; - uint32_t que_rear; - struct haptic_fb_detail dev_detail_data; - struct delayed_work track_dev_err_load_trigger_work; -}; - -struct haptic_fre_cail_event_info { - uint32_t track_type; - uint32_t cali_data; - uint32_t result_flag; /* 0 is success, 1 is fail */ - char fail_info[MAX_FAIL_INFO_LEN]; -}; - -struct haptic_fre_cail_track_event { - struct haptic_fre_cail_event_info fre_event; - struct haptic_fb_detail fre_cali_detail; - struct delayed_work track_fre_cail_load_trigger_work; -}; - -struct haptic_mem_alloc_event_info { - uint32_t track_type; - uint32_t alloc_len; - char fun_name[MAX_FUN_NAME_LEN]; -}; - -struct haptic_mem_alloc_track_event { - struct haptic_mem_alloc_event_info mem_event_que[MAX_MEM_ALLOC_EVENT_QUEUE_LEN]; - uint32_t que_front; - uint32_t que_rear; - struct haptic_fb_detail mem_detail; - struct delayed_work track_mem_alloc_err_load_trigger_work; -}; - -struct oplus_haptic_track { - struct device *dev; - struct task_struct *track_upload_kthread; - bool trigger_data_ok; - struct mutex upload_lock; - struct mutex trigger_data_lock; - struct mutex trigger_ack_lock; - struct completion trigger_ack; - wait_queue_head_t upload_wq; - struct workqueue_struct *trigger_upload_wq; - struct delayed_work upload_info_dwork; - struct mutex payload_lock; - int fb_retry_cnt; - struct timespec lastest_record; - struct kernel_packet_info *dcs_info; - struct haptic_dev_track_event dev_track_event; - struct haptic_fre_cail_track_event fre_cail_track_event; - struct haptic_mem_alloc_track_event mem_alloc_track_event; -}; - -struct haptic_fb_info { - uint32_t fb_event_type; - char *fb_event_desc; - char *fb_event_field; -}; - -int oplus_haptic_track_dev_err(uint32_t track_type, uint32_t reg_addr, uint32_t err_code); -int oplus_haptic_track_fre_cail(uint32_t track_type, uint32_t cali_data, uint32_t result_flag, char* fail_info); -int oplus_haptic_track_mem_alloc_err(uint32_t track_type, uint32_t alloc_len, const char *fun_name); - -#endif diff --git a/drivers/misc/aw8697_haptic/haptic_hv.c b/drivers/misc/aw8697_haptic/haptic_hv.c index 0f031b829560..7ceee1241369 100644 --- a/drivers/misc/aw8697_haptic/haptic_hv.c +++ b/drivers/misc/aw8697_haptic/haptic_hv.c @@ -43,9 +43,6 @@ #include "haptic_hv.h" #include "haptic_hv_reg.h" -#ifdef CONFIG_HAPTIC_FEEDBACK_MODULE -#include "haptic_feedback.h" -#endif #define HAPTIC_HV_DRIVER_VERSION "v0.0.0.9" static uint8_t AW86927_HAPTIC_HIGH_LEVEL_REG_VAL = 0x5E;//max boost 9.408V @@ -1840,9 +1837,6 @@ static int container_init(int size) aw_rtp = vmalloc(size); if (!aw_rtp) { aw_dev_err("%s: error allocating memory\n", __func__); -#ifdef CONFIG_HAPTIC_FEEDBACK_MODULE - (void)oplus_haptic_track_mem_alloc_err(HAPTIC_MEM_ALLOC_TRACK, size, __func__); -#endif return -ENOMEM; } aw_container_size = size; @@ -1880,9 +1874,6 @@ int i2c_r_bytes(struct aw_haptic *aw_haptic, uint8_t reg_addr, uint8_t *buf, ret = i2c_transfer(aw_haptic->i2c->adapter, msg, ARRAY_SIZE(msg)); if (ret < 0) { aw_dev_err("%s: transfer failed.", __func__); -#ifdef CONFIG_HAPTIC_FEEDBACK_MODULE - (void)oplus_haptic_track_dev_err(HAPTIC_I2C_READ_TRACK_ERR, reg_addr, ret); -#endif return ret; } else if (ret != 2) { aw_dev_err("%s: transfer failed(size error).", __func__); @@ -1908,9 +1899,6 @@ int i2c_w_bytes(struct aw_haptic *aw_haptic, uint8_t reg_addr, uint8_t *buf, if (ret < 0) { aw_dev_err("%s: i2c master send 0x%02x error\n", __func__, reg_addr); -#ifdef CONFIG_HAPTIC_FEEDBACK_MODULE - (void)oplus_haptic_track_dev_err(HAPTIC_I2C_WRITE_TRACK_ERR, reg_addr, ret); -#endif } kfree(data); return ret; @@ -2272,9 +2260,6 @@ static void ram_load(const struct firmware *cont, void *context) release_firmware(cont); aw_dev_err("%s: Error allocating memory\n", __func__); -#ifdef CONFIG_HAPTIC_FEEDBACK_MODULE - (void)oplus_haptic_track_mem_alloc_err(HAPTIC_MEM_ALLOC_TRACK, cont->size + sizeof(int), __func__); -#endif return; } awinic_fw->len = cont->size; @@ -2459,9 +2444,6 @@ static int f0_cali(struct aw_haptic *aw_haptic) if (aw_haptic->func->get_f0(aw_haptic)) { aw_dev_err("%s: get f0 error, user defafult f0\n", __func__); -#ifdef CONFIG_HAPTIC_FEEDBACK_MODULE - (void)oplus_haptic_track_fre_cail(HAPTIC_F0_CALI_TRACK, aw_haptic->f0, 0, "aw_haptic->func->get_f0 is null"); -#endif } else { /* max and min limit */ f0_limit = aw_haptic->f0; @@ -2474,9 +2456,6 @@ static int f0_cali(struct aw_haptic *aw_haptic) aw_dev_err("%s: f0 calibration out of range = %d!\n", __func__, aw_haptic->f0); f0_limit = aw_haptic->info.f0_pre; -#ifdef CONFIG_HAPTIC_FEEDBACK_MODULE - (void)oplus_haptic_track_fre_cail(HAPTIC_F0_CALI_TRACK, aw_haptic->f0, -ERANGE, "f0 out of range"); -#endif return -ERANGE; } aw_dev_info("%s: f0_limit = %d\n", __func__, @@ -2596,9 +2575,6 @@ static int rtp_osc_cali(struct aw_haptic *aw_haptic) if (ret < 0) { aw_dev_err("%s: failed to read %s\n", __func__, aw_rtp_name[0]); -#ifdef CONFIG_HAPTIC_FEEDBACK_MODULE - (void)oplus_haptic_track_fre_cail(HAPTIC_OSC_CALI_TRACK, aw_haptic->f0, ret, "rtp_osc_cali request_firmware fail"); -#endif return ret; } /*aw_haptic add stop,for irq interrupt during calibrate */ diff --git a/drivers/power/oplus/oplus_chg_track.c b/drivers/power/oplus/oplus_chg_track.c index 7458efe6c7a8..6595dba7e9f8 100644 --- a/drivers/power/oplus/oplus_chg_track.c +++ b/drivers/power/oplus/oplus_chg_track.c @@ -16,10 +16,6 @@ #include #include #include -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -#include -#endif #include "oplus_chg_track.h" #include "oplus_charger.h" #include "oplus_gauge.h" @@ -459,10 +455,6 @@ struct oplus_chg_track { wait_queue_head_t upload_wq; struct workqueue_struct *trigger_upload_wq; -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - struct kernel_packet_info *dcs_info; -#endif struct delayed_work upload_info_dwork; struct mutex dcs_info_lock; int dwork_retry_cnt; @@ -522,69 +514,11 @@ static struct dentry *track_debugfs_root; static DEFINE_MUTEX(debugfs_root_mutex); static DEFINE_SPINLOCK(adsp_fifo_lock); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -static int oplus_chg_track_pack_dcs_info(struct oplus_chg_track *chip); -#endif static int oplus_chg_track_get_charger_type( struct oplus_chg_chip *chip, struct oplus_chg_track_status *track_status, int type); static int oplus_chg_track_obtain_wls_break_sub_crux_info( struct oplus_chg_track *track_chip, char *crux_info); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -static struct type_reason_table track_type_reason_table[] = { - { TRACK_NOTIFY_TYPE_SOC_JUMP, "soc_error" }, - { TRACK_NOTIFY_TYPE_GENERAL_RECORD, "general_record" }, - { TRACK_NOTIFY_TYPE_NO_CHARGING, "no_charging" }, - { TRACK_NOTIFY_TYPE_CHARGING_SLOW, "charge_slow" }, - { TRACK_NOTIFY_TYPE_CHARGING_BREAK, "charge_break" }, - { TRACK_NOTIFY_TYPE_DEVICE_ABNORMAL, "device_abnormal" }, - { TRACK_NOTIFY_TYPE_CHARGING_HOT, "charge_hot" }, -}; - -static struct flag_reason_table track_flag_reason_table[] = { - { TRACK_NOTIFY_FLAG_UI_SOC_LOAD_JUMP, "UiSoc_LoadSocJump" }, - { TRACK_NOTIFY_FLAG_SOC_JUMP, "SocJump" }, - { TRACK_NOTIFY_FLAG_UI_SOC_JUMP, "UiSocJump" }, - { TRACK_NOTIFY_FLAG_UI_SOC_TO_SOC_JUMP, "UiSoc-SocJump" }, - - { TRACK_NOTIFY_FLAG_CHARGER_INFO, "ChargerInfo" }, - { TRACK_NOTIFY_FLAG_UISOC_KEEP_1_T_INFO, "UisocKeep1TInfo" }, - { TRACK_NOTIFY_FLAG_VBATT_TOO_LOW_INFO, "VbattTooLowInfo" }, - { TRACK_NOTIFY_FLAG_USBTEMP_INFO, "UsbTempInfo" }, - { TRACK_NOTIFY_FLAG_VBATT_DIFF_OVER_INFO, "VbattDiffOverInfo" }, - { TRACK_NOTIFY_FLAG_WLS_TRX_INFO, "WlsTrxInfo" }, - - { TRACK_NOTIFY_FLAG_NO_CHARGING, "NoCharging" }, - - { TRACK_NOTIFY_FLAG_CHG_SLOW_TBATT_WARM, "BattTempWarm" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_TBATT_COLD, "BattTempCold" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_NON_STANDARD_PA, "NonStandardAdatpter" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_BATT_CAP_HIGH, "BattCapHighWhenPlugin" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_COOLDOWN, "CoolDownCtlLongTime" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_WLS_SKEW, "WlsSkew" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_VERITY_FAIL, "VerityFail" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_OTHER, "Other" }, - - { TRACK_NOTIFY_FLAG_FAST_CHARGING_BREAK, "FastChgBreak" }, - { TRACK_NOTIFY_FLAG_GENERAL_CHARGING_BREAK, "GeneralChgBreak" }, - { TRACK_NOTIFY_FLAG_WLS_CHARGING_BREAK, "WlsChgBreak" }, - - { TRACK_NOTIFY_FLAG_WLS_TRX_ABNORMAL, "WlsTrxAbnormal" }, - { TRACK_NOTIFY_FLAG_GPIO_ABNORMAL, "GpioAbnormal"}, - { TRACK_NOTIFY_FLAG_CP_ABNORMAL, "CpAbnormal"}, - { TRACK_NOTIFY_FLAG_PLAT_PMIC_ABNORMAL, "PlatPmicAbnormal"}, - { TRACK_NOTIFY_FLAG_EXTERN_PMIC_ABNORMAL, "ExternPmicAbnormal"}, - { TRACK_NOTIFY_FLAG_GAGUE_ABNORMAL, "GagueAbnormal"}, - { TRACK_NOTIFY_FLAG_DCHG_ABNORMAL, "DchgAbnormal"}, - { TRACK_NOTIFY_FLAG_PARALLEL_UNBALANCE_ABNORMAL, "ParallelUnbalance"}, - { TRACK_NOTIFY_FLAG_MOS_ERROR_ABNORMAL, "MosError"}, - - { TRACK_NOTIFY_FLAG_COOL_DOWN_MATCH_ERR, "CooldownMatchErr" }, -}; -#endif - static struct oplus_chg_track_type base_type_table[] = { { POWER_SUPPLY_TYPE_UNKNOWN, TRACK_POWER_MW(2500), "unknow" }, { POWER_SUPPLY_TYPE_USB, TRACK_POWER_MW(2500), "sdp" }, @@ -2391,39 +2325,6 @@ static int oplus_chg_track_init(struct oplus_chg_track *track_dev) return ret; } -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -static int oplus_chg_track_get_type_tag(int type_reason, char *type_reason_tag) -{ - int i = 0; - - for (i = 0; i < ARRAY_SIZE(track_type_reason_table); i++) { - if (track_type_reason_table[i].type_reason == type_reason) { - strncpy(type_reason_tag, - track_type_reason_table[i].type_reason_tag, - OPLUS_CHG_TRIGGER_REASON_TAG_LEN - 1); - break; - } - } - return i; -} - -static int oplus_chg_track_get_flag_tag(int flag_reason, char *flag_reason_tag) -{ - int i = 0; - - for (i = 0; i < ARRAY_SIZE(track_flag_reason_table); i++) { - if (track_flag_reason_table[i].flag_reason == flag_reason) { - strncpy(flag_reason_tag, - track_flag_reason_table[i].flag_reason_tag, - OPLUS_CHG_TRIGGER_REASON_TAG_LEN - 1); - break; - } - } - return i; -} -#endif - static bool oplus_chg_track_trigger_data_is_valid(oplus_chg_track_trigger *pdata) { int i; @@ -2573,10 +2474,6 @@ static int oplus_chg_track_thread(void *data) pr_err("oplus chg false wakeup, rc=%d\n", rc); mutex_lock(&chip->trigger_data_lock); chip->trigger_data_ok = false; -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - oplus_chg_track_pack_dcs_info(chip); -#endif chip->dwork_retry_cnt = OPLUS_CHG_TRACK_DWORK_RETRY_CNT; queue_delayed_work(chip->trigger_upload_wq, &chip->upload_info_dwork, 0); @@ -2754,71 +2651,6 @@ static int oplus_chg_track_get_local_time_s(void) return local_time_s; } -/* -* track sub version -* 3: default version for chg track -* 3.1: add for solve the problem of incorrect PPS records and power mode record error code -* 3.2: add for solve the problem of adapter_t symbol NULL -* 3.3: break records and mmi_chg and fastchg_to_normal and soc jump optimize -*/ - -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -static int oplus_chg_track_pack_dcs_info(struct oplus_chg_track *chip) -{ - int ret = 0; - int len; - struct rtc_time tm; - char *log_tag = OPLUS_CHG_TRACK_LOG_TAG; - char *event_id = OPLUS_CHG_TRACK_EVENT_ID; - char *p_data = (char *)(chip->dcs_info); - char type_reason_tag[OPLUS_CHG_TRIGGER_REASON_TAG_LEN] = { 0 }; - char flag_reason_tag[OPLUS_CHG_TRIGGER_REASON_TAG_LEN] = { 0 }; - - memset(p_data, 0x0, sizeof(char) * OPLUS_CHG_TRIGGER_MSG_LEN); - ret += sizeof(struct kernel_packet_info); - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, - OPLUS_CHG_TRACK_EVENT_ID); - - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, - "$$track_ver@@%s", "3.3"); - - oplus_chg_track_get_type_tag(chip->trigger_data.type_reason, - type_reason_tag); - oplus_chg_track_get_flag_tag(chip->trigger_data.flag_reason, - flag_reason_tag); - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, - "$$type_reason@@%s", type_reason_tag); - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, - "$$flag_reason@@%s", flag_reason_tag); - - oplus_chg_track_get_current_time_s(&tm); - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, - "$$time@@[%04d-%02d-%02d %02d:%02d:%02d]", tm.tm_year, - tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, - tm.tm_sec); - - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, "%s", - chip->trigger_data.crux_info); - - len = strlen(&(p_data[sizeof(struct kernel_packet_info)])); - if (len) { - mutex_lock(&chip->dcs_info_lock); - memset(chip->dcs_info, 0x0, sizeof(struct kernel_packet_info)); - - chip->dcs_info->type = 1; - memcpy(chip->dcs_info->log_tag, log_tag, strlen(log_tag)); - memcpy(chip->dcs_info->event_id, event_id, strlen(event_id)); - chip->dcs_info->payload_length = len + 1; - mutex_unlock(&chip->dcs_info_lock); - pr_info("%s\n", chip->dcs_info->payload); - return 0; - } - - return -EINVAL; -} -#endif - static void oplus_chg_track_upload_info_dwork(struct work_struct *work) { int ret = 0; @@ -2828,13 +2660,6 @@ static void oplus_chg_track_upload_info_dwork(struct work_struct *work) if (!chip) return; - - mutex_lock(&chip->dcs_info_lock); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - ret = fb_kevent_send_to_user(chip->dcs_info); -#endif - mutex_unlock(&chip->dcs_info_lock); if (!ret) complete(&chip->trigger_ack); else if (chip->dwork_retry_cnt > 0) @@ -5280,16 +5105,6 @@ static int oplus_chg_track_driver_probe(struct platform_device *pdev) goto kfifo_err; } -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - track_dev->dcs_info = (struct kernel_packet_info *)kmalloc( - sizeof(char) * OPLUS_CHG_TRIGGER_MSG_LEN, GFP_KERNEL); - if (!track_dev->dcs_info) { - rc = -ENOMEM; - goto dcs_info_kmalloc_fail; - } -#endif - track_dev->dev = &pdev->dev; platform_set_drvdata(pdev, track_dev); @@ -5339,11 +5154,6 @@ adsp_track_kthread_init_err: track_kthread_init_err: parse_dt_err: debugfs_create_fail: -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - kfree(track_dev->dcs_info); -dcs_info_kmalloc_fail: -#endif kfifo_free(&(track_dev->adsp_fifo)); kfifo_err: devm_kfree(&pdev->dev, track_dev); @@ -5358,10 +5168,6 @@ static int oplus_chg_track_driver_remove(struct platform_device *pdev) if (track_debugfs_root) debugfs_remove_recursive(track_debugfs_root); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - kfree(track_dev->dcs_info); -#endif kfifo_free(&(track_dev->adsp_fifo)); devm_kfree(&pdev->dev, track_dev); return 0; diff --git a/drivers/power/oplus/oplus_debug_info.c b/drivers/power/oplus/oplus_debug_info.c index 589df1e99398..6c2faca50f66 100644 --- a/drivers/power/oplus/oplus_debug_info.c +++ b/drivers/power/oplus/oplus_debug_info.c @@ -16,11 +16,6 @@ #include #include - -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -#include -#endif - #include "oplus_vooc.h" #include "oplus_charger.h" #include "voocphy/oplus_voocphy.h" @@ -51,11 +46,6 @@ static int break_flag = -1; static int mcu_update_flag = -1; static int gauge_seal_flag = -1; -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -#define OPLUS_CHG_DEBUG_LOG_TAG "OplusCharger" -#define OPLUS_CHG_DEBUG_EVENT_ID "charge_monitor" -#endif - struct oplus_chg_debug_info oplus_chg_debug_info; struct oplus_chg_chip *g_debug_oplus_chip = NULL; @@ -377,106 +367,6 @@ static int oplus_chg_reset_chg_notify_type(void); static int oplus_chg_chg_batt_capacity_jump_check(struct oplus_chg_chip *chip); static int oplus_chg_mcu_update_check(struct oplus_chg_chip *chip); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -static int oplus_chg_pack_debug_info(struct oplus_chg_chip *chip) -{ - char log_tag[] = OPLUS_CHG_DEBUG_LOG_TAG; - char event_id[] = OPLUS_CHG_DEBUG_EVENT_ID; - int len; - - len = strlen(&oplus_chg_debug_msg[sizeof(struct kernel_packet_info)]); - - if (len) { - mutex_lock(&oplus_chg_debug_info.dcs_info_lock); - memset(oplus_chg_debug_info.dcs_info, 0x0, sizeof(struct kernel_packet_info)); - - oplus_chg_debug_info.dcs_info->type = 1; - memcpy(oplus_chg_debug_info.dcs_info->log_tag, log_tag, strlen(log_tag)); - memcpy(oplus_chg_debug_info.dcs_info->event_id, event_id, strlen(event_id)); - oplus_chg_debug_info.dcs_info->payload_length = len + 1; - - if (chg_check_point_debug&OPEN_LOG_BIT) { - chg_err("%s\n", oplus_chg_debug_info.dcs_info->payload); - } - - mutex_unlock(&oplus_chg_debug_info.dcs_info_lock); - - return 0; - } - return -1; -} - -static int oplus_chg_debug_mask_notify_flag(int low, int high) -{ - unsigned long long mask = -1; - int bits = sizeof(mask) * 8 - 1; - - mask = (mask >> low) << low; - mask = (mask << (bits - high)) >> (bits - high); - mutex_lock(&oplus_chg_debug_info.nflag_lock); - oplus_chg_debug_info.notify_flag &= ~mask; - mutex_unlock(&oplus_chg_debug_info.nflag_lock); - - return 0; -} - -static void oplus_chg_send_info_dwork(struct work_struct *work) -{ - int ret; - - mutex_lock(&oplus_chg_debug_info.dcs_info_lock); - ret = fb_kevent_send_to_user(oplus_chg_debug_info.dcs_info); - mutex_unlock(&oplus_chg_debug_info.dcs_info_lock); - if ((ret > 0) && (oplus_chg_debug_info.retry_cnt > 0)) { - queue_delayed_work(oplus_chg_debug_info.oplus_chg_debug_wq, - &oplus_chg_debug_info.send_info_dwork, msecs_to_jiffies(SEND_INFO_DELAY)); - } - else { - //soc jump - oplus_chg_debug_mask_notify_flag(0, OPLUS_NOTIFY_CHG_BATT_FULL_NON_100_CAP); - - //slow check - if(send_info_flag != SEND_INFO_FLAG_IRQ) {//plug out with mcu error 0x54 do not clear charger slow flag - oplus_chg_debug_mask_notify_flag(OPLUS_NOTIFY_CHG_SLOW_BATT_WARM_TEMP, - OPLUS_NOTIFY_CHG_SLOW_LED_ON_LONG_TIME); - } - oplus_chg_debug_mask_notify_flag(OPLUS_NOTIFY_CHG_SLOW_BATT_NON_AUTH, OPLUS_NOTIFY_SC8571_ERROR);/*ic error*/ - oplus_chg_debug_mask_notify_flag(OPLUS_NOTIFY_CHG_SLOW_BATT_NON_AUTH, - OPLUS_NOTIFY_SC85x7_ERROR);/*ic error*/ - oplus_chg_debug_mask_notify_flag(OPLUS_NOTIFY_CHG_BATT_RECHG, OPLUS_NOTIFY_CHG_BATT_RECHG);/*add for rechg counts*/ - oplus_chg_debug_mask_notify_flag(OPLUS_NOTIFY_WIRELESS_BOOTUP, OPLUS_NOTIFY_WIRELESS_STOP_TX);/*add for wireless chg*/ - oplus_chg_debug_mask_notify_flag(OPLUS_NOTIFY_WIRELESS_BOOTUP, OPLUS_NOTIFY_WIRELESS_WIRELESS_CHG_END);/*add for wireless chg*/ - oplus_chg_debug_mask_notify_flag(OPLUS_NOTIFY_BCC_ANODE_POTENTIAL_OVER_TIME, OPLUS_NOTIFY_BCC_ANODE_POTENTIAL_OVER_TIME); - oplus_chg_debug_mask_notify_flag(OPLUS_NOTIFY_BCC_CURR_ADJUST_ERR, OPLUS_NOTIFY_BCC_CURR_ADJUST_ERR); - if (oplus_switching_support_parallel_chg() == 1) { - oplus_chg_debug_mask_notify_flag(OPLUS_NOTIFY_PARALLEL_LIMITIC_ERROR, OPLUS_NOTIFY_PARALLEL_FULL_NON_100_ERROR);/*add for parallel chg*/ - } - oplus_chg_reset_chg_notify_type(); - memset(oplus_chg_debug_info.flag_reason,0,sizeof(oplus_chg_debug_info.flag_reason)); - memset(oplus_chg_debug_info.type_reason,0,sizeof(oplus_chg_debug_info.type_reason)); - memset(oplus_chg_debug_info.bcc_buf, 0, sizeof(oplus_chg_debug_info.bcc_buf)); - memset(oplus_chg_debug_info.sc85x7_error_reason, 0, - sizeof(oplus_chg_debug_info.sc85x7_error_reason)); - memset(oplus_chg_debug_info.sc8571_error_reason, 0, sizeof(oplus_chg_debug_info.sc8571_error_reason)); - oplus_chg_debug_info.vooc_mcu_error = 0; - if(send_info_flag == SEND_INFO_FLAG_IRQ) { - send_info_flag = 0; - } - break_flag = -1; - mcu_update_flag = -1; - gauge_seal_flag = -1; - if(oplus_chg_get_voocphy_support()) { - oplus_voocphy_clear_dbg_info(); - } - oplus_pps_clear_dbg_info(); - } - - chg_err("retry_cnt: %d\n", oplus_chg_debug_info.retry_cnt); - - oplus_chg_debug_info.retry_cnt--; -} -#endif - static int oplus_chg_read_filedata(struct timespec *ts) { #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) @@ -606,22 +496,11 @@ static void oplus_chg_print_debug_info(struct oplus_chg_chip *chip) if (oplus_chg_debug_info.notify_type || oplus_chg_debug_notify_flag_is_set(OPLUS_NOTIFY_CHARGER_INFO)) { -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - if (delayed_work_pending(&oplus_chg_debug_info.send_info_dwork)) - cancel_delayed_work_sync(&oplus_chg_debug_info.send_info_dwork); - mutex_lock(&oplus_chg_debug_info.dcs_info_lock); -#endif memset(oplus_chg_debug_msg, 0x0, sizeof(oplus_chg_debug_msg)); getnstimeofday(&ts); rtc_time_to_tm(ts.tv_sec, &tm); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - ret += sizeof(struct kernel_packet_info); - - ret += snprintf(&oplus_chg_debug_msg[ret], OPLUS_CHG_DEBUG_MSG_LEN - ret, - OPLUS_CHG_DEBUG_EVENT_ID"$$"); -#endif //add for common ret += snprintf(&oplus_chg_debug_msg[ret], OPLUS_CHG_DEBUG_MSG_LEN - ret, "type@@0x%x", oplus_chg_debug_info.notify_type); @@ -950,26 +829,13 @@ static void oplus_chg_print_debug_info(struct oplus_chg_chip *chip) ret += snprintf(&oplus_chg_debug_msg[ret], OPLUS_CHG_DEBUG_MSG_LEN - ret, "%s", oplus_chg_debug_info.bcc_buf); } -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - mutex_unlock(&oplus_chg_debug_info.dcs_info_lock); - - chg_err("[feedback] %s\n", &oplus_chg_debug_msg[sizeof(struct kernel_packet_info)]); - - if (oplus_chg_debug_info.notify_type || - oplus_chg_debug_notify_flag_is_set(OPLUS_NOTIFY_CHARGER_INFO)) { - ret = oplus_chg_pack_debug_info(chip); - if (!ret) { - oplus_chg_debug_info.retry_cnt = SEND_INFO_MAX_CNT; - } - } -#else printk(KERN_ERR "%s\n", oplus_chg_debug_msg); if (ret > OPLUS_ERROR_LENGTH) printk(KERN_ERR "debug msg:%s\n", &oplus_chg_debug_msg[ret-OPLUS_ERROR_LENGTH]); if (chg_check_point_debug&OPEN_LOG_BIT) { chg_err("[debug test]%s\n", oplus_chg_debug_msg); } -#endif + oplus_chg_debug_info.real_charger_type = oplus_chg_get_real_charger_type(chip); } } @@ -2883,11 +2749,7 @@ int oplus_chg_debug_info_init(struct oplus_chg_chip *chip) oplus_chg_debug_info.batt_psy = power_supply_get_by_name("battery"); oplus_chg_debug_info.oplus_chg_debug_wq = create_workqueue("oplus_chg_debug_wq"); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - oplus_chg_debug_info.dcs_info = (struct kernel_packet_info *)&oplus_chg_debug_msg[0]; - INIT_DELAYED_WORK(&oplus_chg_debug_info.send_info_dwork, oplus_chg_send_info_dwork); - mutex_init(&oplus_chg_debug_info.dcs_info_lock); -#endif + INIT_DELAYED_WORK(&oplus_chg_debug_info.soc_load_dwork, oplus_chg_soc_load_dwork); oplus_chg_debug_info_parse_dt(chip); diff --git a/drivers/power/oplus/oplus_debug_info.h b/drivers/power/oplus/oplus_debug_info.h index 9c2f13675e28..a30569ff57e9 100644 --- a/drivers/power/oplus/oplus_debug_info.h +++ b/drivers/power/oplus/oplus_debug_info.h @@ -156,14 +156,6 @@ struct oplus_chg_debug_info { int rechg_counts;/*add for rechg counts*/ struct workqueue_struct *oplus_chg_debug_wq; -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - struct kernel_packet_info *dcs_info; - struct mutex dcs_info_lock; -#define SEND_INFO_DELAY 3000 - struct delayed_work send_info_dwork; -#define SEND_INFO_MAX_CNT 5 - int retry_cnt; -#endif char flag_reason[32]; char type_reason[32]; char sc85x7_error_reason[32]; diff --git a/drivers/power/oplus/v2/monitor/oplus_chg_track.c b/drivers/power/oplus/v2/monitor/oplus_chg_track.c index 6d03277a0fc0..b5624e4a7906 100644 --- a/drivers/power/oplus/v2/monitor/oplus_chg_track.c +++ b/drivers/power/oplus/v2/monitor/oplus_chg_track.c @@ -20,11 +20,6 @@ #include #include -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -#include -#endif - #include #include #include @@ -382,10 +377,6 @@ struct oplus_chg_track { wait_queue_head_t upload_wq; struct workqueue_struct *trigger_upload_wq; -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - struct kernel_packet_info *dcs_info; -#endif struct delayed_work upload_info_dwork; struct mutex dcs_info_lock; int dwork_retry_cnt; @@ -448,10 +439,6 @@ static struct oplus_chg_track *g_track_chip; static struct dentry *track_debugfs_root; static DEFINE_MUTEX(debugfs_root_mutex); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -static int oplus_chg_track_pack_dcs_info(struct oplus_chg_track *chip); -#endif static int oplus_chg_track_get_charger_type(struct oplus_monitor *monitor, struct oplus_chg_track_status *track_status, @@ -460,58 +447,6 @@ static int oplus_chg_track_obtain_wls_break_sub_crux_info( struct oplus_chg_track *track_chip, char *crux_info); static int oplus_chg_track_upload_trigger_data(oplus_chg_track_trigger data); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -static struct type_reason_table track_type_reason_table[] = { - { TRACK_NOTIFY_TYPE_DEFAULT, "default" }, - { TRACK_NOTIFY_TYPE_SOC_JUMP, "soc_error" }, - { TRACK_NOTIFY_TYPE_GENERAL_RECORD, "general_record" }, - { TRACK_NOTIFY_TYPE_NO_CHARGING, "no_charging" }, - { TRACK_NOTIFY_TYPE_CHARGING_SLOW, "charge_slow" }, - { TRACK_NOTIFY_TYPE_CHARGING_BREAK, "charge_break" }, - { TRACK_NOTIFY_TYPE_DEVICE_ABNORMAL, "device_abnormal" }, - { TRACK_NOTIFY_TYPE_IC_ERROR, "ic_error" }, -}; - -static struct flag_reason_table track_flag_reason_table[] = { - { TRACK_NOTIFY_FLAG_DEFAULT, "default" }, - { TRACK_NOTIFY_FLAG_UI_SOC_LOAD_JUMP, "UiSoc_LoadSocJump" }, - { TRACK_NOTIFY_FLAG_SOC_JUMP, "SocJump" }, - { TRACK_NOTIFY_FLAG_UI_SOC_JUMP, "UiSocJump" }, - { TRACK_NOTIFY_FLAG_UI_SOC_TO_SOC_JUMP, "UiSoc-SocJump" }, - - { TRACK_NOTIFY_FLAG_CHARGER_INFO, "ChargerInfo" }, - { TRACK_NOTIFY_FLAG_UISOC_KEEP_1_T_INFO, "UisocKeep1TInfo" }, - { TRACK_NOTIFY_FLAG_VBATT_TOO_LOW_INFO, "VbattTooLowInfo" }, - { TRACK_NOTIFY_FLAG_USBTEMP_INFO, "UsbTempInfo" }, - { TRACK_NOTIFY_FLAG_VBATT_DIFF_OVER_INFO, "VbattDiffOverInfo" }, - { TRACK_NOTIFY_FLAG_WLS_TRX_INFO, "WlsTrxInfo" }, - - { TRACK_NOTIFY_FLAG_NO_CHARGING, "NoCharging" }, - - { TRACK_NOTIFY_FLAG_CHG_SLOW_TBATT_WARM, "BattTempWarm" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_TBATT_COLD, "BattTempCold" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_NON_STANDARD_PA, "NonStandardAdatpter" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_BATT_CAP_HIGH, "BattCapHighWhenPlugin" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_COOLDOWN, "CoolDownCtlLongTime" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_WLS_SKEW, "WlsSkew" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_WLS_SKEW, "VerityFail" }, - { TRACK_NOTIFY_FLAG_CHG_SLOW_OTHER, "Other" }, - - { TRACK_NOTIFY_FLAG_FAST_CHARGING_BREAK, "FastChgBreak" }, - { TRACK_NOTIFY_FLAG_GENERAL_CHARGING_BREAK, "GeneralChgBreak" }, - { TRACK_NOTIFY_FLAG_WLS_CHARGING_BREAK, "WlsChgBreak" }, - - { TRACK_NOTIFY_FLAG_WLS_TRX_ABNORMAL, "WlsTrxAbnormal" }, - { TRACK_NOTIFY_FLAG_GPIO_ABNORMAL, "GpioAbnormal" }, - { TRACK_NOTIFY_FLAG_CP_ABNORMAL, "CpAbnormal" }, - { TRACK_NOTIFY_FLAG_PLAT_PMIC_ABNORMAL, "PlatPmicAbnormal" }, - { TRACK_NOTIFY_FLAG_EXTERN_PMIC_ABNORMAL, "ExternPmicAbnormal" }, - { TRACK_NOTIFY_FLAG_GAGUE_ABNORMAL, "GagueAbnormal" }, - { TRACK_NOTIFY_FLAG_DCHG_ABNORMAL, "DchgAbnormal" }, -}; -#endif - static struct oplus_chg_track_type wired_type_table[] = { { OPLUS_CHG_USB_TYPE_UNKNOWN, TRACK_POWER_2500MW, "unknow" }, { OPLUS_CHG_USB_TYPE_SDP, TRACK_POWER_2500MW, "sdp" }, @@ -1822,39 +1757,6 @@ static int oplus_chg_track_init(struct oplus_chg_track *track_dev) return ret; } -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -static int oplus_chg_track_get_type_tag(int type_reason, char *type_reason_tag) -{ - int i = 0; - - for (i = 0; i < ARRAY_SIZE(track_type_reason_table); i++) { - if (track_type_reason_table[i].type_reason == type_reason) { - strncpy(type_reason_tag, - track_type_reason_table[i].type_reason_tag, - OPLUS_CHG_TRIGGER_REASON_TAG_LEN - 1); - break; - } - } - return i; -} - -static int oplus_chg_track_get_flag_tag(int flag_reason, char *flag_reason_tag) -{ - int i = 0; - - for (i = 0; i < ARRAY_SIZE(track_flag_reason_table); i++) { - if (track_flag_reason_table[i].flag_reason == flag_reason) { - strncpy(flag_reason_tag, - track_flag_reason_table[i].flag_reason_tag, - OPLUS_CHG_TRIGGER_REASON_TAG_LEN - 1); - break; - } - } - return i; -} -#endif - static bool oplus_chg_track_trigger_data_is_valid(oplus_chg_track_trigger *pdata) { @@ -2003,10 +1905,6 @@ static int oplus_chg_track_thread(void *data) chg_err("oplus chg false wakeup, rc=%d\n", rc); mutex_lock(&chip->trigger_data_lock); chip->trigger_data_ok = false; -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - oplus_chg_track_pack_dcs_info(chip); -#endif chip->dwork_retry_cnt = OPLUS_CHG_TRACK_DWORK_RETRY_CNT; queue_delayed_work(chip->trigger_upload_wq, &chip->upload_info_dwork, 0); @@ -2059,63 +1957,6 @@ static int oplus_chg_track_get_local_time_s(void) */ #define TRACK_VERSION "3.1" -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -static int oplus_chg_track_pack_dcs_info(struct oplus_chg_track *chip) -{ - int ret = 0; - int len; - struct rtc_time tm; - char log_tag[] = OPLUS_CHG_TRACK_LOG_TAG; - char event_id[] = OPLUS_CHG_TRACK_EVENT_ID; - char *p_data = (char *)(chip->dcs_info); - char type_reason_tag[OPLUS_CHG_TRIGGER_REASON_TAG_LEN] = { 0 }; - char flag_reason_tag[OPLUS_CHG_TRIGGER_REASON_TAG_LEN] = { 0 }; - - memset(p_data, 0x0, sizeof(char) * OPLUS_CHG_TRIGGER_MSG_LEN); - ret += sizeof(struct kernel_packet_info); - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, - OPLUS_CHG_TRACK_EVENT_ID); - - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, - "$$track_ver@@%s", TRACK_VERSION); - - oplus_chg_track_get_type_tag(chip->trigger_data.type_reason, - type_reason_tag); - oplus_chg_track_get_flag_tag(chip->trigger_data.flag_reason, - flag_reason_tag); - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, - "$$type_reason@@%s", type_reason_tag); - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, - "$$flag_reason@@%s", flag_reason_tag); - - oplus_chg_track_get_current_time_s(&tm); - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, - "$$time@@[%04d-%02d-%02d %02d:%02d:%02d]", tm.tm_year, - tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, - tm.tm_sec); - - ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, "%s", - chip->trigger_data.crux_info); - - len = strlen(&(p_data[sizeof(struct kernel_packet_info)])); - if (len) { - mutex_lock(&chip->dcs_info_lock); - memset(chip->dcs_info, 0x0, sizeof(struct kernel_packet_info)); - - chip->dcs_info->type = 1; - memcpy(chip->dcs_info->log_tag, log_tag, strlen(log_tag)); - memcpy(chip->dcs_info->event_id, event_id, strlen(event_id)); - chip->dcs_info->payload_length = len + 1; - mutex_unlock(&chip->dcs_info_lock); - chg_info("%s\n", chip->dcs_info->payload); - return 0; - } - - return -1; -} -#endif - static void oplus_chg_track_upload_info_dwork(struct work_struct *work) { int ret = 0; @@ -2126,12 +1967,6 @@ static void oplus_chg_track_upload_info_dwork(struct work_struct *work) if (!chip) return; - mutex_lock(&chip->dcs_info_lock); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - ret = fb_kevent_send_to_user(chip->dcs_info); -#endif - mutex_unlock(&chip->dcs_info_lock); if (!ret) complete(&chip->trigger_ack); else if (chip->dwork_retry_cnt > 0) @@ -4450,16 +4285,6 @@ int oplus_chg_track_driver_init(struct oplus_monitor *monitor) } monitor->track = track_dev; track_dev->monitor = monitor; - -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - track_dev->dcs_info = (struct kernel_packet_info *)kmalloc( - sizeof(char) * OPLUS_CHG_TRIGGER_MSG_LEN, GFP_KERNEL); - if (track_dev->dcs_info == NULL) { - rc = -ENOMEM; - goto dcs_info_kmalloc_fail; - } -#endif track_dev->dev = monitor->dev; rc = oplus_chg_track_debugfs_init(track_dev); @@ -4502,11 +4327,6 @@ parse_dt_err: if (track_debugfs_root) debugfs_remove_recursive(track_debugfs_root); debugfs_create_fail: -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - kfree(track_dev->dcs_info); -dcs_info_kmalloc_fail: -#endif devm_kfree(monitor->dev, track_dev); monitor->track = NULL; return rc; @@ -4531,10 +4351,7 @@ int oplus_chg_track_driver_exit(struct oplus_monitor *monitor) if (track_debugfs_root) debugfs_remove_recursive(track_debugfs_root); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \ - defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - kfree(track_dev->dcs_info); -#endif + devm_kfree(monitor->dev, track_dev); return 0; } diff --git a/drivers/soc/oplus/sensor/oplus_sensor_feedback/sensor_feedback.c b/drivers/soc/oplus/sensor/oplus_sensor_feedback/sensor_feedback.c index 37dd40ddc0a8..bb3717fd2883 100644 --- a/drivers/soc/oplus/sensor/oplus_sensor_feedback/sensor_feedback.c +++ b/drivers/soc/oplus/sensor/oplus_sensor_feedback/sensor_feedback.c @@ -24,9 +24,6 @@ #include #include "sensor_feedback.h" -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) -#include -#endif #define ALIGN4(s) ((sizeof(s) + 3)&(~0x3)) @@ -345,9 +342,6 @@ static void cal_subsystem_sleep_ratio(struct subsystem_desc *subsystem_desc) { adsp_sleep_ratio_fied, subsystem_desc[index].subsys_name, subsys_sleep_ratio); - #if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - oplus_kevent_fb(FB_SENSOR, SENSOR_POWER_TYPE, payload); - #endif } } } @@ -439,9 +433,6 @@ static ssize_t hal_info_store(struct device *dev, strbuf); pr_info("payload =%s\n", payload); - #if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - oplus_kevent_fb(FB_SENSOR, g_fb_conf[index].fb_event_id, payload); - #endif return count; } @@ -714,10 +705,6 @@ static int parse_shr_info(struct sensor_fb_cxt *sensor_fb_cxt) detail_buff, sensor_fb_cxt->fb_smem.event[count].name); pr_info("payload1 =%s\n", payload); -#if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || defined(CONFIG_OPLUS_FEATURE_FEEDBACK_MODULE) - oplus_kevent_fb(FB_SENSOR, g_fb_conf[index].fb_event_id, payload); - pr_info("send oplus kevent fb\n"); -#endif } return ret; diff --git a/drivers/soc/oplus/system/Kconfig b/drivers/soc/oplus/system/Kconfig index a9dd4b444909..5e4486420736 100644 --- a/drivers/soc/oplus/system/Kconfig +++ b/drivers/soc/oplus/system/Kconfig @@ -36,7 +36,6 @@ config OPLUS_FEATURE_DETAILHEAD define this config to add cpu number and current id and current comm to kmsg -source "drivers/soc/oplus/system/feedback/Kconfig" source "drivers/soc/oplus/system/shutdown_detect/Kconfig" source "drivers/soc/oplus/system/oplus_project/Kconfig" source "drivers/soc/oplus/system/hung_task_enhance/Kconfig" @@ -54,10 +53,6 @@ source "drivers/soc/oplus/system/qcom_pmicwd/Kconfig" source "drivers/soc/oplus/system/dump_reason/Kconfig" #endif /* OPLUS_FEATURE_DUMP_REASON */ -#ifdef OPLUS_FEATURE_MM_FEEDBACK -source "drivers/soc/oplus/system/oplus_mm_fb/Kconfig" -#endif /* OPLUS_FEATURE_MM_FEEDBACK */ - #ifdef OPLUS_FEATURE_QCOM_WATCHDOG source "drivers/soc/oplus/system/qcom_watchdog/Kconfig" #endif /* OPLUS_FEATURE_QCOM_WATCHDOG */ diff --git a/drivers/soc/oplus/system/Makefile b/drivers/soc/oplus/system/Makefile index f2c18d91f7d4..a4c59aefd551 100644 --- a/drivers/soc/oplus/system/Makefile +++ b/drivers/soc/oplus/system/Makefile @@ -2,7 +2,6 @@ # Copyright (C) 2018-2020 Oplus. All rights reserved. obj-y += platform.o -obj-$(CONFIG_OPLUS_FEATURE_FEEDBACK) += feedback/ obj-$(CONFIG_OPLUS_FEATURE_SHUTDOWN_DETECT) += shutdown_detect/ obj-$(CONFIG_OPLUS_FEATURE_OPROJECT) += oplus_project/ obj-$(CONFIG_OPLUS_FEATURE_HUNG_TASK_ENHANCE) += hung_task_enhance/ @@ -23,10 +22,6 @@ endif obj-$(CONFIG_OPLUS_FEATURE_QCOM_PMICWD) += qcom_pmicwd/ #endif /* OPLUS_FEATURE_QCOM_PMICWD */ -#ifdef OPLUS_FEATURE_MM_FEEDBACK -obj-$(CONFIG_OPLUS_FEATURE_MM_FEEDBACK) += oplus_mm_fb/ -#endif /* OPLUS_FEATURE_MM_FEEDBACK */ - #ifdef OPLUS_FEATURE_QCOM_WATCHDOG obj-$(CONFIG_OPLUS_FEATURE_QCOM_WATCHDOG) += qcom_watchdog/ #endif /* OPLUS_FEATURE_QCOM_WATCHDOG */ diff --git a/drivers/soc/oplus/system/feedback/Kconfig b/drivers/soc/oplus/system/feedback/Kconfig deleted file mode 100644 index 7aae6099a55d..000000000000 --- a/drivers/soc/oplus/system/feedback/Kconfig +++ /dev/null @@ -1,8 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -# Copyright (C) 2018-2020 Oplus. All rights reserved. -config OPLUS_FEATURE_FEEDBACK - tristate "Oplus system feedback" - default n - depends on OPLUS_SYSTEM_KERNEL - help - define this config to init oplus system feedback. diff --git a/drivers/soc/oplus/system/feedback/Makefile b/drivers/soc/oplus/system/feedback/Makefile deleted file mode 100644 index 44f9c1f5ee01..000000000000 --- a/drivers/soc/oplus/system/feedback/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -# Copyright (C) 2018-2020 Oplus. All rights reserved. -obj-$(CONFIG_OPLUS_FEATURE_FEEDBACK) += kernel_fb.o - diff --git a/drivers/soc/oplus/system/feedback/kernel_fb.c b/drivers/soc/oplus/system/feedback/kernel_fb.c deleted file mode 100644 index 5f8eb717cf38..000000000000 --- a/drivers/soc/oplus/system/feedback/kernel_fb.c +++ /dev/null @@ -1,601 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (C) 2018-2020 Oplus. All rights reserved. - */ -/*************************************************************** -** File : kerbel_fb.c -** Description : BSP kevent fb data -** Version : 1.0 -******************************************************************/ -#define pr_fmt(fmt) "" fmt - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "oplus_fb_guard_netlink.h" - - -#define MAX_LOG (31) -#define MAX_ID (19) -#define LIST_MAX (50) -#define DELAY_REPORT_US (30*1000*1000) -#define MAX_BUF_LEN (2048) -#define CAUSENAME_SIZE 128 - -struct packets_pool { - struct list_head packets; - struct task_struct *flush_task; - spinlock_t wlock; - bool wlock_init; -}; - -struct packet { - struct kernel_packet_info *pkt; - struct list_head list; - int retry; -}; - -static struct packets_pool *g_pkts = NULL; - -static char *const _tag[FB_MAX_TYPE + 1] = { - "fb_stability", - "fb_fs", - "fb_storage", - "PSW_BSP_SENSOR", - "fb_boot", -}; -static char fid[CAUSENAME_SIZE]={""}; - - -static volatile unsigned int kevent_pid; - -#define OPLUS_KEVENT_MAX_UP_PALOAD_LEN 2048 -#define OPLUS_KEVENT_TEST_TAG "test_event" -#define OPLUS_KEVENT_TEST_ID "test_check" - -static int fb_keventupload_sendpid_cmd(struct sk_buff *skb, - struct genl_info *info) -{ - struct nlattr *na = NULL; - unsigned int *p_data = NULL; - - pr_info(" kernel recv cmd \n"); - - if (info->attrs[FB_GUARD_CMD_ATTR_MSG]) { - na = info->attrs[FB_GUARD_CMD_ATTR_MSG]; - /*PRINT_FORMAT(nla_data(na), nla_len(na));*/ - pr_info(" nla_len(na) is %d \n", nla_len(na)); - p_data = nla_data(na); - kevent_pid = *p_data; - pr_info(" kevent_pid is 0x%x \n", kevent_pid); - } - - return 0; -} - -static int fb_keventupload_test_upload(struct sk_buff *skb, - struct genl_info *info) -{ - int ret = 0; - struct nlattr *na = NULL; - struct msg_test_upload *p_test_upload = NULL; - struct kernel_packet_info *p_dcs_event = NULL; - size_t data_len = 0; - - pr_info(" fb_keventupload_test_upload \n"); - - if (info->attrs[FB_GUARD_CMD_ATTR_OPT]) { - na = info->attrs[FB_GUARD_CMD_ATTR_OPT]; - /*PRINT_FORMAT(nla_data(na), nla_len(na));*/ - pr_info(" nla_len(na) is %d \n", nla_len(na)); - p_test_upload = (struct msg_test_upload *)nla_data(na); - kevent_pid = p_test_upload->pro_pid; - pr_info(" p_test_upload->pro_pid is %u, p_test_upload->val is %u, \n", - p_test_upload->pro_pid, p_test_upload->val); - - - if ((p_test_upload->val) > OPLUS_KEVENT_MAX_UP_PALOAD_LEN) { - pr_err("[ERROR]:p_test_upload->val too long \n", p_test_upload->val); - return -1; - } - - data_len = p_test_upload->val + sizeof(struct kernel_packet_info); - pr_info(" data_len is %u\n", data_len); - p_dcs_event = (struct kernel_packet_info *)kmalloc(data_len, GFP_ATOMIC); - - if (NULL == p_dcs_event) { - pr_err("[ERROR]:kmalloc for p_dcs_event err\n"); - return -1; - } - - pr_info(" p_dcs_event kmalloc ok .\n"); - - memset((unsigned char *)p_dcs_event, 0x00, data_len); - p_dcs_event->type = 1; - strncpy(p_dcs_event->log_tag, OPLUS_KEVENT_TEST_TAG, - sizeof(p_dcs_event->log_tag)); - strncpy(p_dcs_event->event_id, OPLUS_KEVENT_TEST_ID, - sizeof(p_dcs_event->event_id)); - p_dcs_event->payload_length = p_test_upload->val; - memset(p_dcs_event->payload, 0xFF, p_test_upload->val); - - ret = fb_kevent_send_to_user(p_dcs_event); - - if (ret) { - pr_err("[ERROR]:fb_kevent_send_to_user err, ret is %d \n", ret); - } - - kfree(p_dcs_event); - } - - return 0; -} - -static const struct genl_ops oplus_fb_kevent_upload_ops[] = { - { - .cmd = FB_GUARD_CMD_GENL_SENDPID, - .doit = fb_keventupload_sendpid_cmd, - /*.policy = taskstats_cmd_get_policy,*/ - /*.flags = GENL_ADMIN_PERM,*/ - }, - { - .cmd = FB_GUARD_CMD_GENL_TEST_UPLOAD, - .doit = fb_keventupload_test_upload, - /*.dumpit = taskstats2_foreach,*/ - /*.policy = taskstats_cmd_get_policy,*/ - }, -}; - -static struct genl_family oplus_fb_kevent_family __ro_after_init = { - .name = OPLUS_FB_GUARD_PROTOCAL_NAME, - .version = OPLUS_FB_GUARD_GENL_VERSION, - .maxattr = FB_GUARD_CMD_ATTR_MAX, - .module = THIS_MODULE, - .ops = oplus_fb_kevent_upload_ops, - .n_ops = ARRAY_SIZE(oplus_fb_kevent_upload_ops), -}; - -static inline int genl_msg_prepare_usr_msg(unsigned char cmd, size_t size, - pid_t pid, struct sk_buff **skbp) -{ - struct sk_buff *skb; - - /* create a new netlink msg */ - skb = genlmsg_new(size, GFP_KERNEL); - - if (skb == NULL) { - return -ENOMEM; - } - - /* Add a new netlink message to an skb */ - genlmsg_put(skb, pid, 0, &oplus_fb_kevent_family, 0, cmd); - - *skbp = skb; - return 0; -} - -static inline int genl_msg_mk_usr_msg(struct sk_buff *skb, int type, void *data, - int len) -{ - int ret; - - /* add a netlink attribute to a socket buffer */ - if ((ret = nla_put(skb, type, len, data)) != 0) { - return ret; - } - - return 0; -} - -int fb_kevent_send_to_user(struct kernel_packet_info *userinfo) -{ - int ret = 0; - struct sk_buff *skbuff = NULL; - void *head = NULL; - size_t data_len = 0; - - /*max_len */ - pr_info(" fb_kevent_send_to_user\n"); - - if (userinfo->payload_length >= OPLUS_KEVENT_MAX_UP_PALOAD_LEN) { - pr_err("[ERROR]:fb_kevent_send_to_user: payload_length out of range\n"); - ret = -1; - return ret; - } - - data_len = userinfo->payload_length + sizeof(struct kernel_packet_info); - pr_info(" data_len is %u\n", data_len); - - ret = genl_msg_prepare_usr_msg(FB_GUARD_CMD_GENL_UPLOAD, data_len, kevent_pid, - &skbuff); - - if (ret) { - pr_err("[ERROR]:genl_msg_prepare_usr_msg err, ret is %d \n"); - return ret; - } - - ret = genl_msg_mk_usr_msg(skbuff, FB_GUARD_CMD_ATTR_MSG, userinfo, data_len); - - if (ret) { - kfree_skb(skbuff); - return ret; - } - - head = genlmsg_data(nlmsg_data(nlmsg_hdr(skbuff))); - - genlmsg_end(skbuff, head); - - ret = genlmsg_unicast(&init_net, skbuff, kevent_pid); - - if (ret < 0) { - return ret; - } - - return 0; -} - -EXPORT_SYMBOL(fb_kevent_send_to_user); - - - -/* -int kevent_send_to_user(struct kernel_packet_info *userinfo) -{ - return fb_kevent_send_to_user(userinfo); -}*/ - -static struct packet * package_alloc( - fb_tag tag_id, const char *event_id, unsigned char *payload) -{ - struct packet *packet; - struct kernel_packet_info *pkt; - char *tmp = payload; - - if (tag_id > FB_MAX_TYPE || !event_id || !payload || !_tag[tag_id]) { - return NULL; - } - - packet = (struct packet *)kmalloc(sizeof(struct packet), GFP_ATOMIC); - if (!packet) { - return NULL; - } - - /*presplit payload, '\n' is not allowed*/ - for(;*tmp != '\0'; tmp++) { - if (*tmp == '\n') { - *tmp = '\0'; - break; - } - } - - pkt = (struct kernel_packet_info *) - kzalloc(sizeof(struct kernel_packet_info) + strlen(payload) + 1, GFP_ATOMIC); - - if (!pkt) { - kfree(packet); - return NULL; - } - - packet->pkt = pkt; - packet->retry = 4; /* retry 4 times at most*/ - pkt->type = 1; /*means only string is available*/ - - memcpy(pkt->log_tag, _tag[tag_id], strlen(_tag[tag_id]) > MAX_LOG?MAX_LOG:strlen(_tag[tag_id])); - memcpy(pkt->event_id, event_id, strlen(event_id) > MAX_ID?MAX_ID:strlen(event_id)); - pkt->payload_length = strlen(payload) + 1; - memcpy(pkt->payload, payload, strlen(payload)); - - return packet; -} - -static void package_release(struct packet *packet) -{ - if (packet) { - kfree(packet->pkt); - kfree(packet); - } -} - -int oplus_kevent_fb(fb_tag tag_id, const char *event_id, unsigned char *payload) -{ - struct packet *packet; - unsigned long flags; - - /*ignore before wlock init*/ - if (!g_pkts->wlock_init) { - return -ENODEV; - } - - packet = package_alloc(tag_id, event_id, payload); - if (!packet) { - return -ENODEV; - } - - - spin_lock_irqsave(&g_pkts->wlock, flags); - list_add(&packet->list, &g_pkts->packets); - spin_unlock_irqrestore(&g_pkts->wlock, flags); - - wake_up_process(g_pkts->flush_task); - - return 0; -} -EXPORT_SYMBOL(oplus_kevent_fb); - - - -static unsigned int BKDRHash(char *str, unsigned int len) -{ - unsigned int seed = 131; - /* 31 131 1313 13131 131313 etc.. */ - unsigned int hash = 0; - unsigned int i = 0; - - if (str == NULL) { - return 0; - } - - for(i = 0; i < len; str++, i++) { - hash = (hash * seed) + (*str); - } - - return hash; -} - -int oplus_kevent_fb_str(fb_tag tag_id, const char *event_id, unsigned char *str) -{ - unsigned char payload[1024] = {0x00}; - unsigned int hashid = 0; - int ret = 0; - char strHashSource[CAUSENAME_SIZE] = {0x00}; -/* - unsigned long rdm = 0; - rdm = get_random_u64(); - snprintf(strHashSource, CAUSENAME_SIZE, "%s %lu", str, rdm); -*/ - snprintf(strHashSource, CAUSENAME_SIZE, "%s", str); - hashid = BKDRHash(strHashSource, strlen(strHashSource)); -/* - memset(fid, 0 , CAUSENAME_SIZE); - snprintf(fid, CAUSENAME_SIZE, "%u", hashid); -*/ - ret = snprintf(payload, sizeof(payload), - "NULL$$EventField@@%u$$FieldData@@%s$$detailData@@%s", hashid, str, - _tag[tag_id]); - pr_err("%s, payload= %s, ret=%d\n", __func__, payload, ret); - return oplus_kevent_fb(tag_id, event_id, payload); -} -EXPORT_SYMBOL(oplus_kevent_fb_str); - -/*thread to deal with the buffer list*/ -static int fb_flush_thread(void *arg) -{ - struct packets_pool *pkts_pool = (struct packets_pool *)arg; - struct packet *tmp, *s; - unsigned long flags; - struct list_head list_tmp; - - while(!kthread_should_stop()) { - if (list_empty(&pkts_pool->packets)) { - set_current_state(TASK_INTERRUPTIBLE); - schedule(); - } - - set_current_state(TASK_RUNNING); - - spin_lock_irqsave(&pkts_pool->wlock, flags); - INIT_LIST_HEAD(&list_tmp); - list_splice_init(&pkts_pool->packets, &list_tmp); - spin_unlock_irqrestore(&pkts_pool->wlock, flags); - - list_for_each_entry_safe(s, tmp, &list_tmp, list) { - if (s->pkt) { - if (fb_kevent_send_to_user(s->pkt) && s->retry) { - pr_debug("failed to send feedback %s\n", s->pkt->log_tag); - s->retry--; - spin_lock_irqsave(&pkts_pool->wlock, flags); - list_add(&s->list, &pkts_pool->packets); - spin_unlock_irqrestore(&pkts_pool->wlock, flags); - } else { - package_release(s); - } - - msleep(20); - } - } - } - - return 0; -} - -/* -* @format: tag_id:event_id:payload -*/ -static ssize_t kernel_fb_write(struct file *file, - const char __user *buf, - size_t count, - loff_t *lo) -{ - char *r_buf; - int tag_id = 0; - char event_id[MAX_ID] = {0}; - int idx1 = 0, idx2 = 0; - int len; - - r_buf = (char *)kzalloc(MAX_BUF_LEN, GFP_KERNEL); - if (!r_buf) { - return count; - } - - if (copy_from_user(r_buf, buf, MAX_BUF_LEN > count?count:MAX_BUF_LEN)) { - goto exit; - } - - r_buf[MAX_BUF_LEN - 1] ='\0'; /*make sure last bype is eof*/ - len = strlen(r_buf); - - tag_id = r_buf[0] - '0'; - if (tag_id > FB_MAX_TYPE || tag_id < 0) { - goto exit; - } - - while(idx1 < len) { - if (r_buf[idx1++] == ':') { - idx2 = idx1; - while (idx2 < len) { - if (r_buf[idx2++] == ':') { - break; - } - } - break; - } - } - - if (idx1 == len || idx2 == len) { - goto exit; - } - - memcpy(event_id, &r_buf[idx1], idx2-idx1-1 > MAX_ID?MAX_ID: idx2-idx1-1); - event_id[MAX_ID - 1] = '\0'; - - oplus_kevent_fb(tag_id, event_id, r_buf + idx2); - -exit: - - kfree(r_buf); - return count; -} - -static ssize_t kernel_fb_read(struct file *file, - char __user *buf, - size_t count, - loff_t *ppos) -{ - return count; -} - -static const struct file_operations kern_fb_fops = { - .write = kernel_fb_write, - .read = kernel_fb_read, - .open = simple_open, - .owner = THIS_MODULE, -}; - -static ssize_t crash_cause_read(struct file *file, - char __user *buf, - size_t count, - loff_t *off) -{ - char page[512] = {0x00}; - int len = 0; - - len = snprintf(page, sizeof(page), "%s", fid); - len = simple_read_from_buffer(buf, count, off, page, strlen(page)); - return len; -} - -static const struct file_operations crash_cause_fops = { - .read = crash_cause_read, - .open = simple_open, - .owner = THIS_MODULE, -}; - -static int __init kernel_fb_init(void) -{ - struct proc_dir_entry *d_entry = NULL; - int ret = 0; - - pr_err("%s\n", __func__); - - g_pkts = (struct packets_pool *)kzalloc(sizeof(struct packets_pool), - GFP_KERNEL); - - if (!g_pkts) { - ret = -ENOMEM; - goto failed_kzalloc; - } - - /*register gen_link family*/ - ret = genl_register_family(&oplus_fb_kevent_family); - - if (ret) { - pr_err("failed genl_register_family"); - goto failed_genl_register_family; - } - - INIT_LIST_HEAD(&g_pkts->packets); - spin_lock_init(&g_pkts->wlock); - - g_pkts->flush_task = kthread_create(fb_flush_thread, g_pkts, "fb_flush"); - if (!g_pkts->flush_task) { - pr_err("failed to kthread_create fb_flush\n"); - ret = -ENODEV; - goto failed_kthread_create; - } - - g_pkts->wlock_init = true; - - d_entry = proc_create_data("kern_fb", 0664, NULL, &kern_fb_fops, NULL); - if (!d_entry) { - pr_err("failed to create kern_fb node\n"); - ret = -ENODEV; - goto failed_proc_create_data; - } - - d_entry = proc_create_data("crash_cause", 0664, NULL, &crash_cause_fops, NULL); - - if (!d_entry) { - pr_err("failed to create crash_cause node\n"); - ret = -ENODEV; - goto failed_proc_create_data; - } - - pr_info("kernel_fb_init probe ok\n"); - return 0; - -failed_proc_create_data: -failed_kthread_create: - genl_unregister_family(&oplus_fb_kevent_family); -failed_genl_register_family: - kfree(g_pkts->flush_task); -failed_kzalloc: - return ret; -} - -static void __exit kernel_fb_exit(void) -{ - genl_unregister_family(&oplus_fb_kevent_family); - kfree(g_pkts->flush_task); - return; -} - -/*core_initcall(kernel_fb_init);*/ - -module_init(kernel_fb_init); -module_exit(kernel_fb_exit); -MODULE_LICENSE("GPL v2"); diff --git a/drivers/soc/oplus/system/feedback/oplus_fb_guard_netlink.h b/drivers/soc/oplus/system/feedback/oplus_fb_guard_netlink.h deleted file mode 100644 index 8b4cf51e0304..000000000000 --- a/drivers/soc/oplus/system/feedback/oplus_fb_guard_netlink.h +++ /dev/null @@ -1,64 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/************************************************************** -* Copyright (c) 2008- 2030 OPLUS Mobile communication Corp.ltd All rights reserved. -* -* File : oplus_feedback_guard_netlink.h -* Description: For oplus_feedback_guard_netlink -* Version : 1.0 -* Date : 2020-11-24 -* Author : -* TAG : -****************************************************************/ -#ifndef _OPLUS_FB_GUARD_NETLINK_H -#define _OPLUS_FB_GUARD_NETLINK_H - -#define OPLUS_FB_GUARD_TEST_NETLINK_CMD_MIN 0 -#define OPLUS_FB_GUARD_TEST_NETLINK_SEND_PID 1 -#define OPLUS_FB_GUARD_TEST_NETLINK_RECEV 2 -#define OPLUS_FB_GUARD_TEST_NETLINK_CMD_MAX 3 - -#define OPLUS_FB_GUARD_MSG_TO_KERNEL_BUF_LEN 256 -#define OPLUS_FB_GUARD_MSG_FROM_KERNEL_BUF_LEN (2048 + 128) - - -#define OPLUS_FB_GUARD_PROTOCAL_NAME "fb_guard" -#define OPLUS_FB_GUARD_GENL_VERSION 0x01 -#define OPLUS_FB_GUARD_PROTOCAL_NAME_MAX_LEN 100 - -enum { - FB_GUARD_CMD_ATTR_UNSPEC = 0, - FB_GUARD_CMD_ATTR_MSG, - FB_GUARD_CMD_ATTR_OPT, - __FB_GUARD_CMD_ATTR_MAX, -}; - -#define FB_GUARD_CMD_ATTR_MAX (__FB_GUARD_CMD_ATTR_MAX - 1) - -enum { - FB_GUARD_CMD_GENL_UNSPEC = 0, - FB_GUARD_CMD_GENL_SENDPID, - FB_GUARD_CMD_GENL_UPLOAD, - FB_GUARD_CMD_GENL_TEST_UPLOAD, -}; - - -struct msg_to_kernel { - struct nlmsghdr n_hd; - struct genlmsghdr g_hd; - char buf[OPLUS_FB_GUARD_MSG_TO_KERNEL_BUF_LEN]; -}; - -struct msg_from_kernel { - struct nlmsghdr n_hd; - struct genlmsghdr g_hd; - char buf[OPLUS_FB_GUARD_MSG_FROM_KERNEL_BUF_LEN]; -}; - -struct msg_test_upload { - unsigned int pro_pid; - unsigned int val; -}; - -int oplus_fb_guard_test_netlink(int cmd, unsigned int val); - -#endif diff --git a/drivers/soc/oplus/system/include/kernel_fb.h b/drivers/soc/oplus/system/include/kernel_fb.h deleted file mode 100644 index 522db9be1ee3..000000000000 --- a/drivers/soc/oplus/system/include/kernel_fb.h +++ /dev/null @@ -1,40 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (C) 2018-2020 Oplus. All rights reserved. - */ - -#ifndef __KERNEL_FEEDBACK_H -#define __KERNEL_FEEDBACK_H - -typedef enum { - FB_STABILITY = 0, - FB_FS, - FB_STORAGE, - FB_SENSOR, - FB_BOOT, - FB_MAX_TYPE = FB_BOOT, -} fb_tag; - -#define FB_STABILITY_ID_CRASH "202007272030" - - -#define FB_SENSOR_ID_CRASH "10004" -#define FB_SENSOR_ID_QMI "202007272041" - -struct kernel_packet_info -{ - int type; /* 0:root,1:only string,other number represent other type */ - char log_tag[32]; /* logTag */ - char event_id[20]; /*eventID */ - size_t payload_length; /* Length of packet data */ - unsigned char payload[0]; /* Optional packet data */ -}__attribute__((packed)); - -int oplus_kevent_fb(fb_tag tag_id, const char *event_id, unsigned char *payload); -int oplus_kevent_fb_str(fb_tag tag_id, const char *event_id, unsigned char *str); - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-function" -int fb_kevent_send_to_user(struct kernel_packet_info *userinfo); -#pragma GCC diagnostic pop -#endif diff --git a/drivers/soc/oplus/system/include/oplus_mm_kevent_fb.h b/drivers/soc/oplus/system/include/oplus_mm_kevent_fb.h deleted file mode 100644 index 9b8171cafbfd..000000000000 --- a/drivers/soc/oplus/system/include/oplus_mm_kevent_fb.h +++ /dev/null @@ -1,105 +0,0 @@ -/*************************************************************** -** Copyright (C), 2018, OPLUS Mobile Comm Corp., Ltd -** File : oplus_mm_kevent_fb.h -** Description : MM kevent fb data -** Version : 1.0 -** Date : 2018/12/03 -** -** ------------------------------- Revision History: ----------- -** -** Guo.Ling 2018/12/03 1.0 Build this moudle -** LiPing-M 2019/01/29 1.1 Add SMMU for QCOM -******************************************************************/ -#ifndef _OPLUS_MM_KEVENT_FB_ -#define _OPLUS_MM_KEVENT_FB_ - -#define MAX_PAYLOAD_DATASIZE (512) -#define MM_KEVENT_MAX_PAYLOAD_SIZE MAX_PAYLOAD_DATASIZE -#define MAX_FUNC_LINE_SIZE (128) - -enum { - MM_FB_KEY_RATELIMIT_NONE = 0, - MM_FB_KEY_RATELIMIT_1MIN = 60 * 1000, - MM_FB_KEY_RATELIMIT_5MIN = 60 * 5 * 1000, - MM_FB_KEY_RATELIMIT_30MIN = 60 * 30 * 1000, - MM_FB_KEY_RATELIMIT_1H = MM_FB_KEY_RATELIMIT_30MIN * 2, - MM_FB_KEY_RATELIMIT_1DAY = MM_FB_KEY_RATELIMIT_1H * 24, -}; -#define FEEDBACK_DELAY_60S 60 - -#define OPLUS_FB_ADSP_CRASH_RATELIMIT (60 * 5 * 1000) /*ms, for mtk*/ - -enum OPLUS_MM_DIRVER_FB_EVENT_MODULE { - OPLUS_MM_DIRVER_FB_EVENT_DISPLAY = 0, - OPLUS_MM_DIRVER_FB_EVENT_AUDIO -}; - -/*------- multimedia bigdata feedback event id, start ------------ */ -#define OPLUS_AUDIO_EVENTID_ADSP_CRASH (10001) -#define OPLUS_AUDIO_EVENTID_HEADSET_DET (10009) -#define OPLUS_AUDIO_EVENTID_ADSP_RECOVERY_FAIL (10045) - -#define OPLUS_DISPLAY_EVENTID_DRIVER_ERR (12002) - -#define OPLUS_DISPLAY_EVENTID_GPU_FAULT (12005) - -/*this id just for test or debug */ -#define OPLUS_MM_EVENTID_TEST_OR_DEBUG (30000) -/*------- multimedia bigdata feedback event id, end ------------*/ - -#if IS_ENABLED(CONFIG_OPLUS_FEATURE_MM_FEEDBACK) -int upload_mm_fb_kevent_to_atlas_limit(unsigned int event_id, unsigned char *payload, int limit_ms); - -int upload_mm_fb_kevent_limit(enum OPLUS_MM_DIRVER_FB_EVENT_MODULE module, unsigned int event_id, - const char *name, int rate_limit_ms, unsigned int delay_s, char *payload); - -#define mm_fb_audio_kevent_named_delay(event_id, rate_limit_ms, delay_s, fmt, ...) \ -do { \ - char name[MAX_PAYLOAD_DATASIZE] = ""; \ - char kv_data[MAX_PAYLOAD_DATASIZE] = ""; \ - scnprintf(name, sizeof(name), "%s:%d", __func__, __LINE__); \ - scnprintf(kv_data, sizeof(kv_data), fmt, ##__VA_ARGS__); \ - upload_mm_fb_kevent_limit(OPLUS_MM_DIRVER_FB_EVENT_AUDIO, event_id, name, rate_limit_ms, delay_s, kv_data); \ -} while (0) - -#define mm_fb_kevent(m, id, name, rate_limit_ms, fmt, ...) \ - do { \ - char kv_data[MAX_PAYLOAD_DATASIZE] = ""; \ - scnprintf(kv_data, sizeof(kv_data), fmt, ##__VA_ARGS__); \ - upload_mm_fb_kevent_limit(m, id, name, rate_limit_ms, 0, kv_data); \ - } while (0) - -#define mm_fb_display_kevent(name, rate_limit_ms, fmt, ...) \ - mm_fb_kevent(OPLUS_MM_DIRVER_FB_EVENT_DISPLAY, OPLUS_DISPLAY_EVENTID_DRIVER_ERR, name, rate_limit_ms, fmt, ##__VA_ARGS__) - -#define mm_fb_display_kevent_named(rate_limit_ms, fmt, ...) \ - do { \ - char name[MAX_FUNC_LINE_SIZE]; \ - scnprintf(name, sizeof(name), "%s:%d", __func__, __LINE__); \ - mm_fb_display_kevent(name, rate_limit_ms, fmt, ##__VA_ARGS__); \ - } while (0) - -#define mm_fb_audio_kevent(event_id, name, rate_limit_ms, fmt, ...) \ - mm_fb_kevent(OPLUS_MM_DIRVER_FB_EVENT_AUDIO, event_id, name, rate_limit_ms, fmt, ##__VA_ARGS__) - -#define mm_fb_audio_kevent_named(event_id, rate_limit_ms, fmt, ...) \ - do { \ - char name[MAX_FUNC_LINE_SIZE]; \ - scnprintf(name, sizeof(name), "%s:%d", __func__, __LINE__); \ - mm_fb_audio_kevent(event_id, name, rate_limit_ms, fmt, ##__VA_ARGS__); \ - } while (0) - -int mm_fb_kevent_init(void); -void mm_fb_kevent_deinit(void); - -#else /*CONFIG_OPLUS_FEATURE_MM_FEEDBACK*/ -#define upload_mm_fb_kevent_to_atlas_limit(event_id, payload, limit_ms) (0) -#define mm_fb_kevent(m, name, rate_limit_ms, fmt, ...) do {} while (0) -#define mm_fb_display_kevent(name, rate_limit_ms, fmt, ...) do {} while (0) -#define mm_fb_display_kevent_named(rate_limit_ms, fmt, ...) do {} while (0) -#define mm_fb_audio_kevent(event_id, name, rate_limit_ms, fmt, ...) do {} while (0) -#define mm_fb_audio_kevent_named(event_id, rate_limit_ms, fmt, ...) do {} while (0) -#endif /*CONFIG_OPLUS_FEATURE_MM_FEEDBACK*/ - -#endif /* _OPLUS_MM_KEVENT_FB_ */ - diff --git a/drivers/soc/oplus/system/oplus_mm_fb/Kconfig b/drivers/soc/oplus/system/oplus_mm_fb/Kconfig deleted file mode 100644 index e390c91e3b63..000000000000 --- a/drivers/soc/oplus/system/oplus_mm_fb/Kconfig +++ /dev/null @@ -1,5 +0,0 @@ -config OPLUS_FEATURE_MM_FEEDBACK - bool "Oplus multimedia kevent feedback" - default n - help - define this config to init oplus multimedia kevent feedback driver diff --git a/drivers/soc/oplus/system/oplus_mm_fb/Makefile b/drivers/soc/oplus/system/oplus_mm_fb/Makefile deleted file mode 100644 index 203a401641d0..000000000000 --- a/drivers/soc/oplus/system/oplus_mm_fb/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -obj-$(CONFIG_OPLUS_FEATURE_MM_FEEDBACK) += oplus_mm_kevent.o -obj-$(CONFIG_OPLUS_FEATURE_MM_FEEDBACK) += oplus_mm_kevent_fb.o diff --git a/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_fb_netlink.h b/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_fb_netlink.h deleted file mode 100644 index 926bea00bde4..000000000000 --- a/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_fb_netlink.h +++ /dev/null @@ -1,52 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/************************************************************** -* Copyright (c) 2008- 2030 OPLUS Mobile communication Corp.ltd All rights reserved. -* -* File : oplus_mm_fb_netlink.h -* Description : For oplus_mm_fb_netlink -* Version : 1.0 -* Date : 2020-11-24 -* Author : -* TAG : -****************************************************************/ -#ifndef _OPLUS_MM_NETLINK_H -#define _OPLUS_MM_NETLINK_H - -#define OPLUS_MM_MSG_TO_KERNEL_BUF_LEN 256 -#define OPLUS_MM_MSG_FROM_KERNEL_BUF_LEN (1024) - - -#define OPLUS_MM_PROTOCAL_NAME "mm_fb" -#define OPLUS_MM_GENL_VERSION 0x01 -#define OPLUS_MM_PROTOCAL_NAME_MAX_LEN 100 - -enum { - MM_FB_CMD_ATTR_UNSPEC = 0, - MM_FB_CMD_ATTR_MSG, - MM_FB_CMD_ATTR_OPT, - __MM_FB_CMD_ATTR_MAX, -}; - -#define MM_FB_CMD_ATTR_MAX (__MM_FB_CMD_ATTR_MAX - 1) - -enum { - MM_FB_CMD_GENL_UNSPEC = 0, - MM_FB_CMD_GENL_SEND_MODULE, - MM_FB_CMD_GENL_UPLOAD, - MM_FB_CMD_GENL_TEST_UPLOAD, -}; - - -struct msg_to_kernel { - struct nlmsghdr n_hd; - struct genlmsghdr g_hd; - char buf[OPLUS_MM_MSG_TO_KERNEL_BUF_LEN]; -}; - -struct msg_from_kernel { - struct nlmsghdr n_hd; - struct genlmsghdr g_hd; - char buf[OPLUS_MM_MSG_FROM_KERNEL_BUF_LEN]; -}; - -#endif //_OPLUS_MM_NETLINK_H \ No newline at end of file diff --git a/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent.c b/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent.c deleted file mode 100644 index 34b0ed690abb..000000000000 --- a/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent.c +++ /dev/null @@ -1,320 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (C) 2018-2020 Oplus. All rights reserved. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "oplus_mm_kevent.h" - -#include -#include "oplus_mm_fb_netlink.h" - -static struct mm_kevent_module mm_modules[MM_KEVENT_MODULE_SIZE_MAX]; -static volatile bool mm_kevent_init_flag = false; -static spinlock_t mm_slock; -static mm_kevent_recv_user_func mm_fb_kevent_recv_fb = NULL; - -/* record connect pid and modules*/ -void mm_fb_kevent_add_module(u32 pid, char *module) { - int i = 0x0; - int len = 0x0; - - if (!module) { - return; - } - - len = strlen(module); - if (len > (MM_KEVENT_MODULE_LEN_MAX - 1)) { - pr_err("mm_kevent: module len is larger than %d error\n", MM_KEVENT_MODULE_LEN_MAX); - return; - } - - for (i = 0; i < MM_KEVENT_MODULE_SIZE_MAX; i++) { - if ((!mm_modules[i].pid) || (!strcmp(mm_modules[i].modl, module))) { - spin_lock(&mm_slock); - mm_modules[i].pid = pid; - memcpy(mm_modules[i].modl, module, len); - mm_modules[i].modl[len] = 0x0; - spin_unlock(&mm_slock); - return; - } - } - - return; -} - -/* record connect pid and modules*/ -int mm_fb_kevent_get_pid(char *module) { - int i = 0; - - if (!module) { - return MM_KEVENT_BAD_VALUE; - } - - for (i = 0; i < MM_KEVENT_MODULE_SIZE_MAX; i++) { - if (!strcmp(mm_modules[i].modl, module)) { - return mm_modules[i].pid; - } - } - - return MM_KEVENT_BAD_VALUE; -} - -static int mm_fb_kevent_send_module(struct sk_buff *skb, - struct genl_info *info) -{ - struct sk_buff *skbu = NULL; - struct nlmsghdr *nlh; - struct nlattr *na = NULL; - char *pmesg = NULL; - - pr_info("mm_kevent: mm_fb_kevent_send_module enter\n"); - - if (!mm_kevent_init_flag) { - pr_err("%s: mm_kevent: not init error\n", __func__); - return -1; - } - - skbu = skb_get(skb); - if (!skbu) { - pr_err("mm_kevent: skb_get result is null error\n"); - return -1; - } - - if (info->attrs[MM_FB_CMD_ATTR_MSG]) { - na = info->attrs[MM_FB_CMD_ATTR_MSG]; - nlh = nlmsg_hdr(skbu); - pmesg = (char*)kmalloc(nla_len(na) + 0x10, GFP_KERNEL); - if (pmesg) { - memcpy(pmesg, nla_data(na), nla_len(na)); - pmesg[nla_len(na)] = 0x0; - pr_info("mm_kevent: nla_len(na) %d, pid %d, module: %s\n", - nla_len(na), nlh->nlmsg_pid, pmesg); - mm_fb_kevent_add_module(nlh->nlmsg_pid, pmesg); - } - } - - if (pmesg) { - kfree(pmesg); - } - if (skbu) { - kfree_skb(skbu); - } - - return 0; -} - -void mm_fb_kevent_set_recv_user(mm_kevent_recv_user_func recv_func) { - mm_fb_kevent_recv_fb = recv_func; -} - -EXPORT_SYMBOL(mm_fb_kevent_set_recv_user); - -static int mm_fb_kevent_test_upload(struct sk_buff *skb, - struct genl_info *info) -{ - struct sk_buff *skbu = NULL; - struct nlattr *na = NULL; - char *pmesg = NULL; - - pr_info("mm_kevent: mm_fb_kevent_test_upload enter\n"); - - if (!mm_kevent_init_flag) { - pr_err("%s: mm_kevent: not init error\n", __func__); - return -1; - } - - skbu = skb_get(skb); - if (!skbu) { - pr_err("mm_kevent: skb_get result is null error\n"); - return -1; - } - - if (info->attrs[MM_FB_CMD_ATTR_MSG]) { - na = info->attrs[MM_FB_CMD_ATTR_MSG]; - pr_info("mm_kevent: nla_len(na) is %d, data= %s\n", nla_len(na), (char *)nla_data(na)); - - if (nla_len(na) > OPLUS_MM_MSG_TO_KERNEL_BUF_LEN) { - pr_err("mm_kevent: message len %d too long error\n", nla_len(na)); - return -1; - } - - pmesg = (char*)kmalloc(nla_len(na) + 0x10, GFP_KERNEL); - if (!pmesg) { - pr_err("mm_kevent: kmalloc return null error\n"); - return -1; - } - memcpy(pmesg, nla_data(na), nla_len(na)); - pmesg[nla_len(na)] = 0x0; - - if (mm_fb_kevent_recv_fb) { - mm_fb_kevent_recv_fb(0, OPLUS_NETLINK_MM_DBG_LV2, pmesg); - } - - if (pmesg) { - kfree(pmesg); - } - } - - if (skbu) { - kfree_skb(skbu); - } - - return 0; -} - - -#define MM_FB_FAMILY_VERSION 1 -#define MM_FB_FAMILY "mm_fb" -#define GENL_ID_GENERATE 0 - -static const struct genl_ops mm_fb_genl_ops[] = { - { - .cmd = MM_FB_CMD_GENL_SEND_MODULE, - .doit = mm_fb_kevent_send_module, - }, - { - .cmd = MM_FB_CMD_GENL_TEST_UPLOAD, - .doit = mm_fb_kevent_test_upload, - }, -}; - -static struct genl_family mm_fb_genl_family __ro_after_init = { - .id = GENL_ID_GENERATE, - .name = MM_FB_FAMILY, - .version = MM_FB_FAMILY_VERSION, - .maxattr = MM_FB_CMD_ATTR_MAX, - .module = THIS_MODULE, - .ops = mm_fb_genl_ops, - .n_ops = ARRAY_SIZE(mm_fb_genl_ops), -}; - -static inline int genl_msg_prepare_usr_msg(unsigned char cmd, size_t size, - pid_t pid, struct sk_buff **skbp) -{ - struct sk_buff *skb; - - /* create a new netlink msg */ - skb = genlmsg_new(size, GFP_KERNEL); - - if (skb == NULL) { - pr_err("mm_kevent: genlmsg_new failed\n"); - return -ENOMEM; - } - - /* Add a new netlink message to an skb */ - genlmsg_put(skb, pid, 0, &mm_fb_genl_family, 0, cmd); - - *skbp = skb; - return 0; -} - -static inline int genl_msg_mk_usr_msg(struct sk_buff *skb, int type, void *data, - int len) -{ - int ret = 0; - - /* add a netlink attribute to a socket buffer */ - ret = nla_put(skb, type, len, data); - - return ret; -} - -/* send to user space */ -int mm_fb_kevent_send_to_user(struct mm_kevent_packet *userinfo) { - int ret; - int size_use; - struct sk_buff *skbuff; - void * head; - int pid; - - if (!mm_kevent_init_flag) { - pr_err("%s: mm_kevent: not init error\n", __func__); - return MM_KEVENT_BAD_VALUE; - } - - /* protect payload too long problem*/ - if (userinfo->len >= MAX_PAYLOAD_DATASIZE) { - pr_err("mm_kevent: payload_length out of range error\n"); - return MM_KEVENT_BAD_VALUE; - } - - pid = mm_fb_kevent_get_pid(userinfo->tag); - if (pid == MM_KEVENT_BAD_VALUE) { - pr_err("mm_kevent: tag=%s get pid error\n", userinfo->tag); - return MM_KEVENT_BAD_VALUE; - } - - size_use = sizeof(struct mm_kevent_packet) + userinfo->len; - ret = genl_msg_prepare_usr_msg(MM_FB_CMD_GENL_UPLOAD, size_use, pid, &skbuff); - if (ret) { - pr_err("mm_kevent: genl_msg_prepare_usr_msg error, ret is %d \n", ret); - return ret; - } - - ret = genl_msg_mk_usr_msg(skbuff, MM_FB_CMD_ATTR_MSG, userinfo, size_use); - if (ret) { - pr_err("mm_kevent: genl_msg_mk_usr_msg error, ret is %d \n", ret); - kfree_skb(skbuff); - return ret; - } - - head = genlmsg_data(nlmsg_data(nlmsg_hdr(skbuff))); - genlmsg_end(skbuff, head); - - ret = genlmsg_unicast(&init_net, skbuff, pid); - if (ret < 0) { - pr_err("mm_kevent: genlmsg_unicast fail=%d \n", ret); - return MM_KEVENT_BAD_VALUE; - } - - return MM_KEVENT_NO_ERROR; -} -EXPORT_SYMBOL(mm_fb_kevent_send_to_user); - -int __init mm_fb_kevent_module_init(void) { - int ret; - ret = genl_register_family(&mm_fb_genl_family); - if (ret) { - pr_err("mm_kevent: genl_register_family:%s error,ret = %d\n", MM_FB_FAMILY, ret); - return ret; - } else { - pr_info("mm_kevent: genl_register_family complete, id = %d!\n", mm_fb_genl_family.id); - } - - spin_lock_init(&mm_slock); - memset(mm_modules, 0x0, sizeof(mm_modules)); - mm_kevent_init_flag = true; - - pr_info("mm_kevent: init ok\n"); - return MM_KEVENT_NO_ERROR; -} - -void __exit mm_fb_kevent_module_exit(void) { - genl_unregister_family(&mm_fb_genl_family); - mm_kevent_init_flag = false; - pr_info("mm_kevent: exit\n"); -} - -module_init(mm_fb_kevent_module_init); -module_exit(mm_fb_kevent_module_exit); - -MODULE_DESCRIPTION("mm_kevent@1.0"); -MODULE_VERSION("1.0"); -MODULE_LICENSE("GPL v2"); - diff --git a/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent.h b/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent.h deleted file mode 100644 index 35804f445bfd..000000000000 --- a/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent.h +++ /dev/null @@ -1,67 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * oplus_kevent.h - for kevent action upload upload to user layer - * author by pdl - */ -#ifndef _OPLUS_MM_KEVENT_ -#define _OPLUS_MM_KEVENT_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define MAX_PAYLOAD_TAG (128) -#define MAX_PAYLOAD_EVENTID (128) -#define MAX_PAYLOAD_DATASIZE (512) - -#define MM_KEVENT_MODULE_SIZE_MAX (16) -#define MM_KEVENT_MODULE_LEN_MAX (64) - -#define MM_KEVENT_BAD_VALUE (-1) -#define MM_KEVENT_NO_ERROR (0) - -//#define OPLUS_NETLINK_MM_KEVENT_TEST -#define OPLUS_NETLINK_MM_DBG_LV1 0x1 -#define OPLUS_NETLINK_MM_DBG_LV2 0x2 - -#define DP_FB_EVENT "mm_kevent_dp" -#define ATLAS_FB_EVENT "mm_kevent_atlas" - -enum mm_kevent_type { - MM_KEVENT_NOME = 0x0, - MM_KEVENT_CONNECT, -}; - -struct mm_kevent_module { - u32 pid; - char modl[MM_KEVENT_MODULE_LEN_MAX]; -}; - -typedef void (*mm_kevent_recv_user_func)(int type, int flags, char* data); - -struct mm_kevent_packet { - int type; /* 0:warrning,1:error,2:hw error*/ - char tag[MAX_PAYLOAD_TAG]; /* logTag */ - char event_id[MAX_PAYLOAD_EVENTID]; /* eventID */ - size_t len; /* Length of packet data */ - unsigned char data[0]; /* Optional packet data */ -}__attribute__((packed)); - -#if IS_ENABLED(CONFIG_OPLUS_FEATURE_MM_FEEDBACK) -int mm_fb_kevent_send_to_user(struct mm_kevent_packet *userinfo); -void mm_fb_kevent_set_recv_user(mm_kevent_recv_user_func recv_func); -#else //CONFIG_OPLUS_FEATURE_MM_FEEDBACK -int mm_fb_kevent_send_to_user(struct mm_kevent_packet *userinfo) {return 0;} -void mm_fb_kevent_set_recv_user(mm_kevent_recv_user_func recv_func) {return;} -#endif //CONFIG_OPLUS_FEATURE_MM_FEEDBACK -#endif //_OPLUS_MM_KEVENT_ - diff --git a/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent_fb.c b/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent_fb.c deleted file mode 100644 index d552e65ab1bc..000000000000 --- a/drivers/soc/oplus/system/oplus_mm_fb/oplus_mm_kevent_fb.c +++ /dev/null @@ -1,610 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (C) 2018-2020 Oplus. All rights reserved. - */ - -#include -#include -#include -#include -#include -#include -#include "oplus_mm_kevent.h" -#include - -static void mm_fb_kevent_upload_jobs(struct work_struct *work); - -static LIST_HEAD(mm_kevent_list); -static DEFINE_MUTEX(mm_kevent_lock); -static DECLARE_DELAYED_WORK(mm_kevent_upload_work_thread, - mm_fb_kevent_upload_jobs); -static struct workqueue_struct *mm_kevent_wq = NULL; -static int mm_kevent_len = 0; -static bool mm_fb_init = false; -#define CAUSENAME_SIZE 128 -static char fid[CAUSENAME_SIZE]={"12345678"}; - -#define LIMIT_UPLOAD_TIME_MS 10000 /*ms*/ -struct limit_upload_frq { - unsigned int last_id; - ktime_t last_time; -}; -static struct limit_upload_frq g_limit; - -struct mm_kevent { - struct list_head head; - enum OPLUS_MM_DIRVER_FB_EVENT_MODULE module; - unsigned int event_id; - struct mutex lock; - int count; - int count_total; - u32 count_limit; - int rate_limit_ms; - ktime_t first; - ktime_t last; - ktime_t last_upload; - struct delayed_work dwork; - char *payload; - char name[0]; -}; - -#define RELATION_EVENT_LIMIT_NUM 6 -struct relation_event_limit { - unsigned int fst_id; - ktime_t fst_time; - unsigned int limit_ms; - unsigned int limit_id[RELATION_EVENT_LIMIT_NUM]; -}; - -static struct relation_event_limit g_relate[] = { - {10001, 0, 2000, {10003, 10008, 10041, 10042, 10046, 10047}}, - {10003, 0, 1000, {10008, 10046, 0, 0, 0, 0}}, - {10046, 0, 1000, {10008, 0, 0, 0, 0, 0}} -}; - -static void record_relation_first_event(unsigned int id) -{ - int lp = 0; - - for (lp = 0; lp < sizeof(g_relate)/sizeof(struct relation_event_limit); lp++) { - if (id == g_relate[lp].fst_id) { - g_relate[lp].fst_time = ktime_get(); - } - } -} - -static bool is_relation_event_limit(unsigned int id) -{ - int lp = 0; - int offset = 0; - - for (lp = 0; lp < sizeof(g_relate)/sizeof(struct relation_event_limit); lp++) { - for (offset = 0; offset < RELATION_EVENT_LIMIT_NUM; offset++) { - if ((id == g_relate[lp].limit_id[offset]) && \ - (g_relate[lp].fst_time != 0) && \ - ktime_before(ktime_get(), \ - ktime_add_ms(g_relate[lp].fst_time, g_relate[lp].limit_ms))) { - return true; - } else if (0 == g_relate[lp].limit_id[offset]) { - break; - } - } - } - - return false; -} - -static unsigned int BKDRHash(char *str, unsigned int len) -{ - unsigned int seed = 131; /* 31 131 1313 13131 131313 etc.. */ - unsigned int hash = 0; - unsigned int i = 0; - - if (str == NULL) { - return 0; - } - - for(i = 0; i < len; str++, i++) { - hash = (hash * seed) + (*str); - } - - return hash; -} - -static void calc_fid(unsigned char *str) -{ - char strHashSource[MAX_PAYLOAD_DATASIZE] = {0x00}; - unsigned int hashid = 0; - /*struct timespec64 ts64;*/ - unsigned long rdm = 0; - ktime_t t; - - t = ktime_get(); - rdm = get_random_u64(); - snprintf(strHashSource, MAX_PAYLOAD_DATASIZE, "%lu %lu %s", rdm, t, str); - hashid = BKDRHash(strHashSource, strlen(strHashSource)); - memset(fid, 0 , CAUSENAME_SIZE); - snprintf(fid, CAUSENAME_SIZE, "%u", hashid); - printk(KERN_INFO "calc_fid: fid=%u\n", hashid); -} - -static int upload_mm_fb_kevent(unsigned int event_id, unsigned char *payload) -{ - struct mm_kevent_packet *user_msg_info; - char event_id_str[MAX_PAYLOAD_EVENTID] = {0}; - void *buffer = NULL; - int len, size; - int ret = 0; - - printk(KERN_INFO "%s: mm_kevent fb: enter, event_id = %d\n", __func__, - event_id); - - mutex_lock(&mm_kevent_lock); - len = strlen(payload); - if (len > MAX_PAYLOAD_DATASIZE) { - printk(KERN_INFO "%s: error: payload len=%d > %d\n", - __func__, len, MAX_PAYLOAD_DATASIZE); - ret = -1; - goto _exit; - } - size = sizeof(struct mm_kevent_packet) + len + 1; - - buffer = kmalloc(size, GFP_ATOMIC); - if (!buffer) { - printk(KERN_INFO "%s: kmalloc %d bytes failed\n", __func__, size); - ret = -1; - goto _exit; - } - memset(buffer, 0, size); - user_msg_info = (struct mm_kevent_packet *)buffer; - user_msg_info->type = 1; - - memcpy(user_msg_info->tag, ATLAS_FB_EVENT, sizeof(ATLAS_FB_EVENT)); - - snprintf(event_id_str, sizeof(event_id_str) - 1, "%d", event_id); - memcpy(user_msg_info->event_id, event_id_str, strlen(event_id_str)); - - user_msg_info->len = len + 1; - memcpy(user_msg_info->data, payload, len + 1); - - mm_fb_kevent_send_to_user(user_msg_info); - - kfree(buffer); - - record_relation_first_event(event_id); - -_exit: - mutex_unlock(&mm_kevent_lock); - return ret; -} - - -static void mm_fb_kevent_upload_work(struct work_struct *work) -{ - struct delayed_work *dwork = to_delayed_work(work); - struct mm_kevent *new_kevent = container_of(dwork, struct mm_kevent, dwork); - struct mm_kevent *kevent = NULL, *n = NULL; - bool found = false; - int cnt = 0; - - list_for_each_entry_safe(kevent, n, &mm_kevent_list, head) { - if (!strcmp(kevent->name, new_kevent->name)) { - found = true; - break; - } - } - - if (!found) { - if (mm_kevent_len > 200) { - unsigned char payload[MAX_PAYLOAD_DATASIZE] = ""; - pr_err("mm_kevent large than 200"); - - if (OPLUS_MM_DIRVER_FB_EVENT_AUDIO == new_kevent->module) { - #define PAYLOAD(fmt, ...) \ - if (sizeof(payload) > cnt) \ - cnt += scnprintf(payload + cnt, sizeof(payload) - cnt, fmt, ##__VA_ARGS__); - PAYLOAD("func@@%s$$", new_kevent->name); - PAYLOAD("%s", new_kevent->payload ? new_kevent->payload : "NULL"); - } else { - scnprintf(payload, sizeof(payload), "MSG@@%s", new_kevent->name); - } - upload_mm_fb_kevent(new_kevent->event_id, payload); - goto done; - } - - kevent = new_kevent; - kevent->count = 1; - kevent->count_total = 1; - new_kevent = NULL; - mm_kevent_len++; - list_add_tail(&kevent->head, &mm_kevent_list); - goto done; - } - - if (WARN_ON(!kevent)) { - goto done; - } - - mutex_lock(&kevent->lock); - kevent->count++; - kevent->count_total++; - kevent->last = new_kevent->first; - kfree(kevent->payload); - kevent->payload = new_kevent->payload; - new_kevent->payload = NULL; - mutex_unlock(&kevent->lock); -done: - mm_fb_kevent_upload_jobs(NULL); - if (new_kevent) { - kfree(new_kevent->payload); - } - kfree(new_kevent); -} - -static void mm_fb_kevent_upload_jobs(struct work_struct *work) -{ - struct mm_kevent *kevent = NULL, *n = NULL; - unsigned char payload[MAX_PAYLOAD_DATASIZE] = ""; - int cnt; - - list_for_each_entry_safe(kevent, n, &mm_kevent_list, head) { - if (ktime_before(kevent->last, kevent->last_upload)) { - continue; - } - - if (kevent->count_limit && (kevent->count_total % kevent->count_limit == 0)) { - kevent->count_limit <<= 1; - if (kevent->count_limit > 4096) { - kevent->count_limit = 4096; - } - } else if (!kevent->rate_limit_ms || (kevent->rate_limit_ms && - ktime_before(ktime_get(), ktime_add_ms(kevent->last_upload, - kevent->rate_limit_ms)))) { - continue; - } - - mutex_lock(&kevent->lock); - cnt = 0; - #define PAYLOAD(fmt, ...) \ - if (sizeof(payload) > cnt) \ - cnt += scnprintf(payload + cnt, sizeof(payload) - cnt, fmt, ##__VA_ARGS__); - if (OPLUS_MM_DIRVER_FB_EVENT_AUDIO == kevent->module) { - PAYLOAD("func@@%s$$", kevent->name); - PAYLOAD("CT@@%d$$", kevent->count); - PAYLOAD("%s", kevent->payload ? kevent->payload : "NULL"); - } else { - PAYLOAD("EventName@@%s$$", kevent->name); - PAYLOAD("CT@@%d$$", kevent->count); - PAYLOAD("FT@@%lu$$", ktime_to_ms(kevent->first) / 1000); - PAYLOAD("ET@@%lu$$", ktime_to_ms(kevent->last) / 1000); - PAYLOAD("MSG@@%s", kevent->payload ? kevent->payload : "NULL"); - } - - if (kevent->payload) { - kfree(kevent->payload); - kevent->payload = NULL; - } - - kevent->count = 0; - kevent->last_upload = ktime_get(); - mutex_unlock(&kevent->lock); - upload_mm_fb_kevent(kevent->event_id, payload); - } - if (mm_kevent_wq) { - mod_delayed_work(mm_kevent_wq, &mm_kevent_upload_work_thread, 60 * 60 * HZ); - } -} - -static void mm_fb_kevent_upload_recv_user(int type, int flags, char *data) -{ - printk(KERN_INFO "mm_kevent fb recv user type=0x%x, flags=0x%x, data=%s\n", - type, flags, data); - #ifdef OPLUS_NETLINK_MM_KEVENT_TEST - if (flags & OPLUS_NETLINK_MM_DBG_LV2) { - upload_mm_fb_kevent(OPLUS_MM_EVENTID_TEST_OR_DEBUG, data); - } - #endif -} - -/* queue a delaywork to upload the feedback info, can used in interrupt function or timeliness requirement place*/ -int upload_mm_fb_kevent_limit(enum OPLUS_MM_DIRVER_FB_EVENT_MODULE module, - unsigned int event_id, - const char *name, int rate_limit_ms, unsigned int delay_s, char *payload) -{ - struct mm_kevent *kevent = NULL; - int size; - char buf[MAX_PAYLOAD_DATASIZE] = {0}; - - if (!mm_fb_init || !mm_kevent_wq) { - pr_err("%s: error: not init or mm_kevent_wq is null\n", __func__); - return -EINVAL; - } - - if(is_relation_event_limit(event_id)) { - pr_info("%s: relation event has feedback before, not feedback %u\n", __func__, event_id); - return -EINVAL; - } - size = strlen(name) + sizeof(*kevent) + 1; - kevent = kzalloc(size, GFP_ATOMIC); - if (!kevent) { - return -ENOMEM; - } - - kevent->module = module; - kevent->event_id = event_id; - kevent->count_limit = 1; - kevent->last_upload = ktime_get(); - kevent->first = ktime_get(); - kevent->last = ktime_get(); - kevent->rate_limit_ms = rate_limit_ms; - memcpy(kevent->name, name, strlen(name) + 1); - if (OPLUS_AUDIO_EVENTID_ADSP_CRASH == event_id) { - calc_fid(payload); - scnprintf(buf, MAX_PAYLOAD_DATASIZE, "EventField@@%s$$%s", - fid, payload ? payload : "NULL"); - kevent->payload = kmemdup(buf, strlen(buf) + 1, GFP_ATOMIC); - } else { - kevent->payload = kmemdup(payload, strlen(payload) + 1, GFP_ATOMIC); - } - mutex_init(&kevent->lock); - INIT_DELAYED_WORK(&kevent->dwork, mm_fb_kevent_upload_work); - if (delay_s > 0) { - printk(KERN_INFO "%s:feedback delay %d second\n", __func__, delay_s); - queue_delayed_work(mm_kevent_wq, &kevent->dwork, delay_s * HZ); - } else { - queue_delayed_work(mm_kevent_wq, &kevent->dwork, 0); - } - printk(KERN_INFO "%s:event_id=%d,payload:%s\n", __func__, event_id, payload); - - return 0; -} -EXPORT_SYMBOL(upload_mm_fb_kevent_limit); - -/* upload the feedback info immediately, can't used in interrupt function */ -int upload_mm_fb_kevent_to_atlas_limit(unsigned int event_id, - unsigned char *payload, int limit_ms) -{ - struct mm_kevent_packet *user_msg_info; - char event_id_str[MAX_PAYLOAD_EVENTID] = {0}; - void *buffer = NULL; - int len, size; - int ret = 0; - - printk(KERN_INFO "mm_kevent fb:upload_mm_fb_kevent_to_atlas_limit enter\n"); - - if (!mm_fb_init) { - pr_err("%s: error, module not init\n", __func__); - return -EINVAL; - } - - if(is_relation_event_limit(event_id)) { - pr_info("%s: relation event has feedback before, not feedback %u\n", __func__, event_id); - return -EINVAL; - } - - mutex_lock(&mm_kevent_lock); - - if ((limit_ms > 0) && (g_limit.last_id == event_id)) { - if (ktime_before(ktime_get(), ktime_add_ms(g_limit.last_time, limit_ms))) { - printk(KERN_INFO "upload event_id=%d failed, report too often, limit_ms=%d\n", - event_id, limit_ms); - ret = -1; - goto _exit; - } - } - - len = strlen(payload); - if (len > MAX_PAYLOAD_DATASIZE) { - printk(KERN_INFO "error: payload len=%d > %d\n", len, MAX_PAYLOAD_DATASIZE); - ret = -1; - goto _exit; - } - size = sizeof(struct mm_kevent_packet) + len + 1; - buffer = kmalloc(size, GFP_ATOMIC); - if (!buffer) { - printk(KERN_INFO "%s: kmalloc %d bytes failed\n", __func__, size); - ret = -1; - goto _exit; - } - memset(buffer, 0, size); - user_msg_info = (struct mm_kevent_packet *)buffer; - user_msg_info->type = 1; - - if ((MAX_PAYLOAD_TAG - 1) > strlen(ATLAS_FB_EVENT)) { - memcpy(user_msg_info->tag, ATLAS_FB_EVENT, strlen(ATLAS_FB_EVENT)); - user_msg_info->tag[strlen(ATLAS_FB_EVENT)] = 0; - } - - snprintf(event_id_str, sizeof(event_id_str) - 1, "%d", event_id); - memcpy(user_msg_info->event_id, event_id_str, strlen(event_id_str)); - - user_msg_info->len = len + 1; - memcpy(user_msg_info->data, payload, len + 1); - - pr_info("%s: mm_kevent: type %d, tag=%s, event_id=%s, len=%zu, payload=%s\n", - __func__, - user_msg_info->type, user_msg_info->tag, user_msg_info->event_id, - user_msg_info->len, user_msg_info->data); - mm_fb_kevent_send_to_user(user_msg_info); - kfree(buffer); - g_limit.last_id = event_id; - g_limit.last_time = ktime_get(); - record_relation_first_event(event_id); - -_exit: - mutex_unlock(&mm_kevent_lock); - return ret; -} -EXPORT_SYMBOL(upload_mm_fb_kevent_to_atlas_limit); - -#define MM_FB_EVENTID_LEN 5 -#define MM_FB_HAL_LIMIT (30*1000) -#define IS_DIGITAL(x) (((x) >= '0') && ((x) <= '9')) -static ssize_t mm_fb_write(struct file *file, - const char __user *buf, - size_t count, - loff_t *lo) -{ - char *r_buf; - unsigned int event_id = 0; - int len, i; - - if (!mm_fb_init) { - pr_err("%s: error, module not init\n", __func__); - return -EINVAL; - } - - r_buf = (char *)kzalloc(MAX_PAYLOAD_DATASIZE, GFP_KERNEL); - if (!r_buf) { - return count; - } - - if (copy_from_user(r_buf, buf, - MAX_PAYLOAD_DATASIZE > count ? count : MAX_PAYLOAD_DATASIZE)) { - goto exit; - } - - r_buf[MAX_PAYLOAD_DATASIZE - 1] ='\0'; /*make sure last bype is eof*/ - len = strlen(r_buf); - printk(KERN_INFO "%s: mm_kevent fb len=%d, data=%s\n", __func__, len, r_buf); - if (len < (MM_FB_EVENTID_LEN + 2)) { - printk(KERN_INFO "%s: mm_kevent fb data len=%d is error\n", __func__, len); - goto exit; - } - - for (i = 0; i < MM_FB_EVENTID_LEN; i++) { - if (IS_DIGITAL(r_buf[i])) { - event_id = event_id*10 + r_buf[i] - '0'; - } else { - printk(KERN_INFO "%s: mm_kevent fb eventid is error, data=%s\n", __func__, - r_buf); - goto exit; - } - } - - upload_mm_fb_kevent_to_atlas_limit(event_id, r_buf + MM_FB_EVENTID_LEN + 1, - MM_FB_HAL_LIMIT); - -exit: - kfree(r_buf); - return count; -} - -static ssize_t mm_fb_read(struct file *file, - char __user *buf, - size_t count, - loff_t *ppos) -{ - if (!mm_fb_init) { - pr_err("%s: error, module not init\n", __func__); - return -EINVAL; - } - - return count; -} - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)) -static const struct proc_ops mm_fb_fops = { - .proc_write = mm_fb_write, - .proc_read = mm_fb_read, - .proc_open = simple_open, -}; -#else -static const struct file_operations mm_fb_fops = { - .write = mm_fb_write, - .read = mm_fb_read, - .open = simple_open, - .owner = THIS_MODULE, -}; -#endif - -static ssize_t adsp_crash_cause_read(struct file *file, - char __user *buf, - size_t count, - loff_t *off) -{ - char page[CAUSENAME_SIZE] = {0x00}; - int len = 0; - - len = snprintf(page, sizeof(page) - 1, "%s", fid); - len = simple_read_from_buffer(buf, count, off, page, strlen(page)); - return len; -} - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)) -static const struct proc_ops adsp_crash_cause_fops = { - .proc_read = adsp_crash_cause_read, - .proc_open = simple_open, -}; -#else -static const struct file_operations adsp_crash_cause_fops = { - .read = adsp_crash_cause_read, - .open = simple_open, - .owner = THIS_MODULE, -}; -#endif - -int mm_fb_kevent_init(void) -{ - struct proc_dir_entry *d_entry = NULL; - int ret = 0; - - mm_kevent_wq = create_workqueue("mm_kevent"); - if (!mm_kevent_wq) { - ret = -ENOMEM; - goto failed_create_workqueue; - } - queue_delayed_work(mm_kevent_wq, &mm_kevent_upload_work_thread, 0); - - mm_fb_kevent_set_recv_user(mm_fb_kevent_upload_recv_user); - - g_limit.last_id = 0xFFFFFFFF; - g_limit.last_time = 0; - - d_entry = proc_create_data("mm_fb", 0664, NULL, &mm_fb_fops, NULL); - if (!d_entry) { - pr_err("%s: failed to create node\n", __func__); - ret = -ENODEV; - goto failed_proc_create_data; - } - - d_entry = proc_create_data("adsp_crash_cause", 0664, NULL, - &adsp_crash_cause_fops, NULL); - if (!d_entry) { - pr_err("failed to adsp_crash_cause node\n"); - ret = -ENODEV; - goto failed_proc_create_data; - } - - mm_fb_init = true; - pr_info("%s: init success\n", __func__); - - return 0; - -failed_proc_create_data: - if (mm_kevent_wq) { - destroy_workqueue(mm_kevent_wq); - mm_kevent_wq = NULL; - } -failed_create_workqueue: - return ret; -} - -void mm_fb_kevent_deinit(void) -{ - if (mm_kevent_wq) { - destroy_workqueue(mm_kevent_wq); - mm_kevent_wq = NULL; - } - - mm_fb_kevent_set_recv_user(NULL); - mm_fb_init = false; - pr_info("%s: deinit\n", __func__); -} - - -module_init(mm_fb_kevent_init); -module_exit(mm_fb_kevent_deinit); - -MODULE_LICENSE("GPL v2"); - diff --git a/drivers/soc/qcom/subsys-pil-tz.c b/drivers/soc/qcom/subsys-pil-tz.c index efbdbe748f3b..66753d7e7e76 100644 --- a/drivers/soc/qcom/subsys-pil-tz.c +++ b/drivers/soc/qcom/subsys-pil-tz.c @@ -26,13 +26,6 @@ #include #include "peripheral-loader.h" -//#ifdef OPLUS_FEATURE_SENSOR -#include -//#endif - -#ifdef OPLUS_FEATURE_MM_FEEDBACK -#include -#endif #define XO_FREQ 19200000 #define PROXY_TIMEOUT_MS 10000 @@ -849,22 +842,6 @@ static void log_failure_reason(const struct pil_tz_data *d) } #endif /* OPLUS_FEATURE_WIFI_DCS_SWITCH */ - //#ifdef OPLUS_FEATURE_SENSOR - set_subsys_crash_cause(reason); - if((strncmp(name, "slpi", strlen("slpi")) == 0) - || (strncmp(name, "cdsp", strlen("cdsp")) == 0) - || (strncmp(name, "adsp", strlen("adsp")) == 0)){ - strcat(reason, "$$module@@"); - strcat(reason, name); - oplus_kevent_fb_str(FB_SENSOR, FB_SENSOR_ID_CRASH, reason); - } - //#endif - #ifdef OPLUS_FEATURE_MM_FEEDBACK - if(strncmp(name, "adsp", strlen("adsp")) == 0){ - mm_fb_audio_kevent_named(OPLUS_AUDIO_EVENTID_ADSP_CRASH, \ - MM_FB_KEY_RATELIMIT_5MIN, "payload@@%s$$fid@@123456", reason); - } - #endif pr_err("%s subsystem failure reason: %s.\n", name, reason); } diff --git a/include/soc/oplus/system/kernel_fb.h b/include/soc/oplus/system/kernel_fb.h deleted file mode 100644 index 86609048155e..000000000000 --- a/include/soc/oplus/system/kernel_fb.h +++ /dev/null @@ -1,39 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (C) 2018-2020 Oplus. All rights reserved. - */ - -#ifndef __KERNEL_FEEDBACK_H -#define __KERNEL_FEEDBACK_H - -typedef enum { - FB_STABILITY = 0, - FB_FS, - FB_STORAGE, - FB_SENSOR, - FB_BOOT, - FB_MAX_TYPE = FB_BOOT, -} fb_tag; - -#define FB_STABILITY_ID_CRASH "202007272030" - - -#define FB_SENSOR_ID_CRASH "10004" -#define FB_SENSOR_ID_QMI "202007272041" - -struct kernel_packet_info -{ - int type; /* 0:root,1:only string,other number represent other type */ - char log_tag[32]; /* logTag */ - char event_id[20]; /*eventID */ - size_t payload_length; /* Length of packet data */ - unsigned char payload[0]; /* Optional packet data */ -}__attribute__((packed)); - -int oplus_kevent_fb(fb_tag tag_id, const char *event_id, unsigned char *payload); -int oplus_kevent_fb_str(fb_tag tag_id, const char *event_id, unsigned char *str); -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-function" -int fb_kevent_send_to_user(struct kernel_packet_info *userinfo); -#pragma GCC diagnostic pop -#endif diff --git a/include/soc/oplus/system/oplus_mm_kevent_fb.h b/include/soc/oplus/system/oplus_mm_kevent_fb.h deleted file mode 100644 index 9b8171cafbfd..000000000000 --- a/include/soc/oplus/system/oplus_mm_kevent_fb.h +++ /dev/null @@ -1,105 +0,0 @@ -/*************************************************************** -** Copyright (C), 2018, OPLUS Mobile Comm Corp., Ltd -** File : oplus_mm_kevent_fb.h -** Description : MM kevent fb data -** Version : 1.0 -** Date : 2018/12/03 -** -** ------------------------------- Revision History: ----------- -** -** Guo.Ling 2018/12/03 1.0 Build this moudle -** LiPing-M 2019/01/29 1.1 Add SMMU for QCOM -******************************************************************/ -#ifndef _OPLUS_MM_KEVENT_FB_ -#define _OPLUS_MM_KEVENT_FB_ - -#define MAX_PAYLOAD_DATASIZE (512) -#define MM_KEVENT_MAX_PAYLOAD_SIZE MAX_PAYLOAD_DATASIZE -#define MAX_FUNC_LINE_SIZE (128) - -enum { - MM_FB_KEY_RATELIMIT_NONE = 0, - MM_FB_KEY_RATELIMIT_1MIN = 60 * 1000, - MM_FB_KEY_RATELIMIT_5MIN = 60 * 5 * 1000, - MM_FB_KEY_RATELIMIT_30MIN = 60 * 30 * 1000, - MM_FB_KEY_RATELIMIT_1H = MM_FB_KEY_RATELIMIT_30MIN * 2, - MM_FB_KEY_RATELIMIT_1DAY = MM_FB_KEY_RATELIMIT_1H * 24, -}; -#define FEEDBACK_DELAY_60S 60 - -#define OPLUS_FB_ADSP_CRASH_RATELIMIT (60 * 5 * 1000) /*ms, for mtk*/ - -enum OPLUS_MM_DIRVER_FB_EVENT_MODULE { - OPLUS_MM_DIRVER_FB_EVENT_DISPLAY = 0, - OPLUS_MM_DIRVER_FB_EVENT_AUDIO -}; - -/*------- multimedia bigdata feedback event id, start ------------ */ -#define OPLUS_AUDIO_EVENTID_ADSP_CRASH (10001) -#define OPLUS_AUDIO_EVENTID_HEADSET_DET (10009) -#define OPLUS_AUDIO_EVENTID_ADSP_RECOVERY_FAIL (10045) - -#define OPLUS_DISPLAY_EVENTID_DRIVER_ERR (12002) - -#define OPLUS_DISPLAY_EVENTID_GPU_FAULT (12005) - -/*this id just for test or debug */ -#define OPLUS_MM_EVENTID_TEST_OR_DEBUG (30000) -/*------- multimedia bigdata feedback event id, end ------------*/ - -#if IS_ENABLED(CONFIG_OPLUS_FEATURE_MM_FEEDBACK) -int upload_mm_fb_kevent_to_atlas_limit(unsigned int event_id, unsigned char *payload, int limit_ms); - -int upload_mm_fb_kevent_limit(enum OPLUS_MM_DIRVER_FB_EVENT_MODULE module, unsigned int event_id, - const char *name, int rate_limit_ms, unsigned int delay_s, char *payload); - -#define mm_fb_audio_kevent_named_delay(event_id, rate_limit_ms, delay_s, fmt, ...) \ -do { \ - char name[MAX_PAYLOAD_DATASIZE] = ""; \ - char kv_data[MAX_PAYLOAD_DATASIZE] = ""; \ - scnprintf(name, sizeof(name), "%s:%d", __func__, __LINE__); \ - scnprintf(kv_data, sizeof(kv_data), fmt, ##__VA_ARGS__); \ - upload_mm_fb_kevent_limit(OPLUS_MM_DIRVER_FB_EVENT_AUDIO, event_id, name, rate_limit_ms, delay_s, kv_data); \ -} while (0) - -#define mm_fb_kevent(m, id, name, rate_limit_ms, fmt, ...) \ - do { \ - char kv_data[MAX_PAYLOAD_DATASIZE] = ""; \ - scnprintf(kv_data, sizeof(kv_data), fmt, ##__VA_ARGS__); \ - upload_mm_fb_kevent_limit(m, id, name, rate_limit_ms, 0, kv_data); \ - } while (0) - -#define mm_fb_display_kevent(name, rate_limit_ms, fmt, ...) \ - mm_fb_kevent(OPLUS_MM_DIRVER_FB_EVENT_DISPLAY, OPLUS_DISPLAY_EVENTID_DRIVER_ERR, name, rate_limit_ms, fmt, ##__VA_ARGS__) - -#define mm_fb_display_kevent_named(rate_limit_ms, fmt, ...) \ - do { \ - char name[MAX_FUNC_LINE_SIZE]; \ - scnprintf(name, sizeof(name), "%s:%d", __func__, __LINE__); \ - mm_fb_display_kevent(name, rate_limit_ms, fmt, ##__VA_ARGS__); \ - } while (0) - -#define mm_fb_audio_kevent(event_id, name, rate_limit_ms, fmt, ...) \ - mm_fb_kevent(OPLUS_MM_DIRVER_FB_EVENT_AUDIO, event_id, name, rate_limit_ms, fmt, ##__VA_ARGS__) - -#define mm_fb_audio_kevent_named(event_id, rate_limit_ms, fmt, ...) \ - do { \ - char name[MAX_FUNC_LINE_SIZE]; \ - scnprintf(name, sizeof(name), "%s:%d", __func__, __LINE__); \ - mm_fb_audio_kevent(event_id, name, rate_limit_ms, fmt, ##__VA_ARGS__); \ - } while (0) - -int mm_fb_kevent_init(void); -void mm_fb_kevent_deinit(void); - -#else /*CONFIG_OPLUS_FEATURE_MM_FEEDBACK*/ -#define upload_mm_fb_kevent_to_atlas_limit(event_id, payload, limit_ms) (0) -#define mm_fb_kevent(m, name, rate_limit_ms, fmt, ...) do {} while (0) -#define mm_fb_display_kevent(name, rate_limit_ms, fmt, ...) do {} while (0) -#define mm_fb_display_kevent_named(rate_limit_ms, fmt, ...) do {} while (0) -#define mm_fb_audio_kevent(event_id, name, rate_limit_ms, fmt, ...) do {} while (0) -#define mm_fb_audio_kevent_named(event_id, rate_limit_ms, fmt, ...) do {} while (0) -#endif /*CONFIG_OPLUS_FEATURE_MM_FEEDBACK*/ - -#endif /* _OPLUS_MM_KEVENT_FB_ */ - diff --git a/oplus_native_features.mk b/oplus_native_features.mk index e776e929eb17..e966759c02d6 100644 --- a/oplus_native_features.mk +++ b/oplus_native_features.mk @@ -1,5 +1,5 @@ #this is generated by oplus/build/make/core/soong_config.mk -OPLUS_NATIVE_FEATURE_SET=OPLUS_BUG_STABILITY OPLUS_BUG_COMPATIBILITY OPLUS_BUG_DEBUG OPLUS_ARCH_INJECT OPLUS_ARCH_EXTENDS VENDOR_EDIT OPLUS_FEATURE_PLATFORM OPLUS_FEATURE_ORMS OPLUS_FEATURE_ENGINEERTOOLS OPLUS_FEATURE_SELINUX_CONTROL_LOG OPLUS_FEATURE_SELINUX_DEBUG_BUILD OPLUS_FEATURE_SELINUX_CONTEXTS OPLUS_FEATURE_PMS_EXCEPTION_FIX OPLUS_FEATURE_PMS_BOOT_TIME_OPT OPLUS_FEATURE_DATE_FIXUP OPLUS_FEATURE_DEXOPT_SPEED OPLUS_FEATURE_APP_ACCESS_FILES OPLUS_FEATURE_OTA_DATA_UPDATE OPLUS_FEATURE_CUSTOM_GIDS OPLUS_FEATURE_PERFORMANCE OPLUS_FEATURE_SENSOR OPLUS_FEATURE_CTS_FINGERPRINT OPLUS_FEATURE_MAINLINE OPLUS_FEATURE_STORAGE OPLUS_FEATURE_STORAGE_MOUNT OPLUS_FEATURE_STORAGE_RESIZE OPLUS_FEATURE_STORAGE_TRIM OPLUS_FEATURE_STORAGE_FBE OPLUS_FEATURE_STORAGE_MTP OPLUS_FEATURE_STORAGE_RESERVEPARTITION OPLUS_FEATURE_STORAGE_USB OPLUS_FEATURE_STORAGE_CUSTOMIZE_PARTITION OPLUS_FEATURE_STORAGE_FDE OPLUS_FEATURE_STORAGE_AUTOMATIC_TIMING OPLUS_BUG_UPDATABILITY OPLUS_FEATURE_RECOVERY_BUILD OPLUS_FEATURE_RECOVERY_BOOT OPLUS_FEATURE_RECOVERY_UI OPLUS_FEATURE_RECOVERY_RESET OPLUS_FEATURE_OTAPACKAGE_BUILD OPLUS_FEATURE_OTAPACKAGE_UPDATER OPLUS_FEATURE_OTAPACKAGE_SCRIPT OPLUS_FEATURE_DYNAMIC_KEYMAP OPLUS_FEATURE_DROP_STATUSBAR OPLUS_FEATURE_GESTURE_SCREENSHOT OPLUS_FEATURE_BOOTANIMATION OPLUS_FEATURE_QUICKBOOT OPLUS_FEATURE_LOGKIT OPLUS_FEATURE_LFEH OPLUS_FEATURE_CRITICAL_LOG OPLUS_ARCH_CUSTOM_PARTITION OPLUS_FEATURE_ENGINEERING_FILEACCESS OPLUS_FEATURE_DEXOPT_STRATEGY OPLUS_FEATURE_BATTERY_MANAGER OPLUS_FEATURE_OTA_DDR5_COMPATIBLE OPLUS_FEATURE_RECOVERY_BOOT_REASON OPLUS_FEATURE_PMIC_MONITOR OPLUS_FEATURE_SHUTDOWN_DETECT OPLUS_FEATURE_FACERECOGNITION OPLUS_FEATURE_BINDER_MONITOR OPLUS_FEATURE_THEIA OPLUS_FEATURE_OPPODL OPLUS_FEATURE_MULTI_KSWAPD OPLUS_FEATURE_FG_IO_OPT OPLUS_FEATURE_ZRAM_OPT OPLUS_FEATURE_PROCESS_RECLAIM OPLUS_FEATURE_QCOM_PMICWD OPLUS_FEATURE_TP_BASIC OPLUS_FEATURE_TP_BSPFWUPDATE OPLUS_FEATURE_FINGERPRINT OPLUS_FEATURE_FINGERPRINTPAY OPLUS_FEATURE_CRYPTOENG OPLUS_FEATURE_STORAGE_TOOL OPLUS_FEATURE_UFS_SHOW_LATENCY OPLUS_FEATURE_PADL_STATISTICS OPLUS_FEATURE_UFSPLUS OPLUS_FEATURE_EXFAT_SUPPORT OPLUS_FEATURE_SDCARDFS_SUPPORT OPLUS_FEATURE_ELEVATOR_DETECT OPLUS_FEATURE_ACTIVITY_RECOGNITION OPLUS_FEATURE_SENSOR_ALGORITHM OPLUS_FEATURE_SENSOR_SMEM OPLUS_FEATURE_ONEPLUSSENSOR OPLUS_FEATURE_FTM OPLUS_FEATURE_MULTI_FREEAREA OPLUS_FEATURE_VIRTUAL_RESERVE_MEMORY OPLUS_FEATURE_CAMERA_COMMON OPLUS_FEATURE_VIRTUAL_CAMERA OPLUS_FEATURE_PHYSICAL_CAMERA_PROVIDER_VERSION OPLUS_FEATURE_WIFI_DATASTALL OPLUS_FEATURE_WIFI_HOSTAPDHIDL OPLUS_FEATURE_WIFI_BDF OPLUS_FEATURE_WIFI_FTM OPLUS_FEATURE_WIFI_SAR OPLUS_FEATURE_SWITCH_CHECK OPLUS_FEATURE_WIFI_DIAG OPLUS_FEATURE_WIFI_DCS_SWITCH OPLUS_FEATURE_WIFI_QPOWER OPLUS_FEATURE_WIFI_MTUDETECT OPLUS_FEATURE_WIFI_SLA OPLUS_FEATURE_IPV6_OPTIMIZE OPLUS_FEATURE_WIFI_GBK OPLUS_FEATURE_WIFI_DUALSTA OPLUS_FEATURE_WIFI_ROUTERBOOST OPLUS_FEATURE_WIFI_OSHARE OPLUS_FEATURE_WIFI_LIMMITBGSPEED OPLUS_FEATURE_WIFI_SUPPLICANTHIDL OPLUS_FEATURE_BT_INTEROPLIST OPLUS_FEATURE_BT_DCS OPLUS_FEATURE_BT_FW_OVERRIDE OPLUS_FEATURE_BT_FW_BTTESTMODE OPLUS_FEATURE_GPS_CONFIG_ADAPT OPLUS_FEATURE_BT_FW_SSRDUMP OPLUS_FEATURE_FORCE_NETWORK_SEARCH OPLUS_FEATURE_NW_RECOVERY_WHEN_SCREEN_ON OPLUS_FEATURE_GAMEECO_COOLEFFECT OPLUS_FEATURE_ELEV_MODE OPLUS_FEATURE_NONDDS_OPTIMIZE OPLUS_FEAUTRE_PIN_RETRY OPLUS_FEAUTRE_OAPP_NETCONTROL OPLUS_FEATURE_LOG_LISTEN OPLUS_FEATURE_NEW_FREQ_HOP_INTERFACE OPLUS_FEATURE_PLMN_SELECTION OPLUS_FEATURE_REGIONMARK_INDICATION OPLUS_FEATURE_SIP_RP_ERROR_RETRY OPLUS_FEATURE_DNS_HOOK OPLUS_FEATURE_STATS_CALC OPLUS_FEATURE_FONT_FLIP OPLUS_FEATURE_DARKMODE OPLUS_FEATURE_LINKERCONFIG_CUSTOM OPLUS_FEATURE_HANS_FREEZE OPLUS_FEATURE_RESOURCES_COMPILE OPLUS_FEATURE_MOTION_INTERCEPT OPLUS_FEATURE_ATLAS OPLUS_FEATURE_AUDIOSERVER_DEBUG OPLUS_FEATURE_MM_FEEDBACK OPLUS_FEATURE_VIP_RECORD OPLUS_FEATURE_VOIP_ENHANCE OPLUS_FEATURE_KTV OPLUS_FEATURE_PLAYBACKCAPTURE OPLUS_FEATURE_GAME_MUTE OPLUS_FEATURE_VOICE_CHANGER OPLUS_FEATURE_VIBRING_SYNC OPLUS_FEATURE_SVA_TRNSPARENT OPLUS_FEATURE_INPUTCHANNEL_CHOICE OPLUS_FEATURE_AUDIOVOICE_SCENCE OPLUS_FEATURE_DOLBY OPLUS_FEATURE_AUDIOLL OPLUS_FEATURE_SURROUND_AUDIO OPLUS_FEATURE_SPK_PROTECTION OPLUS_FEATURE_OPERATOR_RINGTONE OPLUS_FEATURE_CAMERASOUND_FORCE OPLUS_FEATURE_FORBID_RECORD OPLUS_VDF_LEFT_SPEAKER_MUTE OPLUS_FEATURE_SPEAKER_MUTE OPLUS_FEATURE_ADJUST_VOLUME OPLUS_FEATURE_GAME_AUDIO_EFFECTS OPLUS_FEATURE_DUALHEADPHONE OPLUS_FEATURE_SMARTPA_PM OPLUS_FEATURE_IMPEDANCE_MATCH OPLUS_FEATURE_MIC_VA_MIC_CLK_SWITCH OPLUS_FEATURE_SWITCH_MIC OPLUS_FEATURE_QVA_MIC_SUPPORT OPLUS_FEATURE_CAR_VOICE_DL_MUTE OPLUS_FEATURE_DOLBY_ATMOS_GAME OPLUS_FEATURE_EAR_PROTECTION OPLUS_FEATURE_MULTISCENE_RECORD OPLUS_FEATURE_SSR OPLUS_FEATURE_MI2S_SLAVE OPLUS_FEATURE_AUDIO_FTM OPLUS_FEATURE_ADSP_RECOVERY OPLUS_FEATURE_AP_LVIMFS OPLUS_FEATURE_AEC OPLUS_FEATURE_AUDIODETECT OPLUS_FEATURE_AUDIOHAL_SCHED OPLUS_FEATURE_AUDIO_BINAURAL_RECORD OPLUS_FEATURE_DRM_WIDEVINEL3 OPLUS_FEATURE_OPLUS_AVENHANCEMENT OPLUS_FEATURE_DRM_OMA OPLUS_FEATURE_APE_DECODER OPLUS_FEATURE_VIDEO_TITLE OPLUS_FEATURE_AUDIOBITRATE OPLUS_FEATURE_MP3_RECORDER OPLUS_FEATURE_FFMPEG_INTEGRATION OPLUS_FEATURE_QP_OPTIMIZATION OPLUS_FEATURE_VIDEO_MIRROR OPLUS_FEATURE_HQV_SUPPORT_APP OPLUS_FEATURE_FEEDBACK_INFO OPLUS_FEATURE_ZEN_MODE OPLUS_FEATRUE_HEIF_OPTIMIZE OPLUS_FEATURE_IMAGE_PROCESSING OPLUS_FEATURE_HEIF_CONVERTER OPLUS_FEATURE_10BIT_HEIF OPLUS_FEATURE_OITHMB_INTEGRATION OPLUS_FEATURE_ROI_ENCODE_QCOM OPLUS_FEATURE_OSIE_SR OPLUS_FEATURE_HQV OPLUS_FEATURE_ONSCREENFINGERPRINT OPLUS_FEATURE_AUTOBRIGHTNESS OPLUS_FEATURE_DYNAMIC_DSI OPLUS_FEATURE_VPP OPLUS_FEATURE_AI_FRAMERATE OPLUS_FEATURE_RESOLUTIONSWITCH OPLUS_FEATURE_FORBIDDEN_RECORD OPLUS_FEATURE_SMOOTH_BRIGHTNESS OPLUS_FEATURE_PXLW_IRIS5 OPLUS_FEATURE_AOD OPLUS_FEATURE_DC OPLUS_FEATURE_ADFR_KERNEL OPLUS_FEATURE_ADFR OPLUS_FEATURE_GAME_OIFACE OPLUS_FEATURE_ADPF OPLUS_FEATURE_HAPTIC_VIBRATE OPLUS_FEATURE_GAME_JOYSTICK OPLUS_FEATURE_TV_VOIP OPLUS_FEATURE_VC_MUTE OPLUS_FEATURE_AUDIO_OCAR OPLUS_FEATURE_VIRTUAL_AUDIO OPLUS_NATIVE_MACRO_FEATURES TARGET_PRODUCT +OPLUS_NATIVE_FEATURE_SET=OPLUS_BUG_STABILITY OPLUS_BUG_COMPATIBILITY OPLUS_BUG_DEBUG OPLUS_ARCH_INJECT OPLUS_ARCH_EXTENDS VENDOR_EDIT OPLUS_FEATURE_PLATFORM OPLUS_FEATURE_ORMS OPLUS_FEATURE_ENGINEERTOOLS OPLUS_FEATURE_SELINUX_CONTROL_LOG OPLUS_FEATURE_SELINUX_DEBUG_BUILD OPLUS_FEATURE_SELINUX_CONTEXTS OPLUS_FEATURE_PMS_EXCEPTION_FIX OPLUS_FEATURE_PMS_BOOT_TIME_OPT OPLUS_FEATURE_DATE_FIXUP OPLUS_FEATURE_DEXOPT_SPEED OPLUS_FEATURE_APP_ACCESS_FILES OPLUS_FEATURE_OTA_DATA_UPDATE OPLUS_FEATURE_CUSTOM_GIDS OPLUS_FEATURE_PERFORMANCE OPLUS_FEATURE_SENSOR OPLUS_FEATURE_CTS_FINGERPRINT OPLUS_FEATURE_MAINLINE OPLUS_FEATURE_STORAGE OPLUS_FEATURE_STORAGE_MOUNT OPLUS_FEATURE_STORAGE_RESIZE OPLUS_FEATURE_STORAGE_TRIM OPLUS_FEATURE_STORAGE_FBE OPLUS_FEATURE_STORAGE_MTP OPLUS_FEATURE_STORAGE_RESERVEPARTITION OPLUS_FEATURE_STORAGE_USB OPLUS_FEATURE_STORAGE_CUSTOMIZE_PARTITION OPLUS_FEATURE_STORAGE_FDE OPLUS_FEATURE_STORAGE_AUTOMATIC_TIMING OPLUS_BUG_UPDATABILITY OPLUS_FEATURE_RECOVERY_BUILD OPLUS_FEATURE_RECOVERY_BOOT OPLUS_FEATURE_RECOVERY_UI OPLUS_FEATURE_RECOVERY_RESET OPLUS_FEATURE_OTAPACKAGE_BUILD OPLUS_FEATURE_OTAPACKAGE_UPDATER OPLUS_FEATURE_OTAPACKAGE_SCRIPT OPLUS_FEATURE_DYNAMIC_KEYMAP OPLUS_FEATURE_DROP_STATUSBAR OPLUS_FEATURE_GESTURE_SCREENSHOT OPLUS_FEATURE_BOOTANIMATION OPLUS_FEATURE_QUICKBOOT OPLUS_FEATURE_LOGKIT OPLUS_FEATURE_LFEH OPLUS_FEATURE_CRITICAL_LOG OPLUS_ARCH_CUSTOM_PARTITION OPLUS_FEATURE_ENGINEERING_FILEACCESS OPLUS_FEATURE_DEXOPT_STRATEGY OPLUS_FEATURE_BATTERY_MANAGER OPLUS_FEATURE_OTA_DDR5_COMPATIBLE OPLUS_FEATURE_RECOVERY_BOOT_REASON OPLUS_FEATURE_PMIC_MONITOR OPLUS_FEATURE_SHUTDOWN_DETECT OPLUS_FEATURE_FACERECOGNITION OPLUS_FEATURE_BINDER_MONITOR OPLUS_FEATURE_THEIA OPLUS_FEATURE_OPPODL OPLUS_FEATURE_MULTI_KSWAPD OPLUS_FEATURE_FG_IO_OPT OPLUS_FEATURE_ZRAM_OPT OPLUS_FEATURE_PROCESS_RECLAIM OPLUS_FEATURE_QCOM_PMICWD OPLUS_FEATURE_TP_BASIC OPLUS_FEATURE_TP_BSPFWUPDATE OPLUS_FEATURE_FINGERPRINT OPLUS_FEATURE_FINGERPRINTPAY OPLUS_FEATURE_CRYPTOENG OPLUS_FEATURE_STORAGE_TOOL OPLUS_FEATURE_UFS_SHOW_LATENCY OPLUS_FEATURE_PADL_STATISTICS OPLUS_FEATURE_UFSPLUS OPLUS_FEATURE_EXFAT_SUPPORT OPLUS_FEATURE_SDCARDFS_SUPPORT OPLUS_FEATURE_ELEVATOR_DETECT OPLUS_FEATURE_ACTIVITY_RECOGNITION OPLUS_FEATURE_SENSOR_ALGORITHM OPLUS_FEATURE_SENSOR_SMEM OPLUS_FEATURE_ONEPLUSSENSOR OPLUS_FEATURE_FTM OPLUS_FEATURE_MULTI_FREEAREA OPLUS_FEATURE_VIRTUAL_RESERVE_MEMORY OPLUS_FEATURE_CAMERA_COMMON OPLUS_FEATURE_VIRTUAL_CAMERA OPLUS_FEATURE_PHYSICAL_CAMERA_PROVIDER_VERSION OPLUS_FEATURE_WIFI_DATASTALL OPLUS_FEATURE_WIFI_HOSTAPDHIDL OPLUS_FEATURE_WIFI_BDF OPLUS_FEATURE_WIFI_FTM OPLUS_FEATURE_WIFI_SAR OPLUS_FEATURE_SWITCH_CHECK OPLUS_FEATURE_WIFI_DIAG OPLUS_FEATURE_WIFI_DCS_SWITCH OPLUS_FEATURE_WIFI_QPOWER OPLUS_FEATURE_WIFI_MTUDETECT OPLUS_FEATURE_WIFI_SLA OPLUS_FEATURE_IPV6_OPTIMIZE OPLUS_FEATURE_WIFI_GBK OPLUS_FEATURE_WIFI_DUALSTA OPLUS_FEATURE_WIFI_ROUTERBOOST OPLUS_FEATURE_WIFI_OSHARE OPLUS_FEATURE_WIFI_LIMMITBGSPEED OPLUS_FEATURE_WIFI_SUPPLICANTHIDL OPLUS_FEATURE_BT_INTEROPLIST OPLUS_FEATURE_BT_DCS OPLUS_FEATURE_BT_FW_OVERRIDE OPLUS_FEATURE_BT_FW_BTTESTMODE OPLUS_FEATURE_GPS_CONFIG_ADAPT OPLUS_FEATURE_BT_FW_SSRDUMP OPLUS_FEATURE_FORCE_NETWORK_SEARCH OPLUS_FEATURE_NW_RECOVERY_WHEN_SCREEN_ON OPLUS_FEATURE_GAMEECO_COOLEFFECT OPLUS_FEATURE_ELEV_MODE OPLUS_FEATURE_NONDDS_OPTIMIZE OPLUS_FEAUTRE_PIN_RETRY OPLUS_FEAUTRE_OAPP_NETCONTROL OPLUS_FEATURE_LOG_LISTEN OPLUS_FEATURE_NEW_FREQ_HOP_INTERFACE OPLUS_FEATURE_PLMN_SELECTION OPLUS_FEATURE_REGIONMARK_INDICATION OPLUS_FEATURE_SIP_RP_ERROR_RETRY OPLUS_FEATURE_DNS_HOOK OPLUS_FEATURE_STATS_CALC OPLUS_FEATURE_FONT_FLIP OPLUS_FEATURE_DARKMODE OPLUS_FEATURE_LINKERCONFIG_CUSTOM OPLUS_FEATURE_HANS_FREEZE OPLUS_FEATURE_RESOURCES_COMPILE OPLUS_FEATURE_MOTION_INTERCEPT OPLUS_FEATURE_ATLAS OPLUS_FEATURE_AUDIOSERVER_DEBUG OPLUS_FEATURE_VIP_RECORD OPLUS_FEATURE_VOIP_ENHANCE OPLUS_FEATURE_KTV OPLUS_FEATURE_PLAYBACKCAPTURE OPLUS_FEATURE_GAME_MUTE OPLUS_FEATURE_VOICE_CHANGER OPLUS_FEATURE_VIBRING_SYNC OPLUS_FEATURE_SVA_TRNSPARENT OPLUS_FEATURE_INPUTCHANNEL_CHOICE OPLUS_FEATURE_AUDIOVOICE_SCENCE OPLUS_FEATURE_DOLBY OPLUS_FEATURE_AUDIOLL OPLUS_FEATURE_SURROUND_AUDIO OPLUS_FEATURE_SPK_PROTECTION OPLUS_FEATURE_OPERATOR_RINGTONE OPLUS_FEATURE_CAMERASOUND_FORCE OPLUS_FEATURE_FORBID_RECORD OPLUS_VDF_LEFT_SPEAKER_MUTE OPLUS_FEATURE_SPEAKER_MUTE OPLUS_FEATURE_ADJUST_VOLUME OPLUS_FEATURE_GAME_AUDIO_EFFECTS OPLUS_FEATURE_DUALHEADPHONE OPLUS_FEATURE_SMARTPA_PM OPLUS_FEATURE_IMPEDANCE_MATCH OPLUS_FEATURE_MIC_VA_MIC_CLK_SWITCH OPLUS_FEATURE_SWITCH_MIC OPLUS_FEATURE_QVA_MIC_SUPPORT OPLUS_FEATURE_CAR_VOICE_DL_MUTE OPLUS_FEATURE_DOLBY_ATMOS_GAME OPLUS_FEATURE_EAR_PROTECTION OPLUS_FEATURE_MULTISCENE_RECORD OPLUS_FEATURE_SSR OPLUS_FEATURE_MI2S_SLAVE OPLUS_FEATURE_AUDIO_FTM OPLUS_FEATURE_ADSP_RECOVERY OPLUS_FEATURE_AP_LVIMFS OPLUS_FEATURE_AEC OPLUS_FEATURE_AUDIODETECT OPLUS_FEATURE_AUDIOHAL_SCHED OPLUS_FEATURE_AUDIO_BINAURAL_RECORD OPLUS_FEATURE_DRM_WIDEVINEL3 OPLUS_FEATURE_OPLUS_AVENHANCEMENT OPLUS_FEATURE_DRM_OMA OPLUS_FEATURE_APE_DECODER OPLUS_FEATURE_VIDEO_TITLE OPLUS_FEATURE_AUDIOBITRATE OPLUS_FEATURE_MP3_RECORDER OPLUS_FEATURE_FFMPEG_INTEGRATION OPLUS_FEATURE_QP_OPTIMIZATION OPLUS_FEATURE_VIDEO_MIRROR OPLUS_FEATURE_HQV_SUPPORT_APP OPLUS_FEATURE_ZEN_MODE OPLUS_FEATRUE_HEIF_OPTIMIZE OPLUS_FEATURE_IMAGE_PROCESSING OPLUS_FEATURE_HEIF_CONVERTER OPLUS_FEATURE_10BIT_HEIF OPLUS_FEATURE_OITHMB_INTEGRATION OPLUS_FEATURE_ROI_ENCODE_QCOM OPLUS_FEATURE_OSIE_SR OPLUS_FEATURE_HQV OPLUS_FEATURE_ONSCREENFINGERPRINT OPLUS_FEATURE_AUTOBRIGHTNESS OPLUS_FEATURE_DYNAMIC_DSI OPLUS_FEATURE_VPP OPLUS_FEATURE_AI_FRAMERATE OPLUS_FEATURE_RESOLUTIONSWITCH OPLUS_FEATURE_FORBIDDEN_RECORD OPLUS_FEATURE_SMOOTH_BRIGHTNESS OPLUS_FEATURE_PXLW_IRIS5 OPLUS_FEATURE_AOD OPLUS_FEATURE_DC OPLUS_FEATURE_ADFR_KERNEL OPLUS_FEATURE_ADFR OPLUS_FEATURE_GAME_OIFACE OPLUS_FEATURE_ADPF OPLUS_FEATURE_HAPTIC_VIBRATE OPLUS_FEATURE_GAME_JOYSTICK OPLUS_FEATURE_TV_VOIP OPLUS_FEATURE_VC_MUTE OPLUS_FEATURE_AUDIO_OCAR OPLUS_FEATURE_VIRTUAL_AUDIO OPLUS_NATIVE_MACRO_FEATURES TARGET_PRODUCT OPLUS_BUG_STABILITY=yes OPLUS_BUG_COMPATIBILITY=yes OPLUS_BUG_DEBUG=yes @@ -135,7 +135,6 @@ OPLUS_FEATURE_RESOURCES_COMPILE=yes OPLUS_FEATURE_MOTION_INTERCEPT=yes OPLUS_FEATURE_ATLAS=yes OPLUS_FEATURE_AUDIOSERVER_DEBUG=yes -OPLUS_FEATURE_MM_FEEDBACK=yes OPLUS_FEATURE_VIP_RECORD=yes OPLUS_FEATURE_VOIP_ENHANCE=yes OPLUS_FEATURE_KTV=true @@ -187,7 +186,6 @@ OPLUS_FEATURE_FFMPEG_INTEGRATION=yes OPLUS_FEATURE_QP_OPTIMIZATION=yes OPLUS_FEATURE_VIDEO_MIRROR=yes OPLUS_FEATURE_HQV_SUPPORT_APP=yes -OPLUS_FEATURE_FEEDBACK_INFO=yes OPLUS_FEATURE_ZEN_MODE=yes OPLUS_FEATRUE_HEIF_OPTIMIZE=yes OPLUS_FEATURE_IMAGE_PROCESSING=yes @@ -218,5 +216,5 @@ OPLUS_FEATURE_TV_VOIP=yes OPLUS_FEATURE_VC_MUTE=yes OPLUS_FEATURE_AUDIO_OCAR=yes OPLUS_FEATURE_VIRTUAL_AUDIO=yes -OPLUS_NATIVE_MACRO_FEATURES=OPLUS_BUG_STABILITY OPLUS_BUG_COMPATIBILITY OPLUS_BUG_DEBUG OPLUS_ARCH_INJECT OPLUS_ARCH_EXTENDS VENDOR_EDIT OPLUS_FEATURE_PLATFORM OPLUS_FEATURE_ORMS OPLUS_FEATURE_ENGINEERTOOLS OPLUS_FEATURE_SELINUX_CONTROL_LOG OPLUS_FEATURE_SELINUX_DEBUG_BUILD OPLUS_FEATURE_SELINUX_CONTEXTS OPLUS_FEATURE_PMS_EXCEPTION_FIX OPLUS_FEATURE_PMS_BOOT_TIME_OPT OPLUS_FEATURE_DATE_FIXUP OPLUS_FEATURE_DEXOPT_SPEED OPLUS_FEATURE_APP_ACCESS_FILES OPLUS_FEATURE_OTA_DATA_UPDATE OPLUS_FEATURE_CUSTOM_GIDS OPLUS_FEATURE_PERFORMANCE OPLUS_FEATURE_SENSOR OPLUS_FEATURE_CTS_FINGERPRINT OPLUS_FEATURE_MAINLINE OPLUS_FEATURE_STORAGE OPLUS_FEATURE_STORAGE_MOUNT OPLUS_FEATURE_STORAGE_RESIZE OPLUS_FEATURE_STORAGE_TRIM OPLUS_FEATURE_STORAGE_FBE OPLUS_FEATURE_STORAGE_MTP OPLUS_FEATURE_STORAGE_RESERVEPARTITION OPLUS_FEATURE_STORAGE_USB OPLUS_FEATURE_STORAGE_CUSTOMIZE_PARTITION OPLUS_FEATURE_STORAGE_FDE OPLUS_FEATURE_STORAGE_AUTOMATIC_TIMING OPLUS_BUG_UPDATABILITY OPLUS_FEATURE_RECOVERY_BUILD OPLUS_FEATURE_RECOVERY_BOOT OPLUS_FEATURE_RECOVERY_UI OPLUS_FEATURE_RECOVERY_RESET OPLUS_FEATURE_OTAPACKAGE_BUILD OPLUS_FEATURE_OTAPACKAGE_UPDATER OPLUS_FEATURE_OTAPACKAGE_SCRIPT OPLUS_FEATURE_DYNAMIC_KEYMAP OPLUS_FEATURE_DROP_STATUSBAR OPLUS_FEATURE_GESTURE_SCREENSHOT OPLUS_FEATURE_BOOTANIMATION OPLUS_FEATURE_QUICKBOOT OPLUS_FEATURE_LOGKIT OPLUS_FEATURE_LFEH OPLUS_FEATURE_CRITICAL_LOG OPLUS_ARCH_CUSTOM_PARTITION OPLUS_FEATURE_ENGINEERING_FILEACCESS OPLUS_FEATURE_DEXOPT_STRATEGY OPLUS_FEATURE_BATTERY_MANAGER OPLUS_FEATURE_OTA_DDR5_COMPATIBLE OPLUS_FEATURE_RECOVERY_BOOT_REASON OPLUS_FEATURE_PMIC_MONITOR OPLUS_FEATURE_SHUTDOWN_DETECT OPLUS_FEATURE_FACERECOGNITION OPLUS_FEATURE_BINDER_MONITOR OPLUS_FEATURE_THEIA OPLUS_FEATURE_OPPODL OPLUS_FEATURE_MULTI_KSWAPD OPLUS_FEATURE_FG_IO_OPT OPLUS_FEATURE_ZRAM_OPT OPLUS_FEATURE_PROCESS_RECLAIM OPLUS_FEATURE_QCOM_PMICWD OPLUS_FEATURE_TP_BASIC OPLUS_FEATURE_TP_BSPFWUPDATE OPLUS_FEATURE_FINGERPRINT OPLUS_FEATURE_FINGERPRINTPAY OPLUS_FEATURE_CRYPTOENG OPLUS_FEATURE_STORAGE_TOOL OPLUS_FEATURE_UFS_SHOW_LATENCY OPLUS_FEATURE_PADL_STATISTICS OPLUS_FEATURE_UFSPLUS OPLUS_FEATURE_EXFAT_SUPPORT OPLUS_FEATURE_SDCARDFS_SUPPORT OPLUS_FEATURE_ELEVATOR_DETECT OPLUS_FEATURE_ACTIVITY_RECOGNITION OPLUS_FEATURE_SENSOR_ALGORITHM OPLUS_FEATURE_SENSOR_SMEM OPLUS_FEATURE_ONEPLUSSENSOR OPLUS_FEATURE_FTM OPLUS_FEATURE_MULTI_FREEAREA OPLUS_FEATURE_VIRTUAL_RESERVE_MEMORY OPLUS_FEATURE_CAMERA_COMMON OPLUS_FEATURE_VIRTUAL_CAMERA OPLUS_FEATURE_PHYSICAL_CAMERA_PROVIDER_VERSION OPLUS_FEATURE_WIFI_DATASTALL OPLUS_FEATURE_WIFI_HOSTAPDHIDL OPLUS_FEATURE_WIFI_BDF OPLUS_FEATURE_WIFI_FTM OPLUS_FEATURE_WIFI_SAR OPLUS_FEATURE_SWITCH_CHECK OPLUS_FEATURE_WIFI_DIAG OPLUS_FEATURE_WIFI_DCS_SWITCH OPLUS_FEATURE_WIFI_QPOWER OPLUS_FEATURE_WIFI_MTUDETECT OPLUS_FEATURE_WIFI_SLA OPLUS_FEATURE_IPV6_OPTIMIZE OPLUS_FEATURE_WIFI_GBK OPLUS_FEATURE_WIFI_DUALSTA OPLUS_FEATURE_WIFI_ROUTERBOOST OPLUS_FEATURE_WIFI_OSHARE OPLUS_FEATURE_WIFI_LIMMITBGSPEED OPLUS_FEATURE_WIFI_SUPPLICANTHIDL OPLUS_FEATURE_BT_INTEROPLIST OPLUS_FEATURE_BT_DCS OPLUS_FEATURE_BT_FW_OVERRIDE OPLUS_FEATURE_BT_FW_BTTESTMODE OPLUS_FEATURE_GPS_CONFIG_ADAPT OPLUS_FEATURE_BT_FW_SSRDUMP OPLUS_FEATURE_FORCE_NETWORK_SEARCH OPLUS_FEATURE_NW_RECOVERY_WHEN_SCREEN_ON OPLUS_FEATURE_GAMEECO_COOLEFFECT OPLUS_FEATURE_ELEV_MODE OPLUS_FEATURE_NONDDS_OPTIMIZE OPLUS_FEAUTRE_PIN_RETRY OPLUS_FEAUTRE_OAPP_NETCONTROL OPLUS_FEATURE_LOG_LISTEN OPLUS_FEATURE_NEW_FREQ_HOP_INTERFACE OPLUS_FEATURE_PLMN_SELECTION OPLUS_FEATURE_REGIONMARK_INDICATION OPLUS_FEATURE_SIP_RP_ERROR_RETRY OPLUS_FEATURE_DNS_HOOK OPLUS_FEATURE_STATS_CALC OPLUS_FEATURE_FONT_FLIP OPLUS_FEATURE_DARKMODE OPLUS_FEATURE_LINKERCONFIG_CUSTOM OPLUS_FEATURE_HANS_FREEZE OPLUS_FEATURE_RESOURCES_COMPILE OPLUS_FEATURE_MOTION_INTERCEPT OPLUS_FEATURE_ATLAS OPLUS_FEATURE_AUDIOSERVER_DEBUG OPLUS_FEATURE_MM_FEEDBACK OPLUS_FEATURE_VIP_RECORD OPLUS_FEATURE_VOIP_ENHANCE OPLUS_FEATURE_KTV OPLUS_FEATURE_PLAYBACKCAPTURE OPLUS_FEATURE_GAME_MUTE OPLUS_FEATURE_VOICE_CHANGER OPLUS_FEATURE_VIBRING_SYNC OPLUS_FEATURE_SVA_TRNSPARENT OPLUS_FEATURE_INPUTCHANNEL_CHOICE OPLUS_FEATURE_AUDIOVOICE_SCENCE OPLUS_FEATURE_DOLBY OPLUS_FEATURE_AUDIOLL OPLUS_FEATURE_SURROUND_AUDIO OPLUS_FEATURE_SPK_PROTECTION OPLUS_FEATURE_OPERATOR_RINGTONE OPLUS_FEATURE_CAMERASOUND_FORCE OPLUS_FEATURE_FORBID_RECORD OPLUS_VDF_LEFT_SPEAKER_MUTE OPLUS_FEATURE_SPEAKER_MUTE OPLUS_FEATURE_ADJUST_VOLUME OPLUS_FEATURE_GAME_AUDIO_EFFECTS OPLUS_FEATURE_DUALHEADPHONE OPLUS_FEATURE_SMARTPA_PM OPLUS_FEATURE_IMPEDANCE_MATCH OPLUS_FEATURE_MIC_VA_MIC_CLK_SWITCH OPLUS_FEATURE_SWITCH_MIC OPLUS_FEATURE_QVA_MIC_SUPPORT OPLUS_FEATURE_CAR_VOICE_DL_MUTE OPLUS_FEATURE_DOLBY_ATMOS_GAME OPLUS_FEATURE_EAR_PROTECTION OPLUS_FEATURE_MULTISCENE_RECORD OPLUS_FEATURE_SSR OPLUS_FEATURE_MI2S_SLAVE OPLUS_FEATURE_AUDIO_FTM OPLUS_FEATURE_ADSP_RECOVERY OPLUS_FEATURE_AP_LVIMFS OPLUS_FEATURE_AEC OPLUS_FEATURE_AUDIODETECT OPLUS_FEATURE_AUDIOHAL_SCHED OPLUS_FEATURE_AUDIO_BINAURAL_RECORD OPLUS_FEATURE_DRM_WIDEVINEL3 OPLUS_FEATURE_OPLUS_AVENHANCEMENT OPLUS_FEATURE_DRM_OMA OPLUS_FEATURE_APE_DECODER OPLUS_FEATURE_VIDEO_TITLE OPLUS_FEATURE_AUDIOBITRATE OPLUS_FEATURE_MP3_RECORDER OPLUS_FEATURE_FFMPEG_INTEGRATION OPLUS_FEATURE_QP_OPTIMIZATION OPLUS_FEATURE_VIDEO_MIRROR OPLUS_FEATURE_HQV_SUPPORT_APP OPLUS_FEATURE_FEEDBACK_INFO OPLUS_FEATURE_ZEN_MODE OPLUS_FEATRUE_HEIF_OPTIMIZE OPLUS_FEATURE_IMAGE_PROCESSING OPLUS_FEATURE_HEIF_CONVERTER OPLUS_FEATURE_10BIT_HEIF OPLUS_FEATURE_OITHMB_INTEGRATION OPLUS_FEATURE_ROI_ENCODE_QCOM OPLUS_FEATURE_OSIE_SR OPLUS_FEATURE_HQV OPLUS_FEATURE_ONSCREENFINGERPRINT OPLUS_FEATURE_AUTOBRIGHTNESS OPLUS_FEATURE_DYNAMIC_DSI OPLUS_FEATURE_VPP OPLUS_FEATURE_AI_FRAMERATE OPLUS_FEATURE_RESOLUTIONSWITCH OPLUS_FEATURE_FORBIDDEN_RECORD OPLUS_FEATURE_SMOOTH_BRIGHTNESS OPLUS_FEATURE_PXLW_IRIS5 OPLUS_FEATURE_AOD OPLUS_FEATURE_DC OPLUS_FEATURE_ADFR_KERNEL OPLUS_FEATURE_ADFR OPLUS_FEATURE_GAME_OIFACE OPLUS_FEATURE_ADPF OPLUS_FEATURE_HAPTIC_VIBRATE OPLUS_FEATURE_GAME_JOYSTICK OPLUS_FEATURE_TV_VOIP OPLUS_FEATURE_VC_MUTE OPLUS_FEATURE_AUDIO_OCAR OPLUS_FEATURE_VIRTUAL_AUDIO +OPLUS_NATIVE_MACRO_FEATURES=OPLUS_BUG_STABILITY OPLUS_BUG_COMPATIBILITY OPLUS_BUG_DEBUG OPLUS_ARCH_INJECT OPLUS_ARCH_EXTENDS VENDOR_EDIT OPLUS_FEATURE_PLATFORM OPLUS_FEATURE_ORMS OPLUS_FEATURE_ENGINEERTOOLS OPLUS_FEATURE_SELINUX_CONTROL_LOG OPLUS_FEATURE_SELINUX_DEBUG_BUILD OPLUS_FEATURE_SELINUX_CONTEXTS OPLUS_FEATURE_PMS_EXCEPTION_FIX OPLUS_FEATURE_PMS_BOOT_TIME_OPT OPLUS_FEATURE_DATE_FIXUP OPLUS_FEATURE_DEXOPT_SPEED OPLUS_FEATURE_APP_ACCESS_FILES OPLUS_FEATURE_OTA_DATA_UPDATE OPLUS_FEATURE_CUSTOM_GIDS OPLUS_FEATURE_PERFORMANCE OPLUS_FEATURE_SENSOR OPLUS_FEATURE_CTS_FINGERPRINT OPLUS_FEATURE_MAINLINE OPLUS_FEATURE_STORAGE OPLUS_FEATURE_STORAGE_MOUNT OPLUS_FEATURE_STORAGE_RESIZE OPLUS_FEATURE_STORAGE_TRIM OPLUS_FEATURE_STORAGE_FBE OPLUS_FEATURE_STORAGE_MTP OPLUS_FEATURE_STORAGE_RESERVEPARTITION OPLUS_FEATURE_STORAGE_USB OPLUS_FEATURE_STORAGE_CUSTOMIZE_PARTITION OPLUS_FEATURE_STORAGE_FDE OPLUS_FEATURE_STORAGE_AUTOMATIC_TIMING OPLUS_BUG_UPDATABILITY OPLUS_FEATURE_RECOVERY_BUILD OPLUS_FEATURE_RECOVERY_BOOT OPLUS_FEATURE_RECOVERY_UI OPLUS_FEATURE_RECOVERY_RESET OPLUS_FEATURE_OTAPACKAGE_BUILD OPLUS_FEATURE_OTAPACKAGE_UPDATER OPLUS_FEATURE_OTAPACKAGE_SCRIPT OPLUS_FEATURE_DYNAMIC_KEYMAP OPLUS_FEATURE_DROP_STATUSBAR OPLUS_FEATURE_GESTURE_SCREENSHOT OPLUS_FEATURE_BOOTANIMATION OPLUS_FEATURE_QUICKBOOT OPLUS_FEATURE_LOGKIT OPLUS_FEATURE_LFEH OPLUS_FEATURE_CRITICAL_LOG OPLUS_ARCH_CUSTOM_PARTITION OPLUS_FEATURE_ENGINEERING_FILEACCESS OPLUS_FEATURE_DEXOPT_STRATEGY OPLUS_FEATURE_BATTERY_MANAGER OPLUS_FEATURE_OTA_DDR5_COMPATIBLE OPLUS_FEATURE_RECOVERY_BOOT_REASON OPLUS_FEATURE_PMIC_MONITOR OPLUS_FEATURE_SHUTDOWN_DETECT OPLUS_FEATURE_FACERECOGNITION OPLUS_FEATURE_BINDER_MONITOR OPLUS_FEATURE_THEIA OPLUS_FEATURE_OPPODL OPLUS_FEATURE_MULTI_KSWAPD OPLUS_FEATURE_FG_IO_OPT OPLUS_FEATURE_ZRAM_OPT OPLUS_FEATURE_PROCESS_RECLAIM OPLUS_FEATURE_QCOM_PMICWD OPLUS_FEATURE_TP_BASIC OPLUS_FEATURE_TP_BSPFWUPDATE OPLUS_FEATURE_FINGERPRINT OPLUS_FEATURE_FINGERPRINTPAY OPLUS_FEATURE_CRYPTOENG OPLUS_FEATURE_STORAGE_TOOL OPLUS_FEATURE_UFS_SHOW_LATENCY OPLUS_FEATURE_PADL_STATISTICS OPLUS_FEATURE_UFSPLUS OPLUS_FEATURE_EXFAT_SUPPORT OPLUS_FEATURE_SDCARDFS_SUPPORT OPLUS_FEATURE_ELEVATOR_DETECT OPLUS_FEATURE_ACTIVITY_RECOGNITION OPLUS_FEATURE_SENSOR_ALGORITHM OPLUS_FEATURE_SENSOR_SMEM OPLUS_FEATURE_ONEPLUSSENSOR OPLUS_FEATURE_FTM OPLUS_FEATURE_MULTI_FREEAREA OPLUS_FEATURE_VIRTUAL_RESERVE_MEMORY OPLUS_FEATURE_CAMERA_COMMON OPLUS_FEATURE_VIRTUAL_CAMERA OPLUS_FEATURE_PHYSICAL_CAMERA_PROVIDER_VERSION OPLUS_FEATURE_WIFI_DATASTALL OPLUS_FEATURE_WIFI_HOSTAPDHIDL OPLUS_FEATURE_WIFI_BDF OPLUS_FEATURE_WIFI_FTM OPLUS_FEATURE_WIFI_SAR OPLUS_FEATURE_SWITCH_CHECK OPLUS_FEATURE_WIFI_DIAG OPLUS_FEATURE_WIFI_DCS_SWITCH OPLUS_FEATURE_WIFI_QPOWER OPLUS_FEATURE_WIFI_MTUDETECT OPLUS_FEATURE_WIFI_SLA OPLUS_FEATURE_IPV6_OPTIMIZE OPLUS_FEATURE_WIFI_GBK OPLUS_FEATURE_WIFI_DUALSTA OPLUS_FEATURE_WIFI_ROUTERBOOST OPLUS_FEATURE_WIFI_OSHARE OPLUS_FEATURE_WIFI_LIMMITBGSPEED OPLUS_FEATURE_WIFI_SUPPLICANTHIDL OPLUS_FEATURE_BT_INTEROPLIST OPLUS_FEATURE_BT_DCS OPLUS_FEATURE_BT_FW_OVERRIDE OPLUS_FEATURE_BT_FW_BTTESTMODE OPLUS_FEATURE_GPS_CONFIG_ADAPT OPLUS_FEATURE_BT_FW_SSRDUMP OPLUS_FEATURE_FORCE_NETWORK_SEARCH OPLUS_FEATURE_NW_RECOVERY_WHEN_SCREEN_ON OPLUS_FEATURE_GAMEECO_COOLEFFECT OPLUS_FEATURE_ELEV_MODE OPLUS_FEATURE_NONDDS_OPTIMIZE OPLUS_FEAUTRE_PIN_RETRY OPLUS_FEAUTRE_OAPP_NETCONTROL OPLUS_FEATURE_LOG_LISTEN OPLUS_FEATURE_NEW_FREQ_HOP_INTERFACE OPLUS_FEATURE_PLMN_SELECTION OPLUS_FEATURE_REGIONMARK_INDICATION OPLUS_FEATURE_SIP_RP_ERROR_RETRY OPLUS_FEATURE_DNS_HOOK OPLUS_FEATURE_STATS_CALC OPLUS_FEATURE_FONT_FLIP OPLUS_FEATURE_DARKMODE OPLUS_FEATURE_LINKERCONFIG_CUSTOM OPLUS_FEATURE_HANS_FREEZE OPLUS_FEATURE_RESOURCES_COMPILE OPLUS_FEATURE_MOTION_INTERCEPT OPLUS_FEATURE_ATLAS OPLUS_FEATURE_AUDIOSERVER_DEBUG OPLUS_FEATURE_VIP_RECORD OPLUS_FEATURE_VOIP_ENHANCE OPLUS_FEATURE_KTV OPLUS_FEATURE_PLAYBACKCAPTURE OPLUS_FEATURE_GAME_MUTE OPLUS_FEATURE_VOICE_CHANGER OPLUS_FEATURE_VIBRING_SYNC OPLUS_FEATURE_SVA_TRNSPARENT OPLUS_FEATURE_INPUTCHANNEL_CHOICE OPLUS_FEATURE_AUDIOVOICE_SCENCE OPLUS_FEATURE_DOLBY OPLUS_FEATURE_AUDIOLL OPLUS_FEATURE_SURROUND_AUDIO OPLUS_FEATURE_SPK_PROTECTION OPLUS_FEATURE_OPERATOR_RINGTONE OPLUS_FEATURE_CAMERASOUND_FORCE OPLUS_FEATURE_FORBID_RECORD OPLUS_VDF_LEFT_SPEAKER_MUTE OPLUS_FEATURE_SPEAKER_MUTE OPLUS_FEATURE_ADJUST_VOLUME OPLUS_FEATURE_GAME_AUDIO_EFFECTS OPLUS_FEATURE_DUALHEADPHONE OPLUS_FEATURE_SMARTPA_PM OPLUS_FEATURE_IMPEDANCE_MATCH OPLUS_FEATURE_MIC_VA_MIC_CLK_SWITCH OPLUS_FEATURE_SWITCH_MIC OPLUS_FEATURE_QVA_MIC_SUPPORT OPLUS_FEATURE_CAR_VOICE_DL_MUTE OPLUS_FEATURE_DOLBY_ATMOS_GAME OPLUS_FEATURE_EAR_PROTECTION OPLUS_FEATURE_MULTISCENE_RECORD OPLUS_FEATURE_SSR OPLUS_FEATURE_MI2S_SLAVE OPLUS_FEATURE_AUDIO_FTM OPLUS_FEATURE_ADSP_RECOVERY OPLUS_FEATURE_AP_LVIMFS OPLUS_FEATURE_AEC OPLUS_FEATURE_AUDIODETECT OPLUS_FEATURE_AUDIOHAL_SCHED OPLUS_FEATURE_AUDIO_BINAURAL_RECORD OPLUS_FEATURE_DRM_WIDEVINEL3 OPLUS_FEATURE_OPLUS_AVENHANCEMENT OPLUS_FEATURE_DRM_OMA OPLUS_FEATURE_APE_DECODER OPLUS_FEATURE_VIDEO_TITLE OPLUS_FEATURE_AUDIOBITRATE OPLUS_FEATURE_MP3_RECORDER OPLUS_FEATURE_FFMPEG_INTEGRATION OPLUS_FEATURE_QP_OPTIMIZATION OPLUS_FEATURE_VIDEO_MIRROR OPLUS_FEATURE_HQV_SUPPORT_APP OPLUS_FEATURE_ZEN_MODE OPLUS_FEATRUE_HEIF_OPTIMIZE OPLUS_FEATURE_IMAGE_PROCESSING OPLUS_FEATURE_HEIF_CONVERTER OPLUS_FEATURE_10BIT_HEIF OPLUS_FEATURE_OITHMB_INTEGRATION OPLUS_FEATURE_ROI_ENCODE_QCOM OPLUS_FEATURE_OSIE_SR OPLUS_FEATURE_HQV OPLUS_FEATURE_ONSCREENFINGERPRINT OPLUS_FEATURE_AUTOBRIGHTNESS OPLUS_FEATURE_DYNAMIC_DSI OPLUS_FEATURE_VPP OPLUS_FEATURE_AI_FRAMERATE OPLUS_FEATURE_RESOLUTIONSWITCH OPLUS_FEATURE_FORBIDDEN_RECORD OPLUS_FEATURE_SMOOTH_BRIGHTNESS OPLUS_FEATURE_PXLW_IRIS5 OPLUS_FEATURE_AOD OPLUS_FEATURE_DC OPLUS_FEATURE_ADFR_KERNEL OPLUS_FEATURE_ADFR OPLUS_FEATURE_GAME_OIFACE OPLUS_FEATURE_ADPF OPLUS_FEATURE_HAPTIC_VIBRATE OPLUS_FEATURE_GAME_JOYSTICK OPLUS_FEATURE_TV_VOIP OPLUS_FEATURE_VC_MUTE OPLUS_FEATURE_AUDIO_OCAR OPLUS_FEATURE_VIRTUAL_AUDIO TARGET_PRODUCT=kona diff --git a/techpack/audio/asoc/codecs/tfa98xx-v6/tfa98xx_v6.c b/techpack/audio/asoc/codecs/tfa98xx-v6/tfa98xx_v6.c index cfba15eb7d69..988242ecf138 100644 --- a/techpack/audio/asoc/codecs/tfa98xx-v6/tfa98xx_v6.c +++ b/techpack/audio/asoc/codecs/tfa98xx-v6/tfa98xx_v6.c @@ -63,10 +63,6 @@ extern bool g_speaker_resistance_fail; #include #endif /* OPLUS_ARCH_EXTENDS */ -#ifdef OPLUS_FEATURE_MM_FEEDBACK -#include -#endif - /* Change volume selection behavior: * Uncomment following line to generate a profile change when updating * a volume control (also changes to the profile of the modified volume @@ -2723,239 +2719,6 @@ static int tfa98xx_get_stereo_ctl(struct snd_kcontrol *kcontrol, #endif /* OPLUS_ARCH_EXTENDS */ -#ifdef OPLUS_FEATURE_MM_FEEDBACK -#define OPLUS_AUDIO_EVENTID_SMARTPA_ERR 10041 -#define OPLUS_AUDIO_EVENTID_SPK_ERR 10042 -#define ERROR_INFO_MAX_LEN 32 - -#define REG_BITS 16 -#define TFA9874_STATUS_NORMAL_VALUE ((0x850F<tfa, 0x10, ®10); - if (Tfa98xx_Error_Ok == err) { - err = tfa98xx_read_register16_v6(tfa98xx->tfa, 0x13, ®13); - } - pr_info("%s: read SPK%d status regs ret=%d, reg[0x10]=0x%x, reg[0x13]=0x%x", __func__, num, err, reg10, reg13); - - if (Tfa98xx_Error_Ok == err) { - reg_val = (reg13 << REG_BITS) + reg10; - flag = 0; - if ((g_pa_type == PA_TFA9874) && - ((TFA9874_STATUS_NORMAL_VALUE&TFA9874_STATUS_CHECK_MASK) != (reg_val&TFA9874_STATUS_CHECK_MASK))) { - offset = strlen(info); - scnprintf(info + offset, sizeof(info) - offset - 1, - "TFA9874 SPK%d:reg[0x10]=0x%x,reg[0x13]=0x%x,", num, reg10, reg13); - for (i = 0; i < ARRAY_SIZE(check_err_tfa9874); i++) { - if (check_err_tfa9874[i].err_val == (1 & (reg_val>>check_err_tfa9874[i].bit))) { - offset = strlen(info); - scnprintf(info + offset, sizeof(info) - offset - 1, "%s,", check_err_tfa9874[i].info); - } - } - flag = 1; - } else if ((g_pa_type == PA_TFA9873) && - ((TFA9873_STATUS_NORMAL_VALUE&TFA9873_STATUS_CHECK_MASK) != (reg_val&TFA9873_STATUS_CHECK_MASK))) { - offset = strlen(info); - scnprintf(info + offset, sizeof(info) - offset - 1, - "TFA9873 SPK%d:reg[0x10]=0x%x,reg[0x13]=0x%x,", num, reg10, reg13); - for (i = 0; i < ARRAY_SIZE(check_err_tfa9873); i++) { - if (check_err_tfa9873[i].err_val == (1 & (reg_val>>check_err_tfa9873[i].bit))) { - offset = strlen(info); - scnprintf(info + offset, sizeof(info) - offset - 1, "%s,", check_err_tfa9873[i].info); - } - } - flag = 1; - } - - /* read other registers */ - if (flag == 1) { - offset = strlen(info); - scnprintf(info + offset, sizeof(info) - offset - 1, "("); - for (i = 0; i < sizeof(fb_regs); i++) { - err = tfa98xx_read_register16_v6(tfa98xx->tfa, fb_regs[i], ®_tmp); - if (Tfa98xx_Error_Ok == err) { - offset = strlen(info); - scnprintf(info + offset, sizeof(info) - offset - 1, "%x,", reg_tmp); - } else { - break; - } - } - offset = strlen(info); - scnprintf(info + offset, sizeof(info) - offset - 1, "),"); - } - } else { - offset = strlen(info); - scnprintf(info + offset, sizeof(info) - offset - 1, "%s SPK%d: failed to read regs 0x10 and 0x13, error=%d,", \ - (g_pa_type == PA_TFA9873) ? "TFA9873" : "TFA9874", num, err);\ - last_fb = ktime_get(); - } - } - mutex_unlock(&tfa98xx_mutex); - - /* feedback the check error */ - offset = strlen(info); - if ((offset > 0) && (offset < MM_KEVENT_MAX_PAYLOAD_SIZE)) { - fd_buf[offset] = '\0'; - scnprintf(fd_buf, sizeof(fd_buf) - 1, "payload@@%s", info); - mm_fb_audio_kevent_named(OPLUS_AUDIO_EVENTID_SMARTPA_ERR, - MM_FB_KEY_RATELIMIT_5MIN, fd_buf); - pr_err("%s: fd_buf=%s\n", __func__, fd_buf); - } - - return 1; -} - -static int tfa98xx_set_check_feedback(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) -{ - int need_chk = ucontrol->value.integer.value[0]; - - pr_info("%s: need_chk = %d\n", __func__, need_chk); - g_chk_err = need_chk; - - return 1; -} - -static int tfa98xx_get_check_feedback(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) -{ - ucontrol->value.integer.value[0] = g_chk_err; - pr_info("%s: g_chk_err = %d\n", __func__, g_chk_err); - - return 0; -} - -static const struct snd_kcontrol_new tfa98xx_check_feedback[] = { - SOC_ENUM_EXT("TFA_CHECK_FEEDBACK", tfa98xx_check_feedback_enum, - tfa98xx_get_check_feedback, tfa98xx_set_check_feedback), -}; - -static int tfa98xx_check_speaker_status(struct tfa98xx *tfa98xx) -{ - char fd_buf[MM_KEVENT_MAX_PAYLOAD_SIZE] = {0}; - enum Tfa98xx_Error err = Tfa98xx_Error_Ok; - char buffer[6] = {0}; - - if (!g_chk_err) { - return 0; - } - if ((g_pa_type != PA_TFA9874) && (g_pa_type != PA_TFA9873)) { - return 0; - } - if ((last_fb !=0) && ktime_before(ktime_get(), ktime_add_ms(last_fb, MM_FB_KEY_RATELIMIT_5MIN))) { - return 0; - } - - mutex_lock(&tfa98xx->dsp_lock); - //Get the GetStatusChange results - err = tfa_dsp_cmd_id_write_read_v6(tfa98xx->tfa, MODULE_FRAMEWORK, - FW_PAR_ID_GET_STATUS_CHANGE, 6, (unsigned char *)buffer); - mutex_unlock(&tfa98xx->dsp_lock); - - pr_info("%s: ret=%d, get value=%d\n", __func__, err, buffer[2]); - - if (err == Tfa98xx_Error_Ok) { - if (buffer[2] & 0x6) { - scnprintf(fd_buf, sizeof(fd_buf) - 1, "payload@@"); - if (buffer[2] & 0x2) { - pr_err("%s: ##ERROR## Primary SPK hole blocked or damaged event detected 0x%x\n", - __func__, buffer[2]); - scnprintf(fd_buf + strlen(fd_buf), - sizeof(fd_buf) - strlen(fd_buf), " SPK1 damaged or hole blocked"); - } - if ((tfa98xx_device_count == 2) && (buffer[2] & 0x4)) { - pr_err("%s: ##ERROR## Second SPK hole blocked or SPK damaged event detected 0x%x\n", - __func__, buffer[2]); - scnprintf(fd_buf + strlen(fd_buf), - sizeof(fd_buf) - strlen(fd_buf), " SPK2 damaged or hole blocked"); - } - mm_fb_audio_kevent_named(OPLUS_AUDIO_EVENTID_SPK_ERR, - MM_FB_KEY_RATELIMIT_5MIN, fd_buf); - pr_err("%s: fd_buf=%s\n", __func__, fd_buf); - } - } else { - scnprintf(fd_buf, sizeof(fd_buf) - 1, "payload@@spk protection algorithm error, ret=%d,", err); - mm_fb_audio_kevent_named(OPLUS_AUDIO_EVENTID_SMARTPA_ERR, - MM_FB_KEY_RATELIMIT_5MIN, fd_buf); - last_fb = ktime_get(); - pr_err("%s: tfa_dsp_cmd_id_write_read_v6 err = %d\n", __func__, err); - } - - return err; -} -#endif /*OPLUS_FEATURE_MM_FEEDBACK*/ - static int tfa98xx_create_controls(struct tfa98xx *tfa98xx) { int prof, nprof, mix_index = 0; @@ -4511,15 +4274,6 @@ static int tfa98xx_mute(struct snd_soc_dai *dai, int mute, int stream) /* stop DSP only when both playback and capture streams * are deactivated */ - - #ifdef OPLUS_FEATURE_MM_FEEDBACK - if (g_chk_err) { - tfa98xx_check_status_reg(); - tfa98xx_check_speaker_status(tfa98xx); - g_chk_err = false; - } - #endif /* OPLUS_FEATURE_MM_FEEDBACK */ - if (stream == SNDRV_PCM_STREAM_PLAYBACK) tfa98xx->pstream = 0; else @@ -4697,10 +4451,6 @@ static int tfa98xx_probe(struct snd_soc_component *component) tfadsp_volume_controls, ARRAY_SIZE(tfadsp_volume_controls)); #endif /* OPLUS_FEATURE_FADE_IN */ - #ifdef OPLUS_FEATURE_MM_FEEDBACK - snd_soc_add_component_controls(tfa98xx->component, - tfa98xx_check_feedback, ARRAY_SIZE(tfa98xx_check_feedback)); - #endif #ifdef OPLUS_FEATURE_SMARTPA_PM add_smartpa_pm_controls(tfa98xx->component); #endif /* OPLUS_FEATURE_SMARTPA_PM */ @@ -5083,18 +4833,12 @@ static int tfa98xx_i2c_probe(struct i2c_client *i2c, tfa98xx->flags |= TFA98XX_FLAG_CALIBRATION_CTL; tfa98xx->flags |= TFA98XX_FLAG_TDM_DEVICE; tfa98xx->flags |= TFA98XX_FLAG_ADAPT_NOISE_MODE; /***MCH_TO_TEST***/ -#ifdef OPLUS_FEATURE_MM_FEEDBACK - g_pa_type = PA_TFA9873; -#endif break; case 0x74: /* tfa9874 */ pr_info("TFA9874 detected\n"); tfa98xx->flags |= TFA98XX_FLAG_MULTI_MIC_INPUTS; tfa98xx->flags |= TFA98XX_FLAG_CALIBRATION_CTL; tfa98xx->flags |= TFA98XX_FLAG_TDM_DEVICE; -#ifdef OPLUS_FEATURE_MM_FEEDBACK - g_pa_type = PA_TFA9874; -#endif break; case 0x88: /* tfa9888 */ pr_info("TFA9888 detected\n"); diff --git a/techpack/audio/asoc/codecs/wcd-mbhc-adc.c b/techpack/audio/asoc/codecs/wcd-mbhc-adc.c index 2e0837182a44..071c31ab4eaa 100644 --- a/techpack/audio/asoc/codecs/wcd-mbhc-adc.c +++ b/techpack/audio/asoc/codecs/wcd-mbhc-adc.c @@ -22,9 +22,6 @@ #include "wcd-mbhc-adc.h" #include #include -#ifdef OPLUS_FEATURE_MM_FEEDBACK -#include -#endif #define WCD_MBHC_ADC_HS_THRESHOLD_MV 1700 #define WCD_MBHC_ADC_HPH_THRESHOLD_MV 75 @@ -819,10 +816,6 @@ static void wcd_correct_swch_plug(struct work_struct *work) enum wcd_mbhc_plug_type plug_type_second = MBHC_PLUG_TYPE_INVALID; int output_mv_second = 0; #endif /* OPLUS_ARCH_EXTENDS */ - #ifdef OPLUS_FEATURE_MM_FEEDBACK - int retry = 0; - char buf[MM_KEVENT_MAX_PAYLOAD_SIZE] = {0}; - #endif #ifdef OPLUS_ARCH_EXTENDS #undef pr_debug @@ -993,10 +986,6 @@ correct_plug_type: is_pa_on = mbhc->mbhc_cb->hph_pa_on_status( mbhc->component); - #ifdef OPLUS_FEATURE_MM_FEEDBACK - retry++; - #endif /* OPLUS_FEATURE_MM_FEEDBACK */ - #ifdef OPLUS_ARCH_EXTENDS if (mbhc->need_cross_conn) { #endif /* OPLUS_ARCH_EXTENDS */ @@ -1277,14 +1266,6 @@ exit: mbhc->mbhc_cb->lock_sleep(mbhc, false); - #ifdef OPLUS_FEATURE_MM_FEEDBACK - if ((plug_type != MBHC_PLUG_TYPE_HEADSET) && - (plug_type != MBHC_PLUG_TYPE_HEADPHONE)) { - scnprintf(buf, sizeof(buf) - 1, "func@@%s$$plug_type@@%d$$output_mv@@%d$$retry@@%d", - __func__, plug_type, output_mv, retry); - upload_mm_fb_kevent_to_atlas_limit(OPLUS_AUDIO_EVENTID_HEADSET_DET, buf, MM_FB_KEY_RATELIMIT_1MIN); - } - #endif /* OPLUS_FEATURE_MM_FEEDBACK */ pr_debug("%s: leave\n", __func__); } diff --git a/techpack/display/msm/dsi/dsi_ctrl.c b/techpack/display/msm/dsi/dsi_ctrl.c index bce118138346..36f163b4ed01 100644 --- a/techpack/display/msm/dsi/dsi_ctrl.c +++ b/techpack/display/msm/dsi/dsi_ctrl.c @@ -22,9 +22,6 @@ #include "dsi_panel.h" #include "sde_dbg.h" -#ifdef OPLUS_BUG_STABILITY -#include -#endif /* OPLUS_BUG_STABILITY */ #if defined(OPLUS_FEATURE_PXLW_IRIS5) #include "iris/dsi_iris5_api.h" #endif @@ -53,7 +50,6 @@ do { \ DRM_DEV_ERROR(NULL, "[msm-dsi-error]: %s: "\ fmt, c ? c->name : "inv", ##__VA_ARGS__); \ - mm_fb_display_kevent_named(MM_FB_KEY_RATELIMIT_1H, fmt, ##__VA_ARGS__); \ } while(0) #endif /* OPLUS_BUG_STABILITY */ @@ -378,10 +374,7 @@ static void dsi_ctrl_dma_cmd_wait_for_done(struct work_struct *work) dsi_ctrl->irq_info.irq_stat_refcount[DSI_SINT_CMD_MODE_DMA_DONE]); dsi_ctrl_disable_status_interrupt(dsi_ctrl, DSI_SINT_CMD_MODE_DMA_DONE); - - mm_fb_display_kevent("DisplayDriverID@@405$$", MM_FB_KEY_RATELIMIT_NONE, "dma_tx irq trigger fixup irq status=%x", status); } - mm_fb_display_kevent("DisplayDriverID@@413$$", MM_FB_KEY_RATELIMIT_1H, "dma_tx irq trigger err irq status=%x", status); #endif } else { DSI_CTRL_ERR(dsi_ctrl, diff --git a/techpack/display/msm/dsi/dsi_ctrl_hw.h b/techpack/display/msm/dsi/dsi_ctrl_hw.h index e85413296eac..0f8ed1502528 100644 --- a/techpack/display/msm/dsi/dsi_ctrl_hw.h +++ b/techpack/display/msm/dsi/dsi_ctrl_hw.h @@ -22,12 +22,10 @@ #ifdef OPLUS_BUG_STABILITY #undef DSI_CTRL_HW_ERR -#include #define DSI_CTRL_HW_ERR(c, fmt, ...) \ do { \ DRM_DEV_ERROR(NULL, "[msm-dsi-error]: DSI_%d: "\ fmt, c ? c->index : -1, ##__VA_ARGS__); \ - mm_fb_display_kevent_named(MM_FB_KEY_RATELIMIT_1H, fmt, ##__VA_ARGS__); \ } while(0) #endif /* OPLUS_BUG_STABILITY */ diff --git a/techpack/display/msm/dsi/dsi_defs.h b/techpack/display/msm/dsi/dsi_defs.h index bbc684b0b74a..7483956c0d47 100644 --- a/techpack/display/msm/dsi/dsi_defs.h +++ b/techpack/display/msm/dsi/dsi_defs.h @@ -53,11 +53,9 @@ ##__VA_ARGS__) #ifdef OPLUS_BUG_STABILITY -#include #define DSI_MM_ERR(fmt, ...) \ do { \ DRM_DEV_ERROR(NULL, "[msm-dsi-error]: " fmt, ##__VA_ARGS__); \ - mm_fb_display_kevent_named(MM_FB_KEY_RATELIMIT_1H, fmt, ##__VA_ARGS__); \ } while(0) #endif /* OPLUS_BUG_STABILITY */ diff --git a/techpack/display/msm/dsi/dsi_display.c b/techpack/display/msm/dsi/dsi_display.c index cc8fc21a08d1..9eb9b36c7c94 100644 --- a/techpack/display/msm/dsi/dsi_display.c +++ b/techpack/display/msm/dsi/dsi_display.c @@ -34,7 +34,6 @@ #include "iris/dsi_iris5_api.h" #endif #ifdef OPLUS_BUG_STABILITY -#include #include #include #include "oplus_display_private_api.h" @@ -801,7 +800,6 @@ static bool dsi_display_validate_reg_read(struct dsi_panel *panel) for (i = 0; i < len; ++i) cnt += scnprintf(payload + cnt, sizeof(payload) - cnt, "[%02x] ", config->return_buf[i]); DRM_ERROR("ESD check failed: %s\n", payload); - mm_fb_display_kevent(payload, MM_FB_KEY_RATELIMIT_1H, "ESD check failed"); } #endif /*OPLUS_BUG_STABILITY*/ diff --git a/techpack/display/msm/dsi/dsi_phy_hw.h b/techpack/display/msm/dsi/dsi_phy_hw.h index 8400a574f016..10ea5f7e313a 100644 --- a/techpack/display/msm/dsi/dsi_phy_hw.h +++ b/techpack/display/msm/dsi/dsi_phy_hw.h @@ -23,12 +23,10 @@ p ? p->index : -1, ##__VA_ARGS__) #ifdef OPLUS_BUG_STABILITY #undef DSI_PHY_ERR -#include #define DSI_PHY_ERR(p, fmt, ...) \ do { \ DRM_DEV_ERROR(NULL, "[msm-dsi-error]: DSI_%d: "\ fmt, p ? p->index : -1, ##__VA_ARGS__); \ - mm_fb_display_kevent_named(MM_FB_KEY_RATELIMIT_1H, fmt, ##__VA_ARGS__); \ } while(0) #endif /* OPLUS_BUG_STABILITY */ diff --git a/techpack/display/msm/msm_iommu.c b/techpack/display/msm/msm_iommu.c index 737c4542969c..de286a80dcbd 100644 --- a/techpack/display/msm/msm_iommu.c +++ b/techpack/display/msm/msm_iommu.c @@ -18,10 +18,6 @@ #include "msm_drv.h" #include "msm_mmu.h" -#ifdef OPLUS_BUG_STABILITY -#include -#endif /*OPLUS_BUG_STABILITY*/ - struct msm_iommu { struct msm_mmu base; struct iommu_domain *domain; @@ -36,10 +32,6 @@ static int msm_fault_handler(struct iommu_domain *domain, struct device *dev, return iommu->base.handler(iommu->base.arg, iova, flags); pr_warn_ratelimited("*** fault: iova=%08lx, flags=%d\n", iova, flags); -#ifdef OPLUS_BUG_STABILITY - mm_fb_display_kevent("DisplayDriverID@@404$$", MM_FB_KEY_RATELIMIT_1H, "SMMU msm fault iova=%08lx flags=%d", iova, flags); - #endif /*OPLUS_BUG_STABILITY*/ - return 0; } diff --git a/techpack/display/msm/sde/sde_encoder_phys_cmd.c b/techpack/display/msm/sde/sde_encoder_phys_cmd.c index bf61775bdedd..80fcb0e43460 100644 --- a/techpack/display/msm/sde/sde_encoder_phys_cmd.c +++ b/techpack/display/msm/sde/sde_encoder_phys_cmd.c @@ -33,7 +33,6 @@ #ifdef OPLUS_BUG_STABILITY #define PP_TIMEOUT_BAD_TRIALS 10 -#include extern int oplus_dimlayer_fingerprint_failcount; #endif @@ -616,9 +615,6 @@ static int _sde_encoder_phys_cmd_handle_ppdone_timeout( phys_enc->hw_pp->idx - PINGPONG_0, phys_enc->hw_ctl->idx - CTL_0, pending_kickoff_cnt); -#ifdef OPLUS_BUG_STABILITY - mm_fb_display_kevent("DisplayDriverID@@409$$", MM_FB_KEY_RATELIMIT_NONE, "ppdone timeout failed pp:%d kickoff timeout", phys_enc->hw_pp->idx - PINGPONG_0); -#endif /* OPLUS_BUG_STABILITY */ SDE_EVT32(DRMID(phys_enc->parent), SDE_EVTLOG_FATAL); mutex_lock(phys_enc->vblank_ctl_lock); sde_encoder_helper_unregister_irq(phys_enc, INTR_IDX_RDPTR); @@ -1773,9 +1769,6 @@ static int _sde_encoder_phys_cmd_handle_wr_ptr_timeout( SDE_ERROR_CMDENC(cmd_enc, "wr_ptr_irq wait failed, switch_te:%d\n", switch_te); SDE_EVT32(DRMID(phys_enc->parent), switch_te, SDE_EVTLOG_ERROR); -#ifdef OPLUS_BUG_STABILITY - mm_fb_display_kevent("DisplayDriverID@@418$$", MM_FB_KEY_RATELIMIT_30MIN, "wr_ptr_irq timeout failed switch_te:%d", switch_te); -#endif if (sde_encoder_phys_cmd_is_master(phys_enc) && atomic_add_unless( diff --git a/techpack/display/msm/sde/sde_kms.h b/techpack/display/msm/sde/sde_kms.h index 3efc3fd18edc..eae7f6144cd7 100644 --- a/techpack/display/msm/sde/sde_kms.h +++ b/techpack/display/msm/sde/sde_kms.h @@ -82,11 +82,9 @@ #define SDE_ERROR(fmt, ...) pr_err("[sde error]" fmt, ##__VA_ARGS__) #ifdef OPLUS_BUG_STABILITY -#include #define SDE_MM_ERROR(fmt, ...) \ do { \ pr_err("[sde error]" fmt, ##__VA_ARGS__); \ - mm_fb_display_kevent_named(MM_FB_KEY_RATELIMIT_1H, fmt, ##__VA_ARGS__); \ } while(0) #endif /* OPLUS_BUG_STABILITY */