void kbd_backlight_init(void) { if (kbd_cfg.auto_on) kbd_bck_info.inhibit = 0; else kbd_bck_info.inhibit = KBD_INHIBIT_CFG; kbd_bck_info.toggle_lvl = kbd_cfg.auto_lvl; kbd_bck_info.inhibit_lvl = 0; kbd_bck_info.auto_on = 0; if (!has_kbd_backlight()) { kbd_bck_info.r_sens = 0; kbd_bck_info.l_sens = 0; kbd_bck_info.level = 0; return; } kbd_bck_info.level = kbd_backlight_get(); if (kbd_bck_info.level < 0) kbd_bck_info.level = 0; kbd_bck_info.max = KBD_BACKLIGHT_MAX; kbd_auto_init(); }
static void kbd_pmu_backlight_set(int val, int who) { int curval; int i; float fadeval; float step; struct timespec fade_step; int fd; if (kbd_bck_info.inhibit & ~KBD_INHIBIT_CFG) return; curval = kbd_backlight_get(); if (val == curval) return; if ((val < KBD_BACKLIGHT_OFF) || (val > KBD_BACKLIGHT_MAX)) return; fd = open(ADB_DEVICE, O_RDWR); if (fd < 0) { logmsg(LOG_ERR, "Could not open %s: %s", ADB_DEVICE, strerror(errno)); return; } if (who == KBD_AUTO) { fade_step.tv_sec = 0; fade_step.tv_nsec = (KBD_BACKLIGHT_FADE_LENGTH / KBD_BACKLIGHT_FADE_STEPS) * 1000000; fadeval = (float)curval; step = (float)(val - curval) / (float)KBD_BACKLIGHT_FADE_STEPS; for (i = 0; i < KBD_BACKLIGHT_FADE_STEPS; i++) { fadeval += step; adb_write_kbd_value(fd, (unsigned char)fadeval); logdebug("KBD backlight value faded to %d\n", (int)fadeval); nanosleep(&fade_step, NULL); } } adb_write_kbd_value(fd, val); close(fd); mbpdbus_send_kbd_backlight(val, kbd_bck_info.level, who); kbd_bck_info.level = val; }
void kbd_backlight_init(void) { int ret; if (kbd_cfg.auto_on) kbd_bck_info.inhibit = 0; else kbd_bck_info.inhibit = KBD_INHIBIT_CFG; kbd_bck_info.toggle_lvl = kbd_cfg.auto_lvl; kbd_bck_info.inhibit_lvl = 0; kbd_bck_info.auto_on = 0; if (!has_kbd_backlight() || (mops->type == MACHINE_POWERBOOK_58) || (mops->type == MACHINE_POWERBOOK_59)) { /* Nothing to probe for the PMU05 machines */ ret = 0; } else ret = kbd_probe_lmu(); if (!has_kbd_backlight() || (ret < 0)) { lmu_info.lmuaddr = 0; kbd_bck_info.r_sens = 0; kbd_bck_info.l_sens = 0; kbd_bck_info.level = 0; ambient_info.left = 0; ambient_info.right = 0; ambient_info.max = 0; return; } kbd_bck_info.level = kbd_backlight_get(); if (kbd_bck_info.level < 0) kbd_bck_info.level = 0; kbd_bck_info.max = KBD_BACKLIGHT_MAX; ambient_init(&kbd_bck_info.r_sens, &kbd_bck_info.l_sens); kbd_auto_init(); }
void kbd_backlight_step(int dir) { int val; int newval; if (kbd_bck_info.inhibit & ~KBD_INHIBIT_CFG) return; val = kbd_backlight_get(); if (val < 0) return; if (dir == STEP_UP) { newval = val + kbd_cfg.step; if (newval > KBD_BACKLIGHT_MAX) newval = KBD_BACKLIGHT_MAX; logdebug("KBD stepping +%d -> %d\n", kbd_cfg.step, newval); } else if (dir == STEP_DOWN) { newval = val - kbd_cfg.step; if (newval < KBD_BACKLIGHT_OFF) newval = KBD_BACKLIGHT_OFF; logdebug("KBD stepping -%d -> %d\n", kbd_cfg.step, newval); } else return; kbd_backlight_set(newval, KBD_USER); }
static void kbd_lmu_backlight_set(int val, int who) { int curval; int i; float fadeval; float step; struct timespec fade_step; int fd; int ret; if (kbd_bck_info.inhibit & ~KBD_INHIBIT_CFG) return; if (lmu_info.lmuaddr == 0) return; curval = kbd_backlight_get(); if (val == curval) return; if ((val < KBD_BACKLIGHT_OFF) || (val > KBD_BACKLIGHT_MAX)) return; fd = open(lmu_info.i2cdev, O_RDWR); if (fd < 0) { logmsg(LOG_ERR, "Could not open %s: %s", lmu_info.i2cdev, strerror(errno)); return; } ret = ioctl(fd, I2C_SLAVE, lmu_info.lmuaddr); if (ret < 0) { logmsg(LOG_ERR, "Could not ioctl the i2c bus: %s", strerror(errno)); close(fd); return; } if (who == KBD_AUTO) { fade_step.tv_sec = 0; fade_step.tv_nsec = (KBD_BACKLIGHT_FADE_LENGTH / KBD_BACKLIGHT_FADE_STEPS) * 1000000; fadeval = (float)curval; step = (float)(val - curval) / (float)KBD_BACKLIGHT_FADE_STEPS; for (i = 0; i < KBD_BACKLIGHT_FADE_STEPS; i++) { fadeval += step; lmu_write_kbd_value(fd, (unsigned char)fadeval); logdebug("KBD backlight value faded to %d\n", (int)fadeval); nanosleep(&fade_step, NULL); } } lmu_write_kbd_value(fd, val); close(fd); kbd_bck_info.level = val; }
static void kbd_backlight_set(int val, int who) { int curval; int i; float fadeval; float step; struct timespec fade_step; int fd; FILE *fp; if (kbd_bck_info.inhibit & ~KBD_INHIBIT_CFG) return; curval = kbd_backlight_get(); if (val == curval) return; if ((val < KBD_BACKLIGHT_OFF) || (val > KBD_BACKLIGHT_MAX)) return; if (who == KBD_AUTO) { fade_step.tv_sec = 0; fade_step.tv_nsec = (KBD_BACKLIGHT_FADE_LENGTH / KBD_BACKLIGHT_FADE_STEPS) * 1000000; fadeval = (float)curval; step = (float)(val - curval) / (float)KBD_BACKLIGHT_FADE_STEPS; for (i = 0; i < KBD_BACKLIGHT_FADE_STEPS; i++) { fadeval += step; fd = kbd_backlight_open(O_WRONLY); if (fd < 0) continue; fp = fdopen(fd, "a"); if (fp == NULL) { logmsg(LOG_WARNING, "Could not fdopen backlight fd: %s", strerror(errno)); close(fd); continue; } fprintf(fp, "%d", (int)fadeval); fclose(fp); logdebug("KBD backlight value faded to %d\n", (int)fadeval); nanosleep(&fade_step, NULL); } } fd = kbd_backlight_open(O_WRONLY); if (fd < 0) return; fp = fdopen(fd, "a"); if (fp == NULL) { logmsg(LOG_WARNING, "Could not fdopen backlight fd %d: %s", fd, strerror(errno)); close(fd); return; } fprintf(fp, "%d", val); fclose(fp); logdebug("KBD backlight value set to %d\n", val); kbd_bck_info.level = val; }