Commit c969f245 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull backlight updates from Lee Jones:
 "New Device Support:
   - Add support for PMI8994 to Qualcom WLED
   - Add support for KTD259 to Kinetic KTD253

  Fix-ups:
   - Device Tree related fix-ups; kinetic,ktd253
   - Use proper sequence during sync_toggle; qcom-wled
   - Fix Wmisleading-indentation warnings; jornada720_bl

  Bug Fixes:
   - Fix sync toggle on WLED4; qcom-wled
   - Fix FSC update on WLED5; qcom-wled"

* tag 'backlight-next-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight:
  backlight: journada720: Fix Wmisleading-indentation warning
  backlight: qcom-wled: Correct the sync_toggle sequence
  backlight: qcom-wled: Fix FSC update issue for WLED5
  dt-bindings: backlight: Add Kinetic KTD259 bindings
  backlight: ktd253: Support KTD259
  backlight: qcom-wled: Use sink_addr for sync toggle
  dt-bindings: backlight: qcom-wled: Add PMI8994 compatible
parents 71a5cc28 04758386
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -4,13 +4,13 @@
$id: http://devicetree.org/schemas/leds/backlight/kinetic,ktd253.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Kinetic Technologies KTD253 one-wire backlight
title: Kinetic Technologies KTD253 and KTD259 one-wire backlight

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

description: |
  The Kinetic Technologies KTD253 is a white LED backlight that is
  The Kinetic Technologies KTD253 and KTD259 are white LED backlights
  controlled by a single GPIO line. If you just turn on the backlight
  it goes to maximum backlight then you can set the level of backlight
  using pulses on the enable wire. This is sometimes referred to as
@@ -21,7 +21,10 @@ allOf:

properties:
  compatible:
    const: kinetic,ktd253
    items:
      - enum:
          - kinetic,ktd253
          - kinetic,ktd259

  enable-gpios:
    description: GPIO to use to enable/disable and dim the backlight.
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ properties:
  compatible:
    enum:
      - qcom,pm8941-wled
      - qcom,pmi8994-wled
      - qcom,pmi8998-wled
      - qcom,pm660l-wled
      - qcom,pm8150l-wled
+1 −0
Original line number Diff line number Diff line
@@ -173,6 +173,7 @@ static int ktd253_backlight_probe(struct platform_device *pdev)

static const struct of_device_id ktd253_backlight_of_match[] = {
	{ .compatible = "kinetic,ktd253" },
	{ .compatible = "kinetic,ktd259" },
	{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, ktd253_backlight_of_match);
+27 −14
Original line number Diff line number Diff line
@@ -336,34 +336,34 @@ static int wled3_sync_toggle(struct wled *wled)
	unsigned int mask = GENMASK(wled->max_string_count - 1, 0);

	rc = regmap_update_bits(wled->regmap,
				wled->ctrl_addr + WLED3_SINK_REG_SYNC,
				mask, mask);
				wled->sink_addr + WLED3_SINK_REG_SYNC,
				mask, WLED3_SINK_REG_SYNC_CLEAR);
	if (rc < 0)
		return rc;

	rc = regmap_update_bits(wled->regmap,
				wled->ctrl_addr + WLED3_SINK_REG_SYNC,
				mask, WLED3_SINK_REG_SYNC_CLEAR);
				wled->sink_addr + WLED3_SINK_REG_SYNC,
				mask, mask);

	return rc;
}

static int wled5_sync_toggle(struct wled *wled)
static int wled5_mod_sync_toggle(struct wled *wled)
{
	int rc;
	u8 val;

	val = (wled->cfg.mod_sel == MOD_A) ? WLED5_SINK_REG_SYNC_MOD_A_BIT :
					     WLED5_SINK_REG_SYNC_MOD_B_BIT;
	rc = regmap_update_bits(wled->regmap,
				wled->sink_addr + WLED5_SINK_REG_MOD_SYNC_BIT,
				WLED5_SINK_REG_SYNC_MASK, val);
				WLED5_SINK_REG_SYNC_MASK, 0);
	if (rc < 0)
		return rc;

	val = (wled->cfg.mod_sel == MOD_A) ? WLED5_SINK_REG_SYNC_MOD_A_BIT :
					     WLED5_SINK_REG_SYNC_MOD_B_BIT;
	return regmap_update_bits(wled->regmap,
				  wled->sink_addr + WLED5_SINK_REG_MOD_SYNC_BIT,
				  WLED5_SINK_REG_SYNC_MASK, 0);
				  WLED5_SINK_REG_SYNC_MASK, val);
}

static int wled_ovp_fault_status(struct wled *wled, bool *fault_set)
@@ -445,11 +445,24 @@ static int wled_update_status(struct backlight_device *bl)
			goto unlock_mutex;
		}

		if (wled->version < 5) {
			rc = wled->wled_sync_toggle(wled);
			if (rc < 0) {
				dev_err(wled->dev, "wled sync failed rc:%d\n", rc);
				goto unlock_mutex;
			}
		} else {
			/*
			 * For WLED5 toggling the MOD_SYNC_BIT updates the
			 * brightness
			 */
			rc = wled5_mod_sync_toggle(wled);
			if (rc < 0) {
				dev_err(wled->dev, "wled mod sync failed rc:%d\n",
					rc);
				goto unlock_mutex;
			}
		}
	}

	if (!!brightness != !!wled->brightness) {
@@ -1459,7 +1472,7 @@ static int wled_configure(struct wled *wled)
		size = ARRAY_SIZE(wled5_opts);
		*cfg = wled5_config_defaults;
		wled->wled_set_brightness = wled5_set_brightness;
		wled->wled_sync_toggle = wled5_sync_toggle;
		wled->wled_sync_toggle = wled3_sync_toggle;
		wled->wled_cabc_config = wled5_cabc_config;
		wled->wled_ovp_delay = wled5_ovp_delay;
		wled->wled_auto_detection_required =
+22 −22

File changed.

Contains only whitespace changes.