diff options
author | Jami Kettunen <jami.kettunen@protonmail.com> | 2020-12-03 03:27:13 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2021-08-28 10:17:14 +0200 |
commit | 2432f6b35d49b5f7f270a2408f26bbb658541a9d (patch) | |
tree | 9a9f1a2afd7e793be67a77d3a992a373dab21ba7 | |
parent | 333a4273eb26ffc47b29f3ea8ce3213d36803894 (diff) | |
download | ayatana-indicator-power-2432f6b35d49b5f7f270a2408f26bbb658541a9d.tar.gz ayatana-indicator-power-2432f6b35d49b5f7f270a2408f26bbb658541a9d.tar.bz2 ayatana-indicator-power-2432f6b35d49b5f7f270a2408f26bbb658541a9d.zip |
flashlight: Add support for PM8998 based SoCs
These sysfs and switch paths are used on Qualcomm SoCs which contain a
PM8998 PMIC block. This at the very least includes the Snapdragon 835
(MSM8998) and Snapdragon 845 (SDM845).
This was tested as working on the OnePlus 5 (MSM8998) and OnePlus 6
(SDM845) smartphones.
-rw-r--r-- | src/flashlight.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/flashlight.c b/src/flashlight.c index 8aba2b5..064bd31 100644 --- a/src/flashlight.c +++ b/src/flashlight.c @@ -29,19 +29,25 @@ #define SIMPLE_ENABLE "1" #define SIMPLE_DISABLE "0" -const size_t qcom_sysfs_size = 5; +const size_t qcom_sysfs_size = 7; const char* const qcom_sysfs[] = {"/sys/class/leds/torch-light/brightness", "/sys/class/leds/led:flash_torch/brightness", "/sys/class/leds/flashlight/brightness", "/sys/class/leds/torch-light0/brightness", - "/sys/class/leds/torch-light1/brightness"}; -const char* qcom_torch_enable = "/sys/class/leds/led:switch/brightness"; + "/sys/class/leds/torch-light1/brightness", + "/sys/class/leds/led:torch_0/brightness", + "/sys/class/leds/led:torch_1/brightness"}; +const size_t qcom_switch_size = 2; +const char* const qcom_switch[] = {"/sys/class/leds/led:switch/brightness", + "/sys/class/leds/led:switch_0/brightness"}; const size_t simple_sysfs_size = 2; const char* const simple_sysfs[] = {"/sys/class/flashlight_core/flashlight/flashlight_torch", "/sys/class/leds/white:flash/brightness"}; char* flash_sysfs_path = NULL; +char* qcom_switch_path = NULL; + enum TorchType torch_type = SIMPLE; gboolean activated = 0; @@ -52,6 +58,11 @@ set_sysfs_path() if (access(qcom_sysfs[i], F_OK ) != -1){ flash_sysfs_path = (char*)qcom_sysfs[i]; torch_type = QCOM; + /* Qualcomm torch; determine switch file (if one is needed) */ + for (size_t i = 0; i < qcom_switch_size; i++) { + if (access(qcom_switch[i], F_OK ) != -1) + qcom_switch_path = (char*)qcom_switch[i]; + } return 1; } } @@ -78,9 +89,9 @@ toggle_flashlight_action_qcom() fd1 = fopen(flash_sysfs_path, "w"); if (fd1 != NULL) { - needs_enable = access(qcom_torch_enable, F_OK ) != -1; + needs_enable = access(qcom_switch_path, F_OK ) != -1; if (needs_enable) - fd2 = fopen(qcom_torch_enable, "w"); + fd2 = fopen(qcom_switch_path, "w"); if (activated) if (needs_enable && fd2 != NULL) fprintf(fd2, "0"); |