Lines Matching +full:0 +full:xd000

17 #define LPG_SUBTYPE_REG		0x05
18 #define LPG_SUBTYPE_LPG 0x2
19 #define LPG_SUBTYPE_PWM 0xb
20 #define LPG_SUBTYPE_HI_RES_PWM 0xc
21 #define LPG_SUBTYPE_LPG_LITE 0x11
22 #define LPG_PATTERN_CONFIG_REG 0x40
23 #define LPG_SIZE_CLK_REG 0x41
24 #define PWM_CLK_SELECT_MASK GENMASK(1, 0)
25 #define PWM_CLK_SELECT_HI_RES_MASK GENMASK(2, 0)
27 #define LPG_PREDIV_CLK_REG 0x42
29 #define PWM_FREQ_EXP_MASK GENMASK(2, 0)
30 #define PWM_TYPE_CONFIG_REG 0x43
31 #define PWM_VALUE_REG 0x44
32 #define PWM_ENABLE_CONTROL_REG 0x46
33 #define PWM_SYNC_REG 0x47
34 #define LPG_RAMP_DURATION_REG 0x50
35 #define LPG_HI_PAUSE_REG 0x52
36 #define LPG_LO_PAUSE_REG 0x54
37 #define LPG_HI_IDX_REG 0x56
38 #define LPG_LO_IDX_REG 0x57
39 #define PWM_SEC_ACCESS_REG 0xd0
40 #define PWM_DTEST_REG(x) (0xe2 + (x) - 1)
42 #define TRI_LED_SRC_SEL 0x45
43 #define TRI_LED_EN_CTL 0x46
44 #define TRI_LED_ATC_CTL 0x47
46 #define LPG_LUT_REG(x) (0x40 + (x) * 2)
47 #define RAMP_CONTROL_REG 0xc8
106 * @dtest_line: DTEST line for output, or 0 if disabled
213 return 0; in triled_set()
227 0, len, 0); in lpg_lut_store()
231 for (i = 0; i < len; i++) { in lpg_lut_store()
243 return 0; in lpg_lut_store()
262 static const unsigned int lpg_clk_rates[] = {0, 1024, 32768, 19200000};
263 static const unsigned int lpg_clk_rates_hi_res[] = {0, 1024, 32768, 19200000, 76800000};
270 unsigned int i, pwm_resolution_count, best_pwm_resolution_sel = 0; in lpg_calc_freq()
272 unsigned int clk_sel, clk_len, best_clk = 0; in lpg_calc_freq()
273 unsigned int div, best_div = 0; in lpg_calc_freq()
274 unsigned int m, best_m = 0; in lpg_calc_freq()
279 u64 best_period = 0; in lpg_calc_freq()
292 * M = [0..7]. in lpg_calc_freq()
314 min_period = div64_u64((u64)NSEC_PER_SEC * (1 << pwm_resolution_arr[0]), in lpg_calc_freq()
334 for (i = 0; i < pwm_resolution_count; i++) { in lpg_calc_freq()
339 for (div = 0; div < ARRAY_SIZE(lpg_pre_divs); div++) { in lpg_calc_freq()
372 return 0; in lpg_calc_freq()
436 LPG_ENABLE_GLITCH_REMOVAL, 0); in lpg_enable_glitch()
463 #define LPG_PATTERN_CONFIG_PAUSE_LO BIT(0)
470 unsigned int conf = 0; in lpg_apply_lut_control()
531 #define LPG_SYNC_PWM BIT(0)
550 return 0; in lpg_parse_dtest()
551 } else if (count < 0) { in lpg_parse_dtest()
560 for (i = 0; i < lpg->data->num_channels; i++) { in lpg_parse_dtest()
574 return 0; in lpg_parse_dtest()
587 regmap_write(lpg->map, chan->base + PWM_SEC_ACCESS_REG, 0xa5); in lpg_apply_dtest()
608 unsigned int triled_enabled = 0; in lpg_brightness_set()
609 unsigned int triled_mask = 0; in lpg_brightness_set()
610 unsigned int lut_mask = 0; in lpg_brightness_set()
615 for (i = 0; i < led->num_channels; i++) { in lpg_brightness_set()
668 return 0; in lpg_brightness_single_set()
684 return 0; in lpg_brightness_mc_set()
692 unsigned int triled_mask = 0; in lpg_blink_set()
705 for (i = 0; i < led->num_channels; i++) { in lpg_blink_set()
722 chan = led->channels[0]; in lpg_blink_set()
727 return 0; in lpg_blink_set()
801 for (i = 0; i < len; i += 2) { in lpg_pattern_set()
804 if (led_pattern[i + 1].delta_t != 0) in lpg_pattern_set()
841 for (i = 0; i < len / 2; i++) { in lpg_pattern_set()
878 lo_pause = pattern[0].delta_t; in lpg_pattern_set()
883 if (ret < 0) in lpg_pattern_set()
886 for (i = 0; i < led->num_channels; i++) { in lpg_pattern_set()
916 if (ret < 0) in lpg_pattern_single_set()
921 return 0; in lpg_pattern_single_set()
933 if (ret < 0) in lpg_pattern_mc_set()
939 return 0; in lpg_pattern_mc_set()
950 chan = led->channels[0]; in lpg_pattern_clear()
953 for (i = 0; i < led->num_channels; i++) { in lpg_pattern_clear()
955 chan->pattern_lo_idx = 0; in lpg_pattern_clear()
956 chan->pattern_hi_idx = 0; in lpg_pattern_clear()
961 return 0; in lpg_pattern_clear()
989 return chan->in_use ? -EBUSY : 0; in lpg_pwm_request()
997 * - A disabled channel outputs a logical 0.
1004 int ret = 0; in lpg_pwm_apply()
1013 if (ret < 0) in lpg_pwm_apply()
1022 triled_set(lpg, chan->triled_mask, chan->enabled ? chan->triled_mask : 0); in lpg_pwm_apply()
1071 state->period = 0; in lpg_pwm_get_state()
1072 state->duty_cycle = 0; in lpg_pwm_get_state()
1085 return 0; in lpg_pwm_get_state()
1125 if (ret < 0 && ret != -EINVAL) in lpg_parse_channel()
1133 return 0; in lpg_parse_channel()
1145 u32 color = 0; in lpg_add_led()
1150 if (ret < 0 && ret != -EINVAL) in lpg_add_led()
1170 i = 0; in lpg_add_led()
1173 if (ret < 0) { in lpg_add_led()
1179 info[i].intensity = 0; in lpg_add_led()
1196 ret = lpg_parse_channel(lpg, np, &led->channels[0]); in lpg_add_led()
1197 if (ret < 0) in lpg_add_led()
1246 for (i = 0; i < data->num_channels; i++) { in lpg_init_channels()
1257 return 0; in lpg_init_channels()
1267 return 0; in lpg_init_triled()
1282 regmap_write(lpg->map, lpg->triled_base + TRI_LED_ATC_CTL, 0); in lpg_init_triled()
1289 regmap_write(lpg->map, lpg->triled_base + TRI_LED_EN_CTL, 0); in lpg_init_triled()
1291 return 0; in lpg_init_triled()
1299 return 0; in lpg_init_lut()
1308 return 0; in lpg_init_lut()
1334 if (ret < 0) in lpg_probe()
1338 if (ret < 0) in lpg_probe()
1342 if (ret < 0) in lpg_probe()
1346 if (ret < 0) in lpg_probe()
1357 for (i = 0; i < lpg->num_channels; i++) in lpg_probe()
1366 { .base = 0xbc00 },
1371 .lut_base = 0xb000,
1374 .triled_base = 0xd000,
1380 { .base = 0xb100 },
1381 { .base = 0xb200 },
1382 { .base = 0xb300 },
1383 { .base = 0xb400 },
1384 { .base = 0xb500, .triled_mask = BIT(5) },
1385 { .base = 0xb600, .triled_mask = BIT(6) },
1386 { .base = 0xb700, .triled_mask = BIT(7) },
1387 { .base = 0xb800 },
1392 .lut_base = 0xb000,
1397 { .base = 0xb100 },
1398 { .base = 0xb200 },
1399 { .base = 0xb300 },
1400 { .base = 0xb400 },
1401 { .base = 0xb500 },
1402 { .base = 0xb600 },
1408 .triled_base = 0xd000,
1412 { .base = 0xb300, .triled_mask = BIT(7) },
1413 { .base = 0xb400, .triled_mask = BIT(6) },
1414 { .base = 0xb500, .triled_mask = BIT(5) },
1415 { .base = 0xb600 },
1416 { .base = 0xb700 },
1421 .lut_base = 0xb000,
1424 .triled_base = 0xd000,
1430 { .base = 0xb100, .triled_mask = BIT(5) },
1431 { .base = 0xb200, .triled_mask = BIT(6) },
1432 { .base = 0xb300, .triled_mask = BIT(7) },
1433 { .base = 0xb400 },
1438 .lut_base = 0xb000,
1441 .triled_base = 0xd000,
1445 { .base = 0xb100 },
1446 { .base = 0xb200 },
1447 { .base = 0xb300, .triled_mask = BIT(5) },
1448 { .base = 0xb400, .triled_mask = BIT(6) },
1449 { .base = 0xb500, .triled_mask = BIT(7) },
1450 { .base = 0xb600 },
1455 .lut_base = 0xb000,
1458 .triled_base = 0xd000,
1462 { .base = 0xb100, .triled_mask = BIT(7) },
1463 { .base = 0xb200, .triled_mask = BIT(6) },
1468 .lut_base = 0xb000,
1471 .triled_base = 0xd000,
1475 { .base = 0xb100, .triled_mask = BIT(7) },
1476 { .base = 0xb200, .triled_mask = BIT(6) },
1477 { .base = 0xb300, .triled_mask = BIT(5) },
1478 { .base = 0xbc00 },
1479 { .base = 0xbd00 },
1485 .triled_base = 0xef00,
1489 { .base = 0xe800, .triled_mask = BIT(7) },
1490 { .base = 0xe900, .triled_mask = BIT(6) },
1491 { .base = 0xea00, .triled_mask = BIT(5) },
1492 { .base = 0xeb00 },
1499 { .base = 0xe800 },
1500 { .base = 0xe900 },