/* set wled to a level of brightness */ static int qpnp_wled_set_level(struct qpnp_wled *wled, int level) { int i; uint8_t reg; /* set brightness registers */ for (i = 0; i < wled->num_strings; i++) { reg = level & QPNP_WLED_BRIGHT_LSB_MASK; pm8x41_wled_reg_write(QPNP_WLED_BRIGHT_LSB_REG(wled->sink_base, wled->strings[i]), reg); reg = level >> QPNP_WLED_BRIGHT_MSB_SHIFT; reg = reg & QPNP_WLED_BRIGHT_MSB_MASK; pm8x41_wled_reg_write(QPNP_WLED_BRIGHT_MSB_REG(wled->sink_base, wled->strings[i]), reg); } /* sync */ reg = QPNP_WLED_SYNC; pm8x41_wled_reg_write(QPNP_WLED_SYNC_REG(wled->sink_base), reg); reg = QPNP_WLED_SYNC_RESET; pm8x41_wled_reg_write(QPNP_WLED_SYNC_REG(wled->sink_base), reg); return 0; }
/* set wled to a level of brightness */ static int qpnp_wled_set_level(struct qpnp_wled *wled, int level) { int i, rc; u8 reg; if (wled->calc_curr && wled->curr_scale != QPNP_WLED_CURR_SCALE_MAX) level = (level * wled->curr_scale) / QPNP_WLED_CURR_SCALE_MAX; if (wled->bl_scale_enabled && (wled->bl_scale > 0) && (wled->bl_scale < QPNP_WLED_BL_SCALE_MAX)) level = (level * wled->bl_scale) / QPNP_WLED_BL_SCALE_MAX; pr_debug("%s: brightness=%d level=%d\n", __func__, wled->cdev.brightness, level); /* set brightness registers */ for (i = 0; i < wled->num_strings; i++) { reg = level & QPNP_WLED_BRIGHT_LSB_MASK; rc = qpnp_wled_write_reg(wled, ®, QPNP_WLED_BRIGHT_LSB_REG(wled->sink_base, wled->strings[i])); if (rc < 0) return rc; reg = level >> QPNP_WLED_BRIGHT_MSB_SHIFT; reg = reg & QPNP_WLED_BRIGHT_MSB_MASK; rc = qpnp_wled_write_reg(wled, ®, QPNP_WLED_BRIGHT_MSB_REG(wled->sink_base, wled->strings[i])); if (rc < 0) return rc; } /* sync */ reg = QPNP_WLED_SYNC; rc = qpnp_wled_write_reg(wled, ®, QPNP_WLED_SYNC_REG(wled->sink_base)); if (rc < 0) return rc; reg = QPNP_WLED_SYNC_RESET; rc = qpnp_wled_write_reg(wled, ®, QPNP_WLED_SYNC_REG(wled->sink_base)); if (rc < 0) return rc; return 0; }
/* set wled to a level of brightness */ static int qpnp_wled_set_level(struct qpnp_wled *wled, int level) { int i, rc; u8 reg; /* set brightness registers */ for (i = 0; i < wled->num_strings; i++) { reg = level & QPNP_WLED_BRIGHT_LSB_MASK; rc = qpnp_wled_write_reg(wled, ®, QPNP_WLED_BRIGHT_LSB_REG(wled->sink_base, wled->strings[i])); if (rc < 0) return rc; reg = level >> QPNP_WLED_BRIGHT_MSB_SHIFT; reg = reg & QPNP_WLED_BRIGHT_MSB_MASK; rc = qpnp_wled_write_reg(wled, ®, QPNP_WLED_BRIGHT_MSB_REG(wled->sink_base, wled->strings[i])); if (rc < 0) return rc; } /* sync */ reg = QPNP_WLED_SYNC; rc = qpnp_wled_write_reg(wled, ®, QPNP_WLED_SYNC_REG(wled->sink_base)); if (rc < 0) return rc; reg = QPNP_WLED_SYNC_RESET; rc = qpnp_wled_write_reg(wled, ®, QPNP_WLED_SYNC_REG(wled->sink_base)); if (rc < 0) return rc; return 0; }