aboutsummaryrefslogtreecommitdiff
path: root/src/flashlight.c
diff options
context:
space:
mode:
authorJami Kettunen <jami.kettunen@protonmail.com>2020-12-03 03:27:13 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-08-28 10:17:14 +0200
commit2432f6b35d49b5f7f270a2408f26bbb658541a9d (patch)
tree9a9f1a2afd7e793be67a77d3a992a373dab21ba7 /src/flashlight.c
parent333a4273eb26ffc47b29f3ea8ce3213d36803894 (diff)
downloadayatana-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.
Diffstat (limited to 'src/flashlight.c')
-rw-r--r--src/flashlight.c21
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");