From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 344FA3DB33D for ; Mon, 1 Jun 2026 15:19:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327147; cv=none; b=KNHJAnDSv6xbSAAh6kCtDH/NfDzA0tO4rwJuPpHi+wzz6bZ0WillkDRoYUf7g+H2YitZHzeGoCCihSQ2qf2puCBrYCDT40gNw4DJSs9kLFm33AbYKAjFFfxJMKZOq0ksoanmm9brUhMKyHci0XCvhM1Zn1WB7jPuXiP5zC3GDVc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327147; c=relaxed/simple; bh=YBMg+awBYgcG4Vce7y/BtlVgWy+Flfw+/fkKW/iu418=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jFY6ddeMYI1kokFD5PbE47U5zjjIHL0UiBKW+m6vrnyOFfcoNAe7dl7kvOLkebpSxa4FubNH0ED7qMbRMSUHA8i00jReot6tDfldnwfLaqMUNsPRpP9r/m4Y0FNKciY9m0CmsLMJy0o+6OuJyaWOyJ1ImwFD70b5GbUL2RpAxjs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dRnG2+A2; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dRnG2+A2" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-490388fd0dbso105637225e9.0 for ; Mon, 01 Jun 2026 08:19:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327139; x=1780931939; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/6+moLw/JKUO1sAY74jZ/JznO1AkiBJL3Ukd8DYl1yY=; b=dRnG2+A2s1DNK/4PadWvnSm+Y/8eUwO0CtLYOLZoaEhsAWcaRNEha9wUcgv7rDf+A8 GEi1RZlCJ/PdhpByJhuklsXUbMLWBUr9oJ15Z+vpnMiEbDXXPSzlxL13PVhk4QOHs/9b vQ9AjFToJzJc0iET7HiU1WXPE2OjpzqX7yxs/nWgrgN8oxYSB8fy8Ur0L7hfGbsCUdMi +N1tGzsJsXBIiziFR6q4mgRi2UEZUohV64UMe+O9KN5N5bSYJkkO00apPIXLKSeltZAS QjG2FUI8IMZG+DdK5Jz6P0lKjtgN64tcEpgA6GXUOHa/8ceU73lmDomebiJeDZotPkkE U4gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327139; x=1780931939; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/6+moLw/JKUO1sAY74jZ/JznO1AkiBJL3Ukd8DYl1yY=; b=r/74Tsu8rV2OOYPhU/j5tPmxBpOJkMb9a1DG9+HS33Lz7G4ZFJAXv8I5NQ0k4/WsmQ YO+kamY/mTRsMYVs/Cp8D7vBUD1/xbs2aGZebr5kQNWxQ2EAYUV4595+nuDxbh+JvvF/ dDhutWV0/mb1+Jm2IFtBbJShXaltgjAbvBpVQOy2qnUXs6yW1PehX0ZZYnFgNLIDAzii d6lWdd/kN/u+NfVGzC9iOzvwv2BOQzVLqM27E/+uPWgc9/JEq8irbfJCiBBgGsV4sqdZ sLW7ua3cgo7gEjSk2xV6JFECDe6tnsz/CM9wv898iRaV5/ZXIVuILn9mSI4kmoGodPLT D6Dg== X-Forwarded-Encrypted: i=1; AFNElJ860A6+VpCNML65gzxWjLPIwDdY+6TmpGqpYSsY3MWDIVJPYnCqxdwrZz07+4kiU34p/DQ88gU7qLMhiC8=@vger.kernel.org X-Gm-Message-State: AOJu0YylnN3rC9gsdk0akkyZgVwlN1isEI83GJfVR5RI4Nccz5HcWn+9 q32Yld0HbpiUYrDLgBHB0xo+5660aMF4/e8Ytwt0+Tjjy7CJDXwZw83C X-Gm-Gg: Acq92OHZdBhzblb1bwEZqtb0gQ5Wk8TwxEmZNCzoB1CNA52obJup5bfjFOuxNngnXjH 1nPLVxVP7u20ZU4c2ZkreeOmK9SW10v6mBrnZMSJU4hzdRYY6KJC1lscB0GZDxIfrPnUaz3WOMa Ciov00Bl2b2LPICrwTAQY2GBUumDPDv8/7D8IVhky4/SVwrwY+0cTm8IHPXOOoP14XYO43ueUno tiawmhqogwDkCo5A6kVZ66YiY5QYMeHSb8elL4IvCZfrnet5E/HmNDPuZzZJre0PgkfANlcio7Y mNn7bXX5lQRy1Q/plfwZbYD7m/Bvsci0Oio9a8pJGTSbNd9L3O46Y5RwBGCDDtH8dadYFDG15Rb XfNAjox5eTAk/A2vUkL3Plm2RFzdbO9yKNmtDFr47TIdT2M9RKesRvJt0bvhJMloCrzugp1ohis i9/ny6QOsxmv8XPuvirOz/NPw= X-Received: by 2002:a05:600c:c092:b0:489:1ba8:5bf0 with SMTP id 5b1f17b1804b1-490a2959113mr190065465e9.21.1780327139267; Mon, 01 Jun 2026 08:18:59 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.18.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:18:58 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 01/11] dt-bindings: leds: Document TI LM3533 LED controller Date: Mon, 1 Jun 2026 18:18:21 +0300 Message-ID: <20260601151831.76350-2-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Document the LM3533 - a complete power source for backlight, keypad and indicator LEDs in smartphone handsets. The high-voltage inductive boost converter provides the power for two series LED strings display backlight and keypad functions. Signed-off-by: Svyatoslav Ryhel Reviewed-by: Jonathan Cameron #for light sensor Reviewed-by: Daniel Thompson (RISCstar) #for backlight --- .../leds/backlight/ti,lm3533-backlight.yaml | 69 +++++++ .../bindings/leds/ti,lm3533-leds.yaml | 67 +++++++ .../devicetree/bindings/leds/ti,lm3533.yaml | 169 ++++++++++++++++++ 3 files changed, 305 insertions(+) create mode 100644 Documentation/devicetree/bindings/leds/backlight/ti,lm3= 533-backlight.yaml create mode 100644 Documentation/devicetree/bindings/leds/ti,lm3533-leds.y= aml create mode 100644 Documentation/devicetree/bindings/leds/ti,lm3533.yaml diff --git a/Documentation/devicetree/bindings/leds/backlight/ti,lm3533-bac= klight.yaml b/Documentation/devicetree/bindings/leds/backlight/ti,lm3533-ba= cklight.yaml new file mode 100644 index 000000000000..a25846e9b375 --- /dev/null +++ b/Documentation/devicetree/bindings/leds/backlight/ti,lm3533-backlight.= yaml @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/leds/backlight/ti,lm3533-backlight.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: TI LM3533 high voltage series LED strings + +description: + This is part of the TI LM3533 MFD device. It represents two high voltage= series + LED strings for display backlight controlled by the TI LM3533. + +maintainers: + - Svyatoslav Ryhel + +allOf: + - $ref: /schemas/leds/backlight/common.yaml# + +properties: + compatible: + const: ti,lm3533-backlight + + reg: + description: Control bank selection (0 =3D bank A, 1 =3D bank B). + maximum: 1 + + led-max-microamp: + description: maximum current in uA with a 800 uA step. + minimum: 5000 + maximum: 29800 + default: 5000 + + led-sources: + description: | + HVLED strings associated with this control bank: + 0 - HVLED1 + 1 - HVLED2 + minItems: 1 + maxItems: 2 + items: + maximum: 1 + + ti,pwm-config-mask: + $ref: /schemas/types.yaml#/definitions/uint32 + description: | + Control Bank PWM Configuration Register mask that allows to configure + PWM input in Zones 0-4 + BIT(0) - PWM Input is enabled + BIT(1) - PWM Input is enabled in Zone 0 + BIT(2) - PWM Input is enabled in Zone 1 + BIT(3) - PWM Input is enabled in Zone 2 + BIT(4) - PWM Input is enabled in Zone 3 + BIT(5) - PWM Input is enabled in Zone 4 + default: 0 + + ti,linear-mapping-mode: + description: + Enable linear mapping mode. If disabled, then it will use exponential + mapping mode in which the ramp up/down appears to have a more uniform + transition to the human eye. + type: boolean + +required: + - compatible + - reg + +unevaluatedProperties: false + +# see ti,lm3533.yaml for an example diff --git a/Documentation/devicetree/bindings/leds/ti,lm3533-leds.yaml b/D= ocumentation/devicetree/bindings/leds/ti,lm3533-leds.yaml new file mode 100644 index 000000000000..d8dbefef3323 --- /dev/null +++ b/Documentation/devicetree/bindings/leds/ti,lm3533-leds.yaml @@ -0,0 +1,67 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/leds/ti,lm3533-leds.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: TI LM3533 low voltage control banks for individual LEDs + +description: + This is part of the TI LM3533 MFD device. It represents four low voltage + control banks for individual LEDs provided by the TI LM3533. + +maintainers: + - Svyatoslav Ryhel + +allOf: + - $ref: /schemas/leds/common.yaml# + +properties: + compatible: + const: ti,lm3533-leds + + reg: + description: + Control bank selection (2 =3D bank C, 3 =3D bank D, 4 =3D bank E, 5 = =3D bank F). + minimum: 2 + maximum: 5 + + led-max-microamp: + description: maximum current in uA with a 800 uA step. + minimum: 5000 + maximum: 29800 + default: 5000 + + led-sources: + description: | + LVLED associated with this control bank. May be more than 1 source p= er bank. + 0 - LVLED1 + 1 - LVLED2 + 2 - LVLED3 + 3 - LVLED4 + 4 - LVLED5 + minItems: 1 + maxItems: 5 + items: + maximum: 4 + + ti,pwm-config-mask: + $ref: /schemas/types.yaml#/definitions/uint32 + description: | + Control Bank PWM Configuration Register mask that allows to configure + PWM input in Zones 0-4 + BIT(0) - PWM Input is enabled + BIT(1) - PWM Input is enabled in Zone 0 + BIT(2) - PWM Input is enabled in Zone 1 + BIT(3) - PWM Input is enabled in Zone 2 + BIT(4) - PWM Input is enabled in Zone 3 + BIT(5) - PWM Input is enabled in Zone 4 + default: 0 + +required: + - compatible + - reg + +unevaluatedProperties: false + +# see ti,lm3533.yaml for an example diff --git a/Documentation/devicetree/bindings/leds/ti,lm3533.yaml b/Docume= ntation/devicetree/bindings/leds/ti,lm3533.yaml new file mode 100644 index 000000000000..bdc05a9f3d66 --- /dev/null +++ b/Documentation/devicetree/bindings/leds/ti,lm3533.yaml @@ -0,0 +1,169 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/leds/ti,lm3533.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: TI LM3533 Complete Lighting Power Solution + +description: > + The LM3533 is a complete power source for backlight, keypad, and indicat= or LEDs + in smartphone handsets. The high-voltage inductive boost converter provi= des the + power for two high voltage series LED strings for display backlight and = four low + voltage control banks for individual LEDs. Additionally, LM3533 features= an + interface for an external light sensor. + + https://www.ti.com/product/LM3533 + +maintainers: + - Svyatoslav Ryhel + +properties: + compatible: + const: ti,lm3533 + + reg: + maxItems: 1 + + enable-gpios: + description: GPIO connected to the HWEN pin. + maxItems: 1 + + vin-supply: + description: Supply connected to the IN line (2.7 V to 5.5 V). + + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + ti,boost-ovp-microvolt: + description: boost OVP select (16V, 24V, 32V, 40V) + enum: [ 16000000, 24000000, 32000000, 40000000 ] + default: 16000000 + + ti,boost-freq-hz: + description: boost frequency select (500KHz or 1MHz) + enum: [ 500000, 1000000 ] + default: 500000 + + light-sensor: + type: object + additionalProperties: false + + properties: + compatible: + const: ti,lm3533-als + + interrupts: + maxItems: 1 + + ti,resistor-ohms: + description: + Internal configuration resistor value when light sensor is in + Analog Sensor mode and PWM mode is disabled. The expectation is + the input is a current from the external analog light sensor and + this is used to convert it to a voltage within the target range. + minimum: 1575 + maximum: 200000 + + ti,pwm-mode: + type: boolean + description: + Switch for mode in which light sensor interface is running. If + this property is set then the light sensor interface is running + in PWM mode, internal resistor value is set to high-impedance (0) + and ti,resistor-ohms property is ignored. + + required: + - compatible + + oneOf: + - required: + - ti,resistor-ohms + - required: + - ti,pwm-mode + +patternProperties: + "^backlight@[01]$": + $ref: /schemas/leds/backlight/ti,lm3533-backlight.yaml# + + "^led@[2-5]$": + $ref: /schemas/leds/ti,lm3533-leds.yaml# + +required: + - compatible + - reg + - '#address-cells' + - '#size-cells' + +additionalProperties: false + +examples: + - | + #include + #include + + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + led-controller@36 { + compatible =3D "ti,lm3533"; + reg =3D <0x36>; + + enable-gpios =3D <&gpio 110 GPIO_ACTIVE_HIGH>; + vin-supply =3D <&vdd_3v3_bat>; + + ti,boost-ovp-microvolt =3D <24000000>; + ti,boost-freq-hz =3D <500000>; + + #address-cells =3D <1>; + #size-cells =3D <0>; + + backlight@0 { + compatible =3D "ti,lm3533-backlight"; + reg =3D <0>; + + default-brightness =3D <113>; + + led-max-microamp =3D <23400>; + led-sources =3D <0 1>; + }; + + led@2 { + compatible =3D "ti,lm3533-leds"; + reg =3D <2>; + + led-max-microamp =3D <23400>; + led-sources =3D <0 1>; + }; + + led@4 { + compatible =3D "ti,lm3533-leds"; + reg =3D <4>; + + led-max-microamp =3D <23400>; + led-sources =3D <2>; + }; + + led@5 { + compatible =3D "ti,lm3533-leds"; + reg =3D <5>; + + led-max-microamp =3D <23400>; + led-sources =3D <3 4>; + }; + + light-sensor { + compatible =3D "ti,lm3533-als"; + + interrupt-parent =3D <&gpio>; + interrupts =3D <80 IRQ_TYPE_LEVEL_LOW>; + + ti,pwm-mode; + }; + }; + }; +... --=20 2.51.0 From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C59EC3DB64B for ; Mon, 1 Jun 2026 15:19:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327151; cv=none; b=USLoZKgFaDMeQ5QkvlP3ARv18lPCcZPdkHE6oaRGzQAcvLsGXtd6EdSGukTRHyBPhXQ3NzJdB6Vsb0k1zNzIq4q4oD+5/hY42Pw3irzGEdXqG+E554j4/E2CoRyobuVyz/4WS4dh8vi1SDL/CTOwXYVEMKIE8Vh40El51DajxO0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327151; c=relaxed/simple; bh=P/aQQUXfNNAjPXtCtv4LkDmTvkFKObJ8qq5m9tMmQrc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=l8Zuug5w75ZwPKgFvHlDNv6XQjdEOHg9hPx+5bUleTFWDwZJpPneE+iuXaZdpp5EKWvn7S3VcP5kmR4rsPrMV9S4ytZN0sz1f6207R/GllqMvQnyErpaoWv8OHulwi/K8a2FCa4XlpuHeCyS61sDPO8w/wcJJBPFNUUqUrGK+wM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=q+9nDKh4; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="q+9nDKh4" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-490afc47455so1707765e9.2 for ; Mon, 01 Jun 2026 08:19:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327141; x=1780931941; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6lilqAuiij9iv6kzYPCZqnmLSIUj1rZr1BJG3cusMtw=; b=q+9nDKh4LS4EDNTeCJZsdtnqRJQuE1X8CPxpxHFPKW87isvd9EGATOAFEGpdapLEjf i28lr9HpBwUHYF7jUN1VDcx9jGpcEnu8e+eiZU1wGEVZrnQONC9lQcMhlujIWcKlHKTq 9APyAok/k6enCCrgZu0d2M2+zVRMPeGGA/QXFD4HnApceCQuT1QiJyBvPFcVQVkS7wAn l5InNjrFgMXNoON/2jpA1On6yziIkqG0YMD/Me8PJUKGxAJyDpgxQb8EOltw9NsZqmpG 90/Dk8LSlLhl4RrV/UofN0tPVW/sbUJvgHNgpuQjy98Ny8YqX+I8otaGbvP/E/ipENu/ oX9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327141; x=1780931941; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6lilqAuiij9iv6kzYPCZqnmLSIUj1rZr1BJG3cusMtw=; b=c8pUAxqX0PL/KJbbmrX94t4yZ6uiR0gFHNtMy/9p+j9jSeVXWeDQl7J2vIhbRaoDDJ 7HgcAgFdgVnol7ngtNe7G6mTamHrbXSNMiNy6ql5jJ1reL7FINjETkl00tdr9wlhRGcQ G8WUltXSRnUY5Bwy6iXidM1A36uwbcg0c7cO7esHT2yVRtllYy3Xx5XQBWvDCpPdnJct ohc2GZnkUdaea92kHiMpnOopogbR58k1nXMZFHFyvrLlIxlhYIlZZSjYTo/7gHlOy63i Ip3t/h+iePpo30jw6U5CA2Ygw+fvrR5JmeOr43RSVZiyzOgd0EAuTpjWrhd3MROFBxbJ SOLw== X-Forwarded-Encrypted: i=1; AFNElJ9K2y1ctBunE5e6JYfFmn9T2LTmfttO33F4vkTRD4ijJifNA5UuRGredQWxQPp5efWaLUU69wDO7GrPvww=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+6O0FulgOqy8MPjv92XSTz1z2fuotTt5LXJw1cjCp9xijAor2 b+RWthXhgDysE6x7iLblaBPN1gpW0ZluZampv1gmgP0lEWVaO4NraH8j X-Gm-Gg: Acq92OFRqxyWXPuAQS2+a9XAVrcTq6shB8LCshP3RC3T1HxHJf0hWR2xN0znIF4rMg9 lsV9Hi+5WMNECPvvehzzUDHvsAe6uyPe8ICPTUizp7S45AzHZQG1XKRNeZ6zSbYuQbags3hieTg gQ6CU1ARMVKyXrJLVUEdWBhMkBr+VFJWkBq+meEPhMBIi+VRjf6w95Rtb1lLkhEp5zQiUDxYpgB FNEvydnUb75rzOfK8LKMLRck/9uh0SH4uNlhcUMjAbEEsX2zHdGnEW3VBgg5g8KF/nrqFr/nfES PcNf38s1J/6HbqaEP03AS5bXKnU1br2B/8wy4q/IQZw1CGbBL5bQ4pJbfveBZImRRxJgYDDy0wI Ol4wNlCx0ZukJs2ifTLXaJk8npI+3UN8rAm7ATmQZw/rPuhvvMmLWhpwUS3y9M0ORVBFATRBBPW OOBKy5kPWzqonuZI9UxOL5FiA= X-Received: by 2002:a05:600c:6287:b0:490:9d1b:f068 with SMTP id 5b1f17b1804b1-490a295d9c6mr209410175e9.29.1780327140831; Mon, 01 Jun 2026 08:19:00 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.18.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:19:00 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 02/11] mfd: lm3533: Remove driver specific regmap wrappers Date: Mon, 1 Jun 2026 18:18:22 +0300 Message-ID: <20260601151831.76350-3-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Remove driver-specific regmap wrappers in favor of using regmap helpers directly. The wrappers are mostly equivalent to the standard helpers, with two exceptions: regmap_read requires an unsigned int pointer, and regmap_update_bits has the mask and value arguments swapped. These differences were accounted for and adjusted accordingly. Signed-off-by: Svyatoslav Ryhel --- drivers/iio/light/lm3533-als.c | 57 ++++++++++++---------- drivers/leds/leds-lm3533.c | 34 +++++++------- drivers/mfd/lm3533-core.c | 73 +++++------------------------ drivers/mfd/lm3533-ctrlbank.c | 22 +++++---- drivers/video/backlight/lm3533_bl.c | 21 +++++---- include/linux/mfd/lm3533.h | 8 +--- 6 files changed, 86 insertions(+), 129 deletions(-) diff --git a/drivers/iio/light/lm3533-als.c b/drivers/iio/light/lm3533-als.c index 99f0b903018c..fb61904f110f 100644 --- a/drivers/iio/light/lm3533-als.c +++ b/drivers/iio/light/lm3533-als.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include =20 @@ -64,7 +65,7 @@ static int lm3533_als_get_adc(struct iio_dev *indio_dev, = bool average, { struct lm3533_als *als =3D iio_priv(indio_dev); u8 reg; - u8 val; + u32 val; int ret; =20 if (average) @@ -72,7 +73,7 @@ static int lm3533_als_get_adc(struct iio_dev *indio_dev, = bool average, else reg =3D LM3533_REG_ALS_READ_ADC_RAW; =20 - ret =3D lm3533_read(als->lm3533, reg, &val); + ret =3D regmap_read(als->lm3533->regmap, reg, &val); if (ret) { dev_err(&indio_dev->dev, "failed to read adc\n"); return ret; @@ -86,10 +87,10 @@ static int lm3533_als_get_adc(struct iio_dev *indio_dev= , bool average, static int _lm3533_als_get_zone(struct iio_dev *indio_dev, u8 *zone) { struct lm3533_als *als =3D iio_priv(indio_dev); - u8 val; + u32 val; int ret; =20 - ret =3D lm3533_read(als->lm3533, LM3533_REG_ALS_ZONE_INFO, &val); + ret =3D regmap_read(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, &val); if (ret) { dev_err(&indio_dev->dev, "failed to read zone\n"); return ret; @@ -127,7 +128,7 @@ static inline u8 lm3533_als_get_target_reg(unsigned cha= nnel, unsigned zone) } =20 static int lm3533_als_get_target(struct iio_dev *indio_dev, unsigned chann= el, - unsigned zone, u8 *val) + unsigned zone, u32 *val) { struct lm3533_als *als =3D iio_priv(indio_dev); u8 reg; @@ -140,7 +141,7 @@ static int lm3533_als_get_target(struct iio_dev *indio_= dev, unsigned channel, return -EINVAL; =20 reg =3D lm3533_als_get_target_reg(channel, zone); - ret =3D lm3533_read(als->lm3533, reg, val); + ret =3D regmap_read(als->lm3533->regmap, reg, val); if (ret) dev_err(&indio_dev->dev, "failed to get target current\n"); =20 @@ -161,7 +162,7 @@ static int lm3533_als_set_target(struct iio_dev *indio_= dev, unsigned channel, return -EINVAL; =20 reg =3D lm3533_als_get_target_reg(channel, zone); - ret =3D lm3533_write(als->lm3533, reg, val); + ret =3D regmap_write(als->lm3533->regmap, reg, val); if (ret) dev_err(&indio_dev->dev, "failed to set target current\n"); =20 @@ -172,7 +173,7 @@ static int lm3533_als_get_current(struct iio_dev *indio= _dev, unsigned channel, int *val) { u8 zone; - u8 target; + u32 target; int ret; =20 ret =3D lm3533_als_get_zone(indio_dev, &zone); @@ -280,7 +281,8 @@ static int lm3533_als_set_int_mode(struct iio_dev *indi= o_dev, int enable) else val =3D 0; =20 - ret =3D lm3533_update(als->lm3533, LM3533_REG_ALS_ZONE_INFO, val, mask); + ret =3D regmap_update_bits(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, + val, mask); if (ret) { dev_err(&indio_dev->dev, "failed to set int mode %d\n", enable); @@ -294,10 +296,10 @@ static int lm3533_als_get_int_mode(struct iio_dev *in= dio_dev, int *enable) { struct lm3533_als *als =3D iio_priv(indio_dev); u8 mask =3D LM3533_ALS_INT_ENABLE_MASK; - u8 val; + u32 val; int ret; =20 - ret =3D lm3533_read(als->lm3533, LM3533_REG_ALS_ZONE_INFO, &val); + ret =3D regmap_read(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, &val); if (ret) { dev_err(&indio_dev->dev, "failed to get int mode\n"); return ret; @@ -316,7 +318,7 @@ static inline u8 lm3533_als_get_threshold_reg(unsigned = nr, bool raising) } =20 static int lm3533_als_get_threshold(struct iio_dev *indio_dev, unsigned nr, - bool raising, u8 *val) + bool raising, u32 *val) { struct lm3533_als *als =3D iio_priv(indio_dev); u8 reg; @@ -326,7 +328,7 @@ static int lm3533_als_get_threshold(struct iio_dev *ind= io_dev, unsigned nr, return -EINVAL; =20 reg =3D lm3533_als_get_threshold_reg(nr, raising); - ret =3D lm3533_read(als->lm3533, reg, val); + ret =3D regmap_read(als->lm3533->regmap, reg, val); if (ret) dev_err(&indio_dev->dev, "failed to get threshold\n"); =20 @@ -337,7 +339,7 @@ static int lm3533_als_set_threshold(struct iio_dev *ind= io_dev, unsigned nr, bool raising, u8 val) { struct lm3533_als *als =3D iio_priv(indio_dev); - u8 val2; + u32 val2; u8 reg, reg2; int ret; =20 @@ -348,7 +350,7 @@ static int lm3533_als_set_threshold(struct iio_dev *ind= io_dev, unsigned nr, reg2 =3D lm3533_als_get_threshold_reg(nr, !raising); =20 mutex_lock(&als->thresh_mutex); - ret =3D lm3533_read(als->lm3533, reg2, &val2); + ret =3D regmap_read(als->lm3533->regmap, reg2, &val2); if (ret) { dev_err(&indio_dev->dev, "failed to get threshold\n"); goto out; @@ -363,7 +365,7 @@ static int lm3533_als_set_threshold(struct iio_dev *ind= io_dev, unsigned nr, goto out; } =20 - ret =3D lm3533_write(als->lm3533, reg, val); + ret =3D regmap_write(als->lm3533->regmap, reg, val); if (ret) { dev_err(&indio_dev->dev, "failed to set threshold\n"); goto out; @@ -375,11 +377,11 @@ static int lm3533_als_set_threshold(struct iio_dev *i= ndio_dev, unsigned nr, } =20 static int lm3533_als_get_hysteresis(struct iio_dev *indio_dev, unsigned n= r, - u8 *val) + u32 *val) { struct lm3533_als *als =3D iio_priv(indio_dev); - u8 falling; - u8 raising; + u32 falling; + u32 raising; int ret; =20 if (nr > LM3533_ALS_THRESH_MAX) @@ -503,7 +505,7 @@ static ssize_t show_als_attr(struct device *dev, { struct iio_dev *indio_dev =3D dev_to_iio_dev(dev); struct lm3533_als_attribute *als_attr =3D to_lm3533_als_attr(attr); - u8 val; + u32 val; int ret; =20 switch (als_attr->type) { @@ -725,7 +727,8 @@ static int lm3533_als_set_input_mode(struct lm3533_als = *als, bool pwm_mode) else val =3D 0; /* analog input */ =20 - ret =3D lm3533_update(als->lm3533, LM3533_REG_ALS_CONF, val, mask); + ret =3D regmap_update_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, + mask, val); if (ret) { dev_err(&als->pdev->dev, "failed to set input mode %d\n", pwm_mode); @@ -744,7 +747,8 @@ static int lm3533_als_set_resistor(struct lm3533_als *a= ls, u8 val) return -EINVAL; } =20 - ret =3D lm3533_write(als->lm3533, LM3533_REG_ALS_RESISTOR_SELECT, val); + ret =3D regmap_write(als->lm3533->regmap, LM3533_REG_ALS_RESISTOR_SELECT, + val); if (ret) { dev_err(&als->pdev->dev, "failed to set resistor\n"); return ret; @@ -778,7 +782,8 @@ static int lm3533_als_setup_irq(struct lm3533_als *als,= void *dev) int ret; =20 /* Make sure interrupts are disabled. */ - ret =3D lm3533_update(als->lm3533, LM3533_REG_ALS_ZONE_INFO, 0, mask); + ret =3D regmap_update_bits(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, + mask, 0); if (ret) { dev_err(&als->pdev->dev, "failed to disable interrupts\n"); return ret; @@ -801,7 +806,8 @@ static int lm3533_als_enable(struct lm3533_als *als) u8 mask =3D LM3533_ALS_ENABLE_MASK; int ret; =20 - ret =3D lm3533_update(als->lm3533, LM3533_REG_ALS_CONF, mask, mask); + ret =3D regmap_update_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, + mask, mask); if (ret) dev_err(&als->pdev->dev, "failed to enable ALS\n"); =20 @@ -813,7 +819,8 @@ static int lm3533_als_disable(struct lm3533_als *als) u8 mask =3D LM3533_ALS_ENABLE_MASK; int ret; =20 - ret =3D lm3533_update(als->lm3533, LM3533_REG_ALS_CONF, 0, mask); + ret =3D regmap_update_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, + mask, 0); if (ret) dev_err(&als->pdev->dev, "failed to disable ALS\n"); =20 diff --git a/drivers/leds/leds-lm3533.c b/drivers/leds/leds-lm3533.c index 45795f2a1042..51ff61aee75c 100644 --- a/drivers/leds/leds-lm3533.c +++ b/drivers/leds/leds-lm3533.c @@ -12,6 +12,7 @@ #include #include #include +#include #include =20 #include @@ -101,7 +102,8 @@ static int lm3533_led_pattern_enable(struct lm3533_led = *led, int enable) else val =3D 0; =20 - ret =3D lm3533_update(led->lm3533, LM3533_REG_PATTERN_ENABLE, val, mask); + ret =3D regmap_update_bits(led->lm3533->regmap, + LM3533_REG_PATTERN_ENABLE, mask, val); if (ret) { dev_err(led->cdev.dev, "failed to enable pattern %d (%d)\n", pattern, enable); @@ -131,7 +133,7 @@ static int lm3533_led_set(struct led_classdev *cdev, static enum led_brightness lm3533_led_get(struct led_classdev *cdev) { struct lm3533_led *led =3D to_lm3533_led(cdev); - u8 val; + u32 val; int ret; =20 ret =3D lm3533_ctrlbank_get_brightness(&led->cb, &val); @@ -259,7 +261,7 @@ static u8 lm3533_led_delay_set(struct lm3533_led *led, = u8 base, dev_dbg(led->cdev.dev, "%s - %lu: %u (0x%02x)\n", __func__, *delay, t, val); reg =3D lm3533_led_get_pattern_reg(led, base); - ret =3D lm3533_write(led->lm3533, reg, val); + ret =3D regmap_write(led->lm3533->regmap, reg, val); if (ret) dev_err(led->cdev.dev, "failed to set delay (%02x)\n", reg); =20 @@ -337,10 +339,10 @@ static ssize_t show_risefalltime(struct device *dev, struct lm3533_led *led =3D to_lm3533_led(led_cdev); ssize_t ret; u8 reg; - u8 val; + u32 val; =20 reg =3D lm3533_led_get_pattern_reg(led, base); - ret =3D lm3533_read(led->lm3533, reg, &val); + ret =3D regmap_read(led->lm3533->regmap, reg, &val); if (ret) return ret; =20 @@ -375,7 +377,7 @@ static ssize_t store_risefalltime(struct device *dev, return -EINVAL; =20 reg =3D lm3533_led_get_pattern_reg(led, base); - ret =3D lm3533_write(led->lm3533, reg, val); + ret =3D regmap_write(led->lm3533->regmap, reg, val); if (ret) return ret; =20 @@ -405,11 +407,11 @@ static ssize_t show_als_channel(struct device *dev, struct lm3533_led *led =3D to_lm3533_led(led_cdev); unsigned channel; u8 reg; - u8 val; + u32 val; int ret; =20 reg =3D lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); - ret =3D lm3533_read(led->lm3533, reg, &val); + ret =3D regmap_read(led->lm3533->regmap, reg, &val); if (ret) return ret; =20 @@ -441,7 +443,7 @@ static ssize_t store_als_channel(struct device *dev, mask =3D LM3533_REG_CTRLBANK_BCONF_ALS_CHANNEL_MASK; val =3D channel - 1; =20 - ret =3D lm3533_update(led->lm3533, reg, val, mask); + ret =3D regmap_update_bits(led->lm3533->regmap, reg, mask, val); if (ret) return ret; =20 @@ -455,11 +457,11 @@ static ssize_t show_als_en(struct device *dev, struct lm3533_led *led =3D to_lm3533_led(led_cdev); bool enable; u8 reg; - u8 val; + u32 val; int ret; =20 reg =3D lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); - ret =3D lm3533_read(led->lm3533, reg, &val); + ret =3D regmap_read(led->lm3533->regmap, reg, &val); if (ret) return ret; =20 @@ -491,7 +493,7 @@ static ssize_t store_als_en(struct device *dev, else val =3D 0; =20 - ret =3D lm3533_update(led->lm3533, reg, val, mask); + ret =3D regmap_update_bits(led->lm3533->regmap, reg, mask, val); if (ret) return ret; =20 @@ -504,12 +506,12 @@ static ssize_t show_linear(struct device *dev, struct led_classdev *led_cdev =3D dev_get_drvdata(dev); struct lm3533_led *led =3D to_lm3533_led(led_cdev); u8 reg; - u8 val; + u32 val; int linear; int ret; =20 reg =3D lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); - ret =3D lm3533_read(led->lm3533, reg, &val); + ret =3D regmap_read(led->lm3533->regmap, reg, &val); if (ret) return ret; =20 @@ -544,7 +546,7 @@ static ssize_t store_linear(struct device *dev, else val =3D 0; =20 - ret =3D lm3533_update(led->lm3533, reg, val, mask); + ret =3D regmap_update_bits(led->lm3533->regmap, reg, mask, val); if (ret) return ret; =20 @@ -557,7 +559,7 @@ static ssize_t show_pwm(struct device *dev, { struct led_classdev *led_cdev =3D dev_get_drvdata(dev); struct lm3533_led *led =3D to_lm3533_led(led_cdev); - u8 val; + u32 val; int ret; =20 ret =3D lm3533_ctrlbank_get_pwm(&led->cb, &val); diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c index 0a2409d00b2e..f9bdc0a1d9be 100644 --- a/drivers/mfd/lm3533-core.c +++ b/drivers/mfd/lm3533-core.c @@ -80,66 +80,14 @@ static struct mfd_cell lm3533_led_devs[] =3D { }, }; =20 -int lm3533_read(struct lm3533 *lm3533, u8 reg, u8 *val) -{ - int tmp; - int ret; - - ret =3D regmap_read(lm3533->regmap, reg, &tmp); - if (ret < 0) { - dev_err(lm3533->dev, "failed to read register %02x: %d\n", - reg, ret); - return ret; - } - - *val =3D tmp; - - dev_dbg(lm3533->dev, "read [%02x]: %02x\n", reg, *val); - - return ret; -} -EXPORT_SYMBOL_GPL(lm3533_read); - -int lm3533_write(struct lm3533 *lm3533, u8 reg, u8 val) -{ - int ret; - - dev_dbg(lm3533->dev, "write [%02x]: %02x\n", reg, val); - - ret =3D regmap_write(lm3533->regmap, reg, val); - if (ret < 0) { - dev_err(lm3533->dev, "failed to write register %02x: %d\n", - reg, ret); - } - - return ret; -} -EXPORT_SYMBOL_GPL(lm3533_write); - -int lm3533_update(struct lm3533 *lm3533, u8 reg, u8 val, u8 mask) -{ - int ret; - - dev_dbg(lm3533->dev, "update [%02x]: %02x/%02x\n", reg, val, mask); - - ret =3D regmap_update_bits(lm3533->regmap, reg, mask, val); - if (ret < 0) { - dev_err(lm3533->dev, "failed to update register %02x: %d\n", - reg, ret); - } - - return ret; -} -EXPORT_SYMBOL_GPL(lm3533_update); - static int lm3533_set_boost_freq(struct lm3533 *lm3533, enum lm3533_boost_freq freq) { int ret; =20 - ret =3D lm3533_update(lm3533, LM3533_REG_BOOST_PWM, - freq << LM3533_BOOST_FREQ_SHIFT, - LM3533_BOOST_FREQ_MASK); + ret =3D regmap_update_bits(lm3533->regmap, LM3533_REG_BOOST_PWM, + LM3533_BOOST_FREQ_MASK, + freq << LM3533_BOOST_FREQ_SHIFT); if (ret) dev_err(lm3533->dev, "failed to set boost frequency\n"); =20 @@ -152,9 +100,9 @@ static int lm3533_set_boost_ovp(struct lm3533 *lm3533, { int ret; =20 - ret =3D lm3533_update(lm3533, LM3533_REG_BOOST_PWM, - ovp << LM3533_BOOST_OVP_SHIFT, - LM3533_BOOST_OVP_MASK); + ret =3D regmap_update_bits(lm3533->regmap, LM3533_REG_BOOST_PWM, + LM3533_BOOST_OVP_MASK, + ovp << LM3533_BOOST_OVP_SHIFT); if (ret) dev_err(lm3533->dev, "failed to set boost ovp\n"); =20 @@ -181,7 +129,8 @@ static int lm3533_set_hvled_config(struct lm3533 *lm353= 3, u8 hvled, u8 bl) mask =3D LM3533_BL_ID_MASK << shift; val =3D bl << shift; =20 - ret =3D lm3533_update(lm3533, LM3533_REG_OUTPUT_CONF1, val, mask); + ret =3D regmap_update_bits(lm3533->regmap, LM3533_REG_OUTPUT_CONF1, + mask, val); if (ret) dev_err(lm3533->dev, "failed to set hvled config\n"); =20 @@ -216,7 +165,7 @@ static int lm3533_set_lvled_config(struct lm3533 *lm353= 3, u8 lvled, u8 led) mask =3D LM3533_LED_ID_MASK << shift; val =3D led << shift; =20 - ret =3D lm3533_update(lm3533, reg, val, mask); + ret =3D regmap_update_bits(lm3533->regmap, reg, mask, val); if (ret) dev_err(lm3533->dev, "failed to set lvled config\n"); =20 @@ -258,7 +207,7 @@ static ssize_t show_output(struct device *dev, struct lm3533_device_attribute *lattr =3D to_lm3533_dev_attr(attr); int id =3D lattr->u.output.id; u8 reg; - u8 val; + u32 val; u8 mask; int shift; int ret; @@ -278,7 +227,7 @@ static ssize_t show_output(struct device *dev, mask =3D LM3533_LED_ID_MASK << shift; } =20 - ret =3D lm3533_read(lm3533, reg, &val); + ret =3D regmap_read(lm3533->regmap, reg, &val); if (ret) return ret; =20 diff --git a/drivers/mfd/lm3533-ctrlbank.c b/drivers/mfd/lm3533-ctrlbank.c index 2537dfade51c..37bae279f41e 100644 --- a/drivers/mfd/lm3533-ctrlbank.c +++ b/drivers/mfd/lm3533-ctrlbank.c @@ -9,6 +9,7 @@ =20 #include #include +#include =20 #include =20 @@ -38,8 +39,8 @@ int lm3533_ctrlbank_enable(struct lm3533_ctrlbank *cb) dev_dbg(cb->dev, "%s - %d\n", __func__, cb->id); =20 mask =3D 1 << cb->id; - ret =3D lm3533_update(cb->lm3533, LM3533_REG_CTRLBANK_ENABLE, - mask, mask); + ret =3D regmap_update_bits(cb->lm3533->regmap, LM3533_REG_CTRLBANK_ENABLE, + mask, mask); if (ret) dev_err(cb->dev, "failed to enable ctrlbank %d\n", cb->id); =20 @@ -55,7 +56,8 @@ int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb) dev_dbg(cb->dev, "%s - %d\n", __func__, cb->id); =20 mask =3D 1 << cb->id; - ret =3D lm3533_update(cb->lm3533, LM3533_REG_CTRLBANK_ENABLE, 0, mask); + ret =3D regmap_update_bits(cb->lm3533->regmap, LM3533_REG_CTRLBANK_ENABLE, + mask, 0); if (ret) dev_err(cb->dev, "failed to disable ctrlbank %d\n", cb->id); =20 @@ -80,7 +82,7 @@ int lm3533_ctrlbank_set_max_current(struct lm3533_ctrlban= k *cb, u16 imax) val =3D (imax - LM3533_MAX_CURRENT_MIN) / LM3533_MAX_CURRENT_STEP; =20 reg =3D lm3533_ctrlbank_get_reg(cb, LM3533_REG_MAX_CURRENT_BASE); - ret =3D lm3533_write(cb->lm3533, reg, val); + ret =3D regmap_write(cb->lm3533->regmap, reg, val); if (ret) dev_err(cb->dev, "failed to set max current\n"); =20 @@ -94,7 +96,7 @@ int lm3533_ctrlbank_set_brightness(struct lm3533_ctrlbank= *cb, u8 val) int ret; =20 reg =3D lm3533_ctrlbank_get_reg(cb, LM3533_REG_BRIGHTNESS_BASE); - ret =3D lm3533_write(cb->lm3533, reg, val); + ret =3D regmap_write(cb->lm3533->regmap, reg, val); if (ret) dev_err(cb->dev, "failed to set brightness\n"); =20 @@ -102,13 +104,13 @@ int lm3533_ctrlbank_set_brightness(struct lm3533_ctrl= bank *cb, u8 val) } EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_brightness); =20 -int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlbank *cb, u8 *val) +int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlbank *cb, u32 *val) { u8 reg; int ret; =20 reg =3D lm3533_ctrlbank_get_reg(cb, LM3533_REG_BRIGHTNESS_BASE); - ret =3D lm3533_read(cb->lm3533, reg, val); + ret =3D regmap_read(cb->lm3533->regmap, reg, val); if (ret) dev_err(cb->dev, "failed to get brightness\n"); =20 @@ -135,7 +137,7 @@ int lm3533_ctrlbank_set_pwm(struct lm3533_ctrlbank *cb,= u8 val) return -EINVAL; =20 reg =3D lm3533_ctrlbank_get_reg(cb, LM3533_REG_PWM_BASE); - ret =3D lm3533_write(cb->lm3533, reg, val); + ret =3D regmap_write(cb->lm3533->regmap, reg, val); if (ret) dev_err(cb->dev, "failed to set PWM mask\n"); =20 @@ -143,13 +145,13 @@ int lm3533_ctrlbank_set_pwm(struct lm3533_ctrlbank *c= b, u8 val) } EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_pwm); =20 -int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u8 *val) +int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u32 *val) { u8 reg; int ret; =20 reg =3D lm3533_ctrlbank_get_reg(cb, LM3533_REG_PWM_BASE); - ret =3D lm3533_read(cb->lm3533, reg, val); + ret =3D regmap_read(cb->lm3533->regmap, reg, val); if (ret) dev_err(cb->dev, "failed to get PWM mask\n"); =20 diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/= lm3533_bl.c index babfd3ceec86..5c8e69087860 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -11,6 +11,7 @@ #include #include #include +#include #include =20 #include @@ -45,7 +46,7 @@ static int lm3533_bl_update_status(struct backlight_devic= e *bd) static int lm3533_bl_get_brightness(struct backlight_device *bd) { struct lm3533_bl *bl =3D bl_get_data(bd); - u8 val; + u32 val; int ret; =20 ret =3D lm3533_ctrlbank_get_brightness(&bl->cb, &val); @@ -82,12 +83,12 @@ static ssize_t show_als_en(struct device *dev, { struct lm3533_bl *bl =3D dev_get_drvdata(dev); int ctrlbank =3D lm3533_bl_get_ctrlbank_id(bl); - u8 val; + u32 val; u8 mask; bool enable; int ret; =20 - ret =3D lm3533_read(bl->lm3533, LM3533_REG_CTRLBANK_AB_BCONF, &val); + ret =3D regmap_read(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCONF, &va= l); if (ret) return ret; =20 @@ -118,8 +119,8 @@ static ssize_t store_als_en(struct device *dev, else val =3D 0; =20 - ret =3D lm3533_update(bl->lm3533, LM3533_REG_CTRLBANK_AB_BCONF, val, - mask); + ret =3D regmap_update_bits(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCO= NF, + mask, val); if (ret) return ret; =20 @@ -130,12 +131,12 @@ static ssize_t show_linear(struct device *dev, struct device_attribute *attr, char *buf) { struct lm3533_bl *bl =3D dev_get_drvdata(dev); - u8 val; + u32 val; u8 mask; int linear; int ret; =20 - ret =3D lm3533_read(bl->lm3533, LM3533_REG_CTRLBANK_AB_BCONF, &val); + ret =3D regmap_read(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCONF, &va= l); if (ret) return ret; =20 @@ -169,8 +170,8 @@ static ssize_t store_linear(struct device *dev, else val =3D 0; =20 - ret =3D lm3533_update(bl->lm3533, LM3533_REG_CTRLBANK_AB_BCONF, val, - mask); + ret =3D regmap_update_bits(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCO= NF, + mask, val); if (ret) return ret; =20 @@ -182,7 +183,7 @@ static ssize_t show_pwm(struct device *dev, char *buf) { struct lm3533_bl *bl =3D dev_get_drvdata(dev); - u8 val; + u32 val; int ret; =20 ret =3D lm3533_ctrlbank_get_pwm(&bl->cb, &val); diff --git a/include/linux/mfd/lm3533.h b/include/linux/mfd/lm3533.h index 69059a7a2ce5..db0a5e5c9e39 100644 --- a/include/linux/mfd/lm3533.h +++ b/include/linux/mfd/lm3533.h @@ -86,14 +86,10 @@ extern int lm3533_ctrlbank_enable(struct lm3533_ctrlban= k *cb); extern int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb); =20 extern int lm3533_ctrlbank_set_brightness(struct lm3533_ctrlbank *cb, u8 v= al); -extern int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlbank *cb, u8 *= val); +extern int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlbank *cb, u32 = *val); extern int lm3533_ctrlbank_set_max_current(struct lm3533_ctrlbank *cb, u16 imax); extern int lm3533_ctrlbank_set_pwm(struct lm3533_ctrlbank *cb, u8 val); -extern int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u8 *val); - -extern int lm3533_read(struct lm3533 *lm3533, u8 reg, u8 *val); -extern int lm3533_write(struct lm3533 *lm3533, u8 reg, u8 val); -extern int lm3533_update(struct lm3533 *lm3533, u8 reg, u8 val, u8 mask); +extern int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u32 *val); =20 #endif /* __LINUX_MFD_LM3533_H */ --=20 2.51.0 From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4AD003DCD88 for ; Mon, 1 Jun 2026 15:19:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327153; cv=none; b=U0uRNh6xxTqVux6rjDnPq2zaFYwOIcGfFuJme0SQlvtsiZo8YFuCQRCXnn2Kn9GFT/U0f/ZgPImqqDi/gDoDxQTz8Gxpn0HWL3xw9QREy1b0/Cl/8bYA0ZVbRRltimCWZO4eSWQxGwQqcIAIY1qAk70P+sVy1O+bcrA5CLfDpGE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327153; c=relaxed/simple; bh=UtPscoMn7/+u3hgCsxGsK5x29OOmOoQ7cGtI5AS2sAY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KvcGqGx0YdOyskOR3ce2Tnk+SrR1oXG4X4Wde+yrmPNrFAbiFheSapK350fCEPH33UR/fZocqEgoOlqkWH9hxof8ETdBVIaI4rwnc/FIif+6aCiqyVoU8Y4X6+aIpEIbv4UvphiY0SlgHubDVcrjGiVryQYPf+l+zf2upKD54cM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XiszMNeP; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XiszMNeP" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-45fd464d51fso796323f8f.3 for ; Mon, 01 Jun 2026 08:19:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327142; x=1780931942; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Y382WZZPSXgqkJt8F6mrSdOVSYmocK83eFeJ1TSWQE4=; b=XiszMNeP4wUTqUxFlUnFLah3PuhRurrdvgYAUaNSfjnBlvvHl4pqWSxVXYji1IkvFB d/yKXKPKYdhAClOQR2tK7rd6MK0PKTeG97Uq4lP711I9N9hCNI2BFP6N7qWzvyjHc9In al2CzUtKFUSIaZNGOZIpI8FLH0E4BJUb5YmBDgLKILvJBa+bbu4E4IvcnkuvDSFQnaHg nYFpMdRKzuUytJchtXBfPXAil8EeAdG9FtyAHUiXh6o0PV5OWMnFdXvXhATbuPKKfPtG Z1EuUnHfzPSCc6uQzKa9H7DvHB5/7IdKsHlpFTWKT1lXdCDdKXCd043ftoa/GPZL4lGk G50A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327142; x=1780931942; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Y382WZZPSXgqkJt8F6mrSdOVSYmocK83eFeJ1TSWQE4=; b=bvAAd9iE3wOQrcW+tE1MMsMWsUeY69Mm1OC1agAbG0Omi5+rXB6loK8cAwCdpA7m4b 4P2h+jV1YqlXEoyPD5MLacBafAnLIF67q6yqOUykkP1rqzefLr0xqbrMRun1zRb9c8v/ 6BQ/KGwuMPanhoG5YnzZ8YJgXgag2kOJb35RwofjdUsOR4Z/o2rSoD5hcD2/E08F+TB7 CDXxXSqUyeU7mxsGPHqNqqAvkWqYGE+8wnobJ1+FwXTN4E/bem9i3IHLlMNfMVTUaVBg FYKCjvxc2Juv0rP/u01KQGpsbwFr7WzmWAp9fMy2y2xHJJiCl2l12VkQgULBC4POSUZC 37pg== X-Forwarded-Encrypted: i=1; AFNElJ/9RSK89P9aUKhjrbqbIZucJ/dMhMO9JLHVehNOYiza3UffYgsAS87IYsXJbF4Dv9QNSVOUUBI1b6Ts3lw=@vger.kernel.org X-Gm-Message-State: AOJu0YztvLtq1KZloIArZrY0BoOQz6UE6/tXF6mkprIpfGhmSvVjMl3F WNDpAcMyYbn4qpN4hw2w0NfQJIOGFetDtloAPFBdbKA8S7A9tnJBZFX0 X-Gm-Gg: Acq92OEf72xefaW4JF7+CHQuO+HNNRIw+TrYsFCP+Fzr7dicGbk7FZ0bO7iVBC/IJI2 2CV+6tANAa/x+km9O3rjWx5MJ5fc0e3urM1w7fENjs86brhl3bl0aDjJtuFmsnq96VF8F8Eg6gn RDQjPovO9wZ9bCPcJpEdfWRQVY7u2e2fSchRfhUjRoAD5KOW8ljdRpkh0aVIApRBWXB0B4/7IGb GZDINbMYkUhSzAZi0xF8gYLiP6nPMSLF3YXJPuHJQq0IY1MIryev6QqUA4p/LGTAjBSxeZ30HNw 6NL5ckUFaVsB0iGvnGWZnMgciZsrbLkqxKz2vF2etz0xmwWSbSdm3P47Ss6smzqULAU/z0oY48k eSVOnmgsVLMLWo9bbMb9kXcRClyq/8SfeseAW7dVFuSc4z46ot4oFLzlVFYo2teIyeaULA0VSrG y+rR0RVUqOsi7eOaAAOehxLFU= X-Received: by 2002:a05:6000:4c8:b0:45e:ea3a:47d6 with SMTP id ffacd0b85a97d-45ef6b93b94mr15555475f8f.32.1780327142357; Mon, 01 Jun 2026 08:19:02 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.19.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:19:01 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 03/11] iio: light: lm3533-als: Remove redundant pdata helpers Date: Mon, 1 Jun 2026 18:18:23 +0300 Message-ID: <20260601151831.76350-4-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The lm3533_als_set_input_mode and lm3533_als_set_resistor functions are used only in lm3533_als_setup. Incorporate their code into lm3533_als_setup directly to simplify driver readability. Signed-off-by: Svyatoslav Ryhel --- drivers/iio/light/lm3533-als.c | 61 +++++++++------------------------- 1 file changed, 16 insertions(+), 45 deletions(-) diff --git a/drivers/iio/light/lm3533-als.c b/drivers/iio/light/lm3533-als.c index fb61904f110f..52136ca1abc9 100644 --- a/drivers/iio/light/lm3533-als.c +++ b/drivers/iio/light/lm3533-als.c @@ -716,61 +716,32 @@ static const struct attribute_group lm3533_als_attrib= ute_group =3D { .attrs =3D lm3533_als_attributes }; =20 -static int lm3533_als_set_input_mode(struct lm3533_als *als, bool pwm_mode) -{ - u8 mask =3D LM3533_ALS_INPUT_MODE_MASK; - u8 val; - int ret; - - if (pwm_mode) - val =3D mask; /* pwm input */ - else - val =3D 0; /* analog input */ - - ret =3D regmap_update_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, - mask, val); - if (ret) { - dev_err(&als->pdev->dev, "failed to set input mode %d\n", - pwm_mode); - return ret; - } - - return 0; -} - -static int lm3533_als_set_resistor(struct lm3533_als *als, u8 val) -{ - int ret; - - if (val < LM3533_ALS_RESISTOR_MIN || val > LM3533_ALS_RESISTOR_MAX) { - dev_err(&als->pdev->dev, "invalid resistor value\n"); - return -EINVAL; - } - - ret =3D regmap_write(als->lm3533->regmap, LM3533_REG_ALS_RESISTOR_SELECT, - val); - if (ret) { - dev_err(&als->pdev->dev, "failed to set resistor\n"); - return ret; - } - - return 0; -} - static int lm3533_als_setup(struct lm3533_als *als, const struct lm3533_als_platform_data *pdata) { + struct device *dev =3D &als->pdev->dev; int ret; =20 - ret =3D lm3533_als_set_input_mode(als, pdata->pwm_mode); + ret =3D regmap_update_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, + LM3533_ALS_INPUT_MODE_MASK, + pdata->pwm_mode ? LM3533_ALS_INPUT_MODE_MASK : 0); if (ret) - return ret; + return dev_err_probe(dev, ret, "failed to set input mode %d\n", + pdata->pwm_mode); + =20 /* ALS input is always high impedance in PWM-mode. */ if (!pdata->pwm_mode) { - ret =3D lm3533_als_set_resistor(als, pdata->r_select); + if (pdata->r_select < LM3533_ALS_RESISTOR_MIN || + pdata->r_select > LM3533_ALS_RESISTOR_MAX) { + dev_err(&als->pdev->dev, "invalid resistor value\n"); + return -EINVAL; + } + + ret =3D regmap_write(als->lm3533->regmap, LM3533_REG_ALS_RESISTOR_SELECT, + pdata->r_select); if (ret) - return ret; + return dev_err_probe(dev, ret, "failed to set resistor\n"); } =20 return 0; --=20 2.51.0 From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A83453DCD94 for ; Mon, 1 Jun 2026 15:19:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327152; cv=none; b=qeUVC64kivKZEQzWJM487CUdcgqbHlRP8w3hFKcsoDc0aIINef735k/eVS4dTu1NS8Ycyh6pRCvOyPu0GnNePRTnbIRlgffMa35+lmE85fSeJAElhkYggFBqVTzSM4gdjYKejzWQ84lrbZmhndiiZ1KXz6TPxiRXlUd7s3TC9Z0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327152; c=relaxed/simple; bh=JALmBwQQvVIGcgHB3eyuOJRgqo+XiRn3ZwSnYM+2DMk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h+Z73FHj7AZgZ2pMiXusi60oLghLjm51xApvX5xYji4KwkOhLw6dQ3//wnnrXTs0ZkHHgOSm2NdH1INbseCY38HRtgxS99GTJ8nzaMw9uP/z9a2bls0MVHznnP3iABJOOy37Gn/r0o56xOFYQmeue5xreyBy7ysY+adnsb3A90U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IvW4Y97o; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IvW4Y97o" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4909e3fa4b2so31846925e9.0 for ; Mon, 01 Jun 2026 08:19:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327144; x=1780931944; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kHipHX0fj9UFI6kqkRtr6SnJM0WlhcDH4RQJ2Kh7RME=; b=IvW4Y97ophhmqt4XxMHLdh1gLDGtbOqT+OdFsZOzhu7GJHt4vFrtSG2IedcR77PLxE O761zpZ5pUZzK1CQqP6WL/kvw4KIckjUVXCAu1jXVO2LhkhDmEz6tqxKw4Cer+Hz8/Xm 67puVzY5GHziIvAaJSb8KZ4Atba79E5rp4sq5NnTZlvEbmqZU4gf280Ic598i93jS/z7 M30NpnPAhWSN1q+VDv5Cxs3gb28XlLz3zMcsqzHm8pmOKDLT4CaMJy/SKz1mp3X+4a6X uiDaEZXVwjcg+VKzesel8hwijPgkxWbm90hqpOci5HtG/85+Q48RyZBlV2rLR3GuLWc6 j9Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327144; x=1780931944; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=kHipHX0fj9UFI6kqkRtr6SnJM0WlhcDH4RQJ2Kh7RME=; b=FR223diCXb7zXNQ+Qm4juvx3GXXh2cEjv6i8oW094FTR0KLTH1ZhRydfyhxaU+Zw1q tEHvfTn5s1pTF7EOasQxqmbzxUqx4V/lelyS1gvX+VGConj3dbJdtnpE9Yeb0LUhkKWu 3x3nt7WFrY8OZV2AS+X/Bc7o2QiWVt8DJzCTdpUl7RK6/hOB2QEx20O/Z44puWJKcGPL /fQFJYkkLm60VQTbpNRXFP+v3pEaxENGAYQ0SaNPXraglqh4lWgUS85aZxX/L2LtNF4s np+wFcglWwceXg7tYFk7opbOkumFVr6S5tK5NePeMmAjYNt1S+V+Zy6Fz00RmUgMT6dq PaMw== X-Forwarded-Encrypted: i=1; AFNElJ/ral7XZ2hkgrmqjVdDF+CW6b9Wj4KyNuriBFswaVv6m5hzai1g1sWtdiDzbztov9Pe0pviDqzCH3WyPo8=@vger.kernel.org X-Gm-Message-State: AOJu0YzT6In32nM30kL6f4mOho3jiNptkdaph53+TPs4bJcsVDFAXXT+ hh9YO95G9NkZcRcUw3JWd+gjdrDNv6iDe2M5qApzQPkXXqtX64nPzzM4 X-Gm-Gg: Acq92OEd+KM/dNTCUalVJU8T6PvmVS/oRroOuMbSMiopCRMYJUSWcVi2lyVtj5+KFDK 2hsV+D8XMIpOoVRPX3oBgaWxDiqzYcJM4VT//BqT+RppxNzJqU7BdpciAGCw7wGRTEyDn9KbdsK fg88z3ew5J5CprKXHIUNemNRJFwDOOXC53su1lgDOk+MXSJtvbGm27AW71x7ZcvEZtJhJeB+MQ+ NAkaIT1Kc6zg+VjffkTIGiGZl22+8Ftm9ZtV6OiyTWW0rACLG+CNwt8mK3qMaYmgg5EaVSywsvK eFaC4hvNuJXKgsNo80Fgc9IU7KEFz9KgCoYLZjaK3uRq7uZ+ydHOFlf/v74QRin424lInRq+vti M0t+bRNQDRQ/5HKU4xwlx+tz+HyQjKzFmv8euhYZMOVROX3c5goqRV3pFGeWNwqoZ7u29UIj+b1 YV8PnmsoESIW7HsJjs77h992s= X-Received: by 2002:a05:600d:8444:20b0:490:7136:ad02 with SMTP id 5b1f17b1804b1-490b078f2d5mr5481165e9.7.1780327143862; Mon, 01 Jun 2026 08:19:03 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.19.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:19:03 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 04/11] mfd: lm3533-core: Remove redundant pdata helpers Date: Mon, 1 Jun 2026 18:18:24 +0300 Message-ID: <20260601151831.76350-5-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The lm3533_set_boost_freq and lm3533_set_boost_ovp functions are used only in lm3533_device_setup, which in turn is only called by lm3533_device_init. Incorporate their code directly into lm3533_device_init to simplify driver readability. Signed-off-by: Svyatoslav Ryhel --- drivers/mfd/lm3533-core.c | 57 ++++++++++----------------------------- 1 file changed, 14 insertions(+), 43 deletions(-) diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c index f9bdc0a1d9be..45e7f7481aa0 100644 --- a/drivers/mfd/lm3533-core.c +++ b/drivers/mfd/lm3533-core.c @@ -80,35 +80,6 @@ static struct mfd_cell lm3533_led_devs[] =3D { }, }; =20 -static int lm3533_set_boost_freq(struct lm3533 *lm3533, - enum lm3533_boost_freq freq) -{ - int ret; - - ret =3D regmap_update_bits(lm3533->regmap, LM3533_REG_BOOST_PWM, - LM3533_BOOST_FREQ_MASK, - freq << LM3533_BOOST_FREQ_SHIFT); - if (ret) - dev_err(lm3533->dev, "failed to set boost frequency\n"); - - return ret; -} - - -static int lm3533_set_boost_ovp(struct lm3533 *lm3533, - enum lm3533_boost_ovp ovp) -{ - int ret; - - ret =3D regmap_update_bits(lm3533->regmap, LM3533_REG_BOOST_PWM, - LM3533_BOOST_OVP_MASK, - ovp << LM3533_BOOST_OVP_SHIFT); - if (ret) - dev_err(lm3533->dev, "failed to set boost ovp\n"); - - return ret; -} - /* * HVLED output config -- output hvled controlled by backlight bl */ @@ -406,18 +377,6 @@ static int lm3533_device_led_init(struct lm3533 *lm353= 3) return 0; } =20 -static int lm3533_device_setup(struct lm3533 *lm3533, - struct lm3533_platform_data *pdata) -{ - int ret; - - ret =3D lm3533_set_boost_freq(lm3533, pdata->boost_freq); - if (ret) - return ret; - - return lm3533_set_boost_ovp(lm3533, pdata->boost_ovp); -} - static int lm3533_device_init(struct lm3533 *lm3533) { struct lm3533_platform_data *pdata =3D dev_get_platdata(lm3533->dev); @@ -437,9 +396,21 @@ static int lm3533_device_init(struct lm3533 *lm3533) =20 lm3533_enable(lm3533); =20 - ret =3D lm3533_device_setup(lm3533, pdata); - if (ret) + ret =3D regmap_update_bits(lm3533->regmap, LM3533_REG_BOOST_PWM, + LM3533_BOOST_FREQ_MASK, + pdata->boost_freq << LM3533_BOOST_FREQ_SHIFT); + if (ret) { + dev_err(lm3533->dev, "failed to set boost frequency\n"); goto err_disable; + } + + ret =3D regmap_update_bits(lm3533->regmap, LM3533_REG_BOOST_PWM, + LM3533_BOOST_OVP_MASK, + pdata->boost_ovp << LM3533_BOOST_OVP_SHIFT); + if (ret) { + dev_err(lm3533->dev, "failed to set boost ovp\n"); + goto err_disable; + } =20 lm3533_device_als_init(lm3533); lm3533_device_bl_init(lm3533); --=20 2.51.0 From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4047C3DCDA7 for ; Mon, 1 Jun 2026 15:19:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327158; cv=none; b=SQyJbP0VEy640AMlDIzjpHJQsLnZd/kemqK2dkAA5YQxuAvu3fQbAyLdfLYgKftig2vr+1QYF6QCCoyRl/VLc156hcs3AvZOI7PflspU4X192LHXjDfLf3sLCrznC66WVLbuumrl46/oDKLI1nGPv89ffWh+ZXOt2GBZmYOliD0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327158; c=relaxed/simple; bh=VC7GTiK86p4YQGXZJSErQULAguxyMHVTeUjUs1seGF8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Hh1++vWHRnAXgkTyOxx78CtK5362Um+xDSEyow+dujh8ffdE4+q9CXgkqLhahBbk+5l3ibHCHrr7Xigl/a2NHtNBosbD+Rul1oGjogY1Si1ryexJBkRGEQj70oPDUeMzw3VudR3BggpvUJVd+QGlg0iuDm5F5EkGinPsuIafQqY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FAMvCQqV; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FAMvCQqV" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-45ef82204c6so1222508f8f.3 for ; Mon, 01 Jun 2026 08:19:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327146; x=1780931946; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1uoK+GZiJZRejvW6eSXJ+S3xFesyWPmt9UXpzysD2No=; b=FAMvCQqVOWZUw3qoeP1+NBx7u+NYlMPNip5Wl2f+4axzFVahyybOMsPU/C9HDBa85F bSLKkWdsG3xJDhoEIFq/uvIsKchjjSKb9KAUTJ8Q1/dbp3nPvLG0+b8qtRxQ5+CFobgR RSaofHsLuMc8YcqTaIvhoGaCcb0QlZYlEFkke2GvgCsi0a03NbMr/lIVlgkKJiRG0uwi xvpjNV9F/ez6zQgWFJ3vR8LEhJm25w9iQVwlF+kbjfNXfa6lBL2SVBGF3hi77E2vO0gv qJnxfGRi8RDjbd8N+NyFsb8tVYQN1CnWLeYvAhZwuuhZ73XuhK/WPWZLZWyFnv4VbVif g4ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327146; x=1780931946; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1uoK+GZiJZRejvW6eSXJ+S3xFesyWPmt9UXpzysD2No=; b=V/pOgIz1JlyNIx6d/f7KovQWTVjz9VVxuIj+eJMnqcuOH/WSUfkFgUnoyRU/kVfK/r /FvI8YPvnx3+BxI0CJL/KMYnJOOc+i30yo/SNaxDCyCDmTm0UzvJ2jnC+RYK3Cg1yaKR +eFpKEp5hLkvVuFiGJpEx2nA8zm7TBCArHsmBWAQMRdlpSBr2KukLGYrG+rUW4kK+IMZ FfeRcERACrI1H4ovCeDZQN7SbSREwNTM2AuU1tEFOj6yLlNiWBxJXnswMu4n1mptS7Dv t4e+L1KRW2MMuBq2+oLDznK3zOVdeqM9ZRYyWutr/bU1QJ1VmwPyoarEYn3IPEgRqoGx KwAA== X-Forwarded-Encrypted: i=1; AFNElJ/KWqSVnV8XHuBqve3Jk1ENXVzIqE/dVcmj2lsmzcBHv3hCG2nM+uNzMK1bXjR+sNF3B0BdoosOMorv26Y=@vger.kernel.org X-Gm-Message-State: AOJu0YxVhRCwZIGEe/icSRfdwMy5Qpm6yfCqKyUEGT0FybyQzZj4jz0X I202E1R+1yTwmnuBts4iVkRV9DQA5bgEtxoSA4wXRWovbuixhd6F4qOS X-Gm-Gg: Acq92OHC0+JAHwS4ptH6E0gqIYvrKXRdCr+Ymao6bkf1xfaz8K5FzcrioO3shyZevj4 FZev/xwHvp7Gm6n2qyur4l0hYsEKpH0xIZSgfR/SOiEFQCzMJJCKIPpw2swPNx+VhsVi2BOFMTw OTHzpvQKZnngSB1+FL49iEp89KJntQcY+ATK1gExOIs8qCbqHg1U78GPp3zOB1HaXSSwpzLiCX5 FE4MTHlah0jQzdbUHeg84uoQKmFfwrVLIxkpGQNM4BhIYQf/DFAr4g9Z/bVFYa0OodWR8dPXYG5 uU9hzl+rsi+EwTTivkhgf2jtCtbohjuoDiW39+VXBZrbjuIUORCQRb+0cIztxAeeyvtHFC0xCjY ypeDQEKCz+Vph3hUIxHaBOzzKaTkd8fJRoOY6U++MIiUZENzZvFzraejpyi3g3Q5gWdb+NtHHnI jkCxr7h3DBnQWt4AEyOVPUv2walug0Tyk2mg== X-Received: by 2002:a5d:6e11:0:b0:45e:f28e:a00d with SMTP id ffacd0b85a97d-45ef6b3aa6cmr16833901f8f.16.1780327145415; Mon, 01 Jun 2026 08:19:05 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.19.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:19:04 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 05/11] mfd: lm3533: Convert to use OF bindings Date: Mon, 1 Jun 2026 18:18:25 +0300 Message-ID: <20260601151831.76350-6-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Since there are no users of this driver via platform data, remove the platform data support and switch to using Device Tree bindings. Signed-off-by: Svyatoslav Ryhel Reviewed-by: Daniel Thompson (RISCstar) #for backlight --- drivers/iio/light/lm3533-als.c | 69 +++++---- drivers/leds/leds-lm3533.c | 51 ++++-- drivers/mfd/lm3533-core.c | 232 ++++++++++++---------------- drivers/mfd/lm3533-ctrlbank.c | 5 - drivers/video/backlight/lm3533_bl.c | 58 ++++--- include/linux/mfd/lm3533.h | 52 +------ 6 files changed, 222 insertions(+), 245 deletions(-) diff --git a/drivers/iio/light/lm3533-als.c b/drivers/iio/light/lm3533-als.c index 52136ca1abc9..55b35467a722 100644 --- a/drivers/iio/light/lm3533-als.c +++ b/drivers/iio/light/lm3533-als.c @@ -16,16 +16,19 @@ #include #include #include +#include #include +#include #include #include #include +#include =20 #include =20 =20 -#define LM3533_ALS_RESISTOR_MIN 1 -#define LM3533_ALS_RESISTOR_MAX 127 +#define LM3533_ALS_RESISTOR_MIN 1575 +#define LM3533_ALS_RESISTOR_MAX 200000 #define LM3533_ALS_CHANNEL_CURRENT_MAX 2 #define LM3533_ALS_THRESH_MAX 3 #define LM3533_ALS_ZONE_MAX 4 @@ -57,6 +60,9 @@ struct lm3533_als { =20 atomic_t zone; struct mutex thresh_mutex; + + bool pwm_mode; + u32 r_select; }; =20 =20 @@ -411,7 +417,7 @@ static ssize_t show_thresh_either_en(struct device *dev, int enable; int ret; =20 - if (als->irq) { + if (als->irq > 0) { ret =3D lm3533_als_get_int_mode(indio_dev, &enable); if (ret) return ret; @@ -716,30 +722,34 @@ static const struct attribute_group lm3533_als_attrib= ute_group =3D { .attrs =3D lm3533_als_attributes }; =20 -static int lm3533_als_setup(struct lm3533_als *als, - const struct lm3533_als_platform_data *pdata) +static int lm3533_als_setup(struct lm3533_als *als) { struct device *dev =3D &als->pdev->dev; int ret; =20 + als->pwm_mode =3D device_property_read_bool(dev, "ti,pwm-mode"); + ret =3D regmap_update_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, LM3533_ALS_INPUT_MODE_MASK, - pdata->pwm_mode ? LM3533_ALS_INPUT_MODE_MASK : 0); + als->pwm_mode ? LM3533_ALS_INPUT_MODE_MASK : 0); if (ret) return dev_err_probe(dev, ret, "failed to set input mode %d\n", - pdata->pwm_mode); - + als->pwm_mode); =20 /* ALS input is always high impedance in PWM-mode. */ - if (!pdata->pwm_mode) { - if (pdata->r_select < LM3533_ALS_RESISTOR_MIN || - pdata->r_select > LM3533_ALS_RESISTOR_MAX) { - dev_err(&als->pdev->dev, "invalid resistor value\n"); - return -EINVAL; - } + if (!als->pwm_mode) { + ret =3D device_property_read_u32(dev, "ti,resistor-value-ohms", + &als->r_select); + if (ret) + return dev_err_probe(dev, ret, + "failed to ger resistor value\n"); + + als->r_select =3D clamp(als->r_select, LM3533_ALS_RESISTOR_MIN, + LM3533_ALS_RESISTOR_MAX); + als->r_select =3D DIV_ROUND_UP(2 * MICRO, 10 * als->r_select); =20 ret =3D regmap_write(als->lm3533->regmap, LM3533_REG_ALS_RESISTOR_SELECT, - pdata->r_select); + als->r_select); if (ret) return dev_err_probe(dev, ret, "failed to set resistor\n"); } @@ -806,7 +816,6 @@ static const struct iio_info lm3533_als_info =3D { =20 static int lm3533_als_probe(struct platform_device *pdev) { - const struct lm3533_als_platform_data *pdata; struct lm3533 *lm3533; struct lm3533_als *als; struct iio_dev *indio_dev; @@ -816,12 +825,6 @@ static int lm3533_als_probe(struct platform_device *pd= ev) if (!lm3533) return -EINVAL; =20 - pdata =3D dev_get_platdata(&pdev->dev); - if (!pdata) { - dev_err(&pdev->dev, "no platform data\n"); - return -EINVAL; - } - indio_dev =3D devm_iio_device_alloc(&pdev->dev, sizeof(*als)); if (!indio_dev) return -ENOMEM; @@ -830,25 +833,28 @@ static int lm3533_als_probe(struct platform_device *p= dev) indio_dev->channels =3D lm3533_als_channels; indio_dev->num_channels =3D ARRAY_SIZE(lm3533_als_channels); indio_dev->name =3D dev_name(&pdev->dev); - iio_device_set_parent(indio_dev, pdev->dev.parent); indio_dev->modes =3D INDIO_DIRECT_MODE; =20 als =3D iio_priv(indio_dev); als->lm3533 =3D lm3533; als->pdev =3D pdev; - als->irq =3D lm3533->irq; + als->irq =3D platform_get_irq_optional(pdev, 0); + + if (als->irq =3D=3D -EPROBE_DEFER) + return -EPROBE_DEFER; + atomic_set(&als->zone, 0); mutex_init(&als->thresh_mutex); =20 platform_set_drvdata(pdev, indio_dev); =20 - if (als->irq) { + if (als->irq > 0) { ret =3D lm3533_als_setup_irq(als, indio_dev); if (ret) return ret; } =20 - ret =3D lm3533_als_setup(als, pdata); + ret =3D lm3533_als_setup(als); if (ret) goto err_free_irq; =20 @@ -867,7 +873,7 @@ static int lm3533_als_probe(struct platform_device *pde= v) err_disable: lm3533_als_disable(als); err_free_irq: - if (als->irq) + if (als->irq > 0) free_irq(als->irq, indio_dev); =20 return ret; @@ -881,13 +887,20 @@ static void lm3533_als_remove(struct platform_device = *pdev) lm3533_als_set_int_mode(indio_dev, false); iio_device_unregister(indio_dev); lm3533_als_disable(als); - if (als->irq) + if (als->irq > 0) free_irq(als->irq, indio_dev); } =20 +static const struct of_device_id lm3533_als_match_table[] =3D { + { .compatible =3D "ti,lm3533-als" }, + { } +}; +MODULE_DEVICE_TABLE(of, lm3533_als_match_table); + static struct platform_driver lm3533_als_driver =3D { .driver =3D { .name =3D "lm3533-als", + .of_match_table =3D lm3533_als_match_table, }, .probe =3D lm3533_als_probe, .remove =3D lm3533_als_remove, diff --git a/drivers/leds/leds-lm3533.c b/drivers/leds/leds-lm3533.c index 51ff61aee75c..f2502daf450d 100644 --- a/drivers/leds/leds-lm3533.c +++ b/drivers/leds/leds-lm3533.c @@ -10,8 +10,10 @@ #include #include #include +#include #include #include +#include #include #include =20 @@ -49,6 +51,9 @@ struct lm3533_led { =20 struct mutex mutex; unsigned long flags; + + u32 max_current; + u32 pwm; }; =20 =20 @@ -634,22 +639,20 @@ static const struct attribute_group *lm3533_led_attri= bute_groups[] =3D { NULL }; =20 -static int lm3533_led_setup(struct lm3533_led *led, - struct lm3533_led_platform_data *pdata) +static int lm3533_led_setup(struct lm3533_led *led) { int ret; =20 - ret =3D lm3533_ctrlbank_set_max_current(&led->cb, pdata->max_current); + ret =3D lm3533_ctrlbank_set_max_current(&led->cb, led->max_current); if (ret) return ret; =20 - return lm3533_ctrlbank_set_pwm(&led->cb, pdata->pwm); + return lm3533_ctrlbank_set_pwm(&led->cb, led->pwm); } =20 static int lm3533_led_probe(struct platform_device *pdev) { struct lm3533 *lm3533; - struct lm3533_led_platform_data *pdata; struct lm3533_led *led; int ret; =20 @@ -659,12 +662,6 @@ static int lm3533_led_probe(struct platform_device *pd= ev) if (!lm3533) return -EINVAL; =20 - pdata =3D dev_get_platdata(&pdev->dev); - if (!pdata) { - dev_err(&pdev->dev, "no platform data\n"); - return -EINVAL; - } - if (pdev->id < 0 || pdev->id >=3D LM3533_LVCTRLBANK_COUNT) { dev_err(&pdev->dev, "illegal LED id %d\n", pdev->id); return -EINVAL; @@ -675,8 +672,6 @@ static int lm3533_led_probe(struct platform_device *pde= v) return -ENOMEM; =20 led->lm3533 =3D lm3533; - led->cdev.name =3D pdata->name; - led->cdev.default_trigger =3D pdata->default_trigger; led->cdev.brightness_set_blocking =3D lm3533_led_set; led->cdev.brightness_get =3D lm3533_led_get; led->cdev.blink_set =3D lm3533_led_blink_set; @@ -684,6 +679,15 @@ static int lm3533_led_probe(struct platform_device *pd= ev) led->cdev.groups =3D lm3533_led_attribute_groups; led->id =3D pdev->id; =20 + led->cdev.name =3D devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s-%d", + pdev->name, led->id); + if (!led->cdev.name) + return -ENOMEM; + + led->cdev.default_trigger =3D "none"; + device_property_read_string(&pdev->dev, "linux,default-trigger", + &led->cdev.default_trigger); + mutex_init(&led->mutex); =20 /* The class framework makes a callback to get brightness during @@ -696,15 +700,23 @@ static int lm3533_led_probe(struct platform_device *p= dev) =20 platform_set_drvdata(pdev, led); =20 - ret =3D led_classdev_register(pdev->dev.parent, &led->cdev); + ret =3D led_classdev_register(&pdev->dev, &led->cdev); if (ret) { - dev_err(&pdev->dev, "failed to register LED %d\n", pdev->id); + dev_err(&pdev->dev, "failed to register LED %d\n", led->id); return ret; } =20 led->cb.dev =3D led->cdev.dev; =20 - ret =3D lm3533_led_setup(led, pdata); + device_property_read_u32(&pdev->dev, "led-max-microamp", + &led->max_current); + led->max_current =3D clamp(led->max_current, LM3533_MAX_CURRENT_MIN, + LM3533_MAX_CURRENT_MAX); + + led->pwm =3D 0; + device_property_read_u32(&pdev->dev, "ti,pwm-config-mask", &led->pwm); + + ret =3D lm3533_led_setup(led); if (ret) goto err_deregister; =20 @@ -741,9 +753,16 @@ static void lm3533_led_shutdown(struct platform_device= *pdev) lm3533_led_set(&led->cdev, LED_OFF); /* disable blink */ } =20 +static const struct of_device_id lm3533_led_match_table[] =3D { + { .compatible =3D "ti,lm3533-leds" }, + { } +}; +MODULE_DEVICE_TABLE(of, lm3533_led_match_table); + static struct platform_driver lm3533_led_driver =3D { .driver =3D { .name =3D "lm3533-leds", + .of_match_table =3D lm3533_led_match_table, }, .probe =3D lm3533_led_probe, .remove =3D lm3533_led_remove, diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c index 45e7f7481aa0..d57c2cdf11c5 100644 --- a/drivers/mfd/lm3533-core.c +++ b/drivers/mfd/lm3533-core.c @@ -14,19 +14,26 @@ #include #include #include +#include +#include #include #include #include #include +#include =20 #include =20 =20 #define LM3533_BOOST_OVP_MASK 0x06 #define LM3533_BOOST_OVP_SHIFT 1 +#define LM3533_BOOST_OVP_MIN 16000000 +#define LM3533_BOOST_OVP_MAX 40000000 =20 #define LM3533_BOOST_FREQ_MASK 0x01 #define LM3533_BOOST_FREQ_SHIFT 0 +#define LM3533_BOOST_FREQ_MIN 500000 +#define LM3533_BOOST_FREQ_MAX 1000000 =20 #define LM3533_BL_ID_MASK 1 #define LM3533_LED_ID_MASK 3 @@ -35,6 +42,7 @@ =20 #define LM3533_HVLED_ID_MAX 2 #define LM3533_LVLED_ID_MAX 5 +#define LM3533_CELLS_MAX 7 =20 #define LM3533_REG_OUTPUT_CONF1 0x10 #define LM3533_REG_OUTPUT_CONF2 0x11 @@ -42,44 +50,6 @@ =20 #define LM3533_REG_MAX 0xb2 =20 - -static struct mfd_cell lm3533_als_devs[] =3D { - { - .name =3D "lm3533-als", - .id =3D -1, - }, -}; - -static struct mfd_cell lm3533_bl_devs[] =3D { - { - .name =3D "lm3533-backlight", - .id =3D 0, - }, - { - .name =3D "lm3533-backlight", - .id =3D 1, - }, -}; - -static struct mfd_cell lm3533_led_devs[] =3D { - { - .name =3D "lm3533-leds", - .id =3D 0, - }, - { - .name =3D "lm3533-leds", - .id =3D 1, - }, - { - .name =3D "lm3533-leds", - .id =3D 2, - }, - { - .name =3D "lm3533-leds", - .id =3D 3, - }, -}; - /* * HVLED output config -- output hvled controlled by backlight bl */ @@ -296,129 +266,101 @@ static struct attribute_group lm3533_attribute_grou= p =3D { .attrs =3D lm3533_attributes }; =20 -static int lm3533_device_als_init(struct lm3533 *lm3533) -{ - struct lm3533_platform_data *pdata =3D dev_get_platdata(lm3533->dev); - int ret; - - if (!pdata->als) - return 0; - - lm3533_als_devs[0].platform_data =3D pdata->als; - lm3533_als_devs[0].pdata_size =3D sizeof(*pdata->als); - - ret =3D mfd_add_devices(lm3533->dev, 0, lm3533_als_devs, 1, NULL, - 0, NULL); - if (ret) { - dev_err(lm3533->dev, "failed to add ALS device\n"); - return ret; - } - - lm3533->have_als =3D 1; - - return 0; -} - -static int lm3533_device_bl_init(struct lm3533 *lm3533) +static int lm3533_device_init(struct lm3533 *lm3533) { - struct lm3533_platform_data *pdata =3D dev_get_platdata(lm3533->dev); - int i; + struct device *dev =3D lm3533->dev; + struct mfd_cell *lm3533_devices; + u32 count =3D 0, reg, nchilds; int ret; =20 - if (!pdata->backlights || pdata->num_backlights =3D=3D 0) - return 0; - - if (pdata->num_backlights > ARRAY_SIZE(lm3533_bl_devs)) - pdata->num_backlights =3D ARRAY_SIZE(lm3533_bl_devs); - - for (i =3D 0; i < pdata->num_backlights; ++i) { - lm3533_bl_devs[i].platform_data =3D &pdata->backlights[i]; - lm3533_bl_devs[i].pdata_size =3D sizeof(pdata->backlights[i]); + nchilds =3D device_get_child_node_count(dev); + if (!nchilds || nchilds > LM3533_CELLS_MAX) { + dev_err(dev, "num of child nodes is not supported\n"); + return -ENODEV; } =20 - ret =3D mfd_add_devices(lm3533->dev, 0, lm3533_bl_devs, - pdata->num_backlights, NULL, 0, NULL); - if (ret) { - dev_err(lm3533->dev, "failed to add backlight devices\n"); - return ret; - } - - lm3533->have_backlights =3D 1; - - return 0; -} - -static int lm3533_device_led_init(struct lm3533 *lm3533) -{ - struct lm3533_platform_data *pdata =3D dev_get_platdata(lm3533->dev); - int i; - int ret; - - if (!pdata->leds || pdata->num_leds =3D=3D 0) - return 0; + lm3533_devices =3D devm_kcalloc(dev, nchilds, sizeof(*lm3533_devices), + GFP_KERNEL); + if (!lm3533_devices) + return -ENOMEM; =20 - if (pdata->num_leds > ARRAY_SIZE(lm3533_led_devs)) - pdata->num_leds =3D ARRAY_SIZE(lm3533_led_devs); + device_for_each_child_node_scoped(lm3533->dev, child) { + if (!fwnode_device_is_available(child)) + continue; =20 - for (i =3D 0; i < pdata->num_leds; ++i) { - lm3533_led_devs[i].platform_data =3D &pdata->leds[i]; - lm3533_led_devs[i].pdata_size =3D sizeof(pdata->leds[i]); - } + if (count >=3D nchilds) + break; =20 - ret =3D mfd_add_devices(lm3533->dev, 0, lm3533_led_devs, - pdata->num_leds, NULL, 0, NULL); - if (ret) { - dev_err(lm3533->dev, "failed to add LED devices\n"); - return ret; - } + if (fwnode_device_is_compatible(child, "ti,lm3533-als")) { + lm3533_devices[count].name =3D "lm3533-als"; + lm3533_devices[count].id =3D PLATFORM_DEVID_NONE; + lm3533_devices[count].of_compatible =3D "ti,lm3533-als"; =20 - lm3533->have_leds =3D 1; + lm3533->have_als =3D true; + count++; + } =20 - return 0; -} + if (fwnode_device_is_compatible(child, "ti,lm3533-backlight")) { + ret =3D fwnode_property_read_u32(child, "reg", ®); + if (ret || reg >=3D LM3533_HVLED_ID_MAX) { + dev_err(dev, "invalid backlight node %s\n", + fwnode_get_name(child)); + continue; + } =20 -static int lm3533_device_init(struct lm3533 *lm3533) -{ - struct lm3533_platform_data *pdata =3D dev_get_platdata(lm3533->dev); - int ret; + lm3533_devices[count].name =3D "lm3533-backlight"; + lm3533_devices[count].id =3D reg; + lm3533_devices[count].of_compatible =3D "ti,lm3533-backlight"; =20 - dev_dbg(lm3533->dev, "%s\n", __func__); + lm3533->have_backlights =3D true; + count++; + } =20 - if (!pdata) { - dev_err(lm3533->dev, "no platform data\n"); - return -EINVAL; + if (fwnode_device_is_compatible(child, "ti,lm3533-leds")) { + ret =3D fwnode_property_read_u32(child, "reg", ®); + if (ret || reg < LM3533_HVLED_ID_MAX || + reg > LM3533_LVLED_ID_MAX) { + dev_err(dev, "invalid LED node %s\n", + fwnode_get_name(child)); + continue; + } + + lm3533_devices[count].name =3D "lm3533-leds"; + lm3533_devices[count].id =3D reg - LM3533_HVLED_ID_MAX; + lm3533_devices[count].of_compatible =3D "ti,lm3533-leds"; + + lm3533->have_leds =3D true; + count++; + } } =20 - lm3533->hwen =3D devm_gpiod_get(lm3533->dev, NULL, GPIOD_OUT_LOW); - if (IS_ERR(lm3533->hwen)) - return dev_err_probe(lm3533->dev, PTR_ERR(lm3533->hwen), "failed to requ= est HWEN GPIO\n"); - gpiod_set_consumer_name(lm3533->hwen, "lm3533-hwen"); - lm3533_enable(lm3533); =20 ret =3D regmap_update_bits(lm3533->regmap, LM3533_REG_BOOST_PWM, LM3533_BOOST_FREQ_MASK, - pdata->boost_freq << LM3533_BOOST_FREQ_SHIFT); + lm3533->boost_freq << LM3533_BOOST_FREQ_SHIFT); if (ret) { - dev_err(lm3533->dev, "failed to set boost frequency\n"); + dev_err(dev, "failed to set boost frequency\n"); goto err_disable; } =20 ret =3D regmap_update_bits(lm3533->regmap, LM3533_REG_BOOST_PWM, LM3533_BOOST_OVP_MASK, - pdata->boost_ovp << LM3533_BOOST_OVP_SHIFT); + lm3533->boost_ovp << LM3533_BOOST_OVP_SHIFT); if (ret) { - dev_err(lm3533->dev, "failed to set boost ovp\n"); + dev_err(dev, "failed to set boost ovp\n"); goto err_disable; } =20 - lm3533_device_als_init(lm3533); - lm3533_device_bl_init(lm3533); - lm3533_device_led_init(lm3533); + ret =3D mfd_add_devices(dev, 0, lm3533_devices, count, NULL, 0, NULL); + if (ret) { + dev_err(dev, "failed to add MFD devices: %d\n", ret); + goto err_disable; + } =20 - ret =3D sysfs_create_group(&lm3533->dev->kobj, &lm3533_attribute_group); - if (ret < 0) { - dev_err(lm3533->dev, "failed to create sysfs attributes\n"); + ret =3D sysfs_create_group(&dev->kobj, &lm3533_attribute_group); + if (ret) { + dev_err(dev, "failed to create sysfs attributes\n"); goto err_unregister; } =20 @@ -509,7 +451,26 @@ static int lm3533_i2c_probe(struct i2c_client *i2c) return PTR_ERR(lm3533->regmap); =20 lm3533->dev =3D &i2c->dev; - lm3533->irq =3D i2c->irq; + + lm3533->hwen =3D devm_gpiod_get_optional(lm3533->dev, "enable", + GPIOD_OUT_LOW); + if (IS_ERR(lm3533->hwen)) + return dev_err_probe(lm3533->dev, PTR_ERR(lm3533->hwen), + "failed to get HWEN GPIO\n"); + + device_property_read_u32(lm3533->dev, "ti,boost-ovp-microvolt", + &lm3533->boost_ovp); + + lm3533->boost_ovp =3D clamp(lm3533->boost_ovp, LM3533_BOOST_OVP_MIN, + LM3533_BOOST_OVP_MAX); + lm3533->boost_ovp =3D lm3533->boost_ovp / (8 * MICRO) - 2; + + device_property_read_u32(lm3533->dev, "ti,boost-freq-hz", + &lm3533->boost_freq); + + lm3533->boost_freq =3D clamp(lm3533->boost_freq, LM3533_BOOST_FREQ_MIN, + LM3533_BOOST_FREQ_MAX); + lm3533->boost_freq =3D lm3533->boost_freq / (500 * KILO) - 1; =20 return lm3533_device_init(lm3533); } @@ -523,6 +484,12 @@ static void lm3533_i2c_remove(struct i2c_client *i2c) lm3533_device_exit(lm3533); } =20 +static const struct of_device_id lm3533_match_table[] =3D { + { .compatible =3D "ti,lm3533" }, + { } +}; +MODULE_DEVICE_TABLE(of, lm3533_match_table); + static const struct i2c_device_id lm3533_i2c_ids[] =3D { { "lm3533" }, { } @@ -532,6 +499,7 @@ MODULE_DEVICE_TABLE(i2c, lm3533_i2c_ids); static struct i2c_driver lm3533_i2c_driver =3D { .driver =3D { .name =3D "lm3533", + .of_match_table =3D lm3533_match_table, }, .id_table =3D lm3533_i2c_ids, .probe =3D lm3533_i2c_probe, diff --git a/drivers/mfd/lm3533-ctrlbank.c b/drivers/mfd/lm3533-ctrlbank.c index 37bae279f41e..63543ecd815f 100644 --- a/drivers/mfd/lm3533-ctrlbank.c +++ b/drivers/mfd/lm3533-ctrlbank.c @@ -13,11 +13,6 @@ =20 #include =20 - -#define LM3533_MAX_CURRENT_MIN 5000 -#define LM3533_MAX_CURRENT_MAX 29800 -#define LM3533_MAX_CURRENT_STEP 800 - #define LM3533_PWM_MAX 0x3f =20 #define LM3533_REG_PWM_BASE 0x14 diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/= lm3533_bl.c index 5c8e69087860..c70b8a3bb301 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -9,7 +9,9 @@ =20 #include #include +#include #include +#include #include #include #include @@ -28,6 +30,9 @@ struct lm3533_bl { struct lm3533_ctrlbank cb; struct backlight_device *bd; int id; + + u32 max_current; + u32 pwm; }; =20 =20 @@ -247,25 +252,24 @@ static struct attribute_group lm3533_bl_attribute_gro= up =3D { .attrs =3D lm3533_bl_attributes }; =20 -static int lm3533_bl_setup(struct lm3533_bl *bl, - struct lm3533_bl_platform_data *pdata) +static int lm3533_bl_setup(struct lm3533_bl *bl) { int ret; =20 - ret =3D lm3533_ctrlbank_set_max_current(&bl->cb, pdata->max_current); + ret =3D lm3533_ctrlbank_set_max_current(&bl->cb, bl->max_current); if (ret) return ret; =20 - return lm3533_ctrlbank_set_pwm(&bl->cb, pdata->pwm); + return lm3533_ctrlbank_set_pwm(&bl->cb, bl->pwm); } =20 static int lm3533_bl_probe(struct platform_device *pdev) { struct lm3533 *lm3533; - struct lm3533_bl_platform_data *pdata; struct lm3533_bl *bl; struct backlight_device *bd; struct backlight_properties props; + char *name =3D NULL; int ret; =20 dev_dbg(&pdev->dev, "%s\n", __func__); @@ -274,12 +278,6 @@ static int lm3533_bl_probe(struct platform_device *pde= v) if (!lm3533) return -EINVAL; =20 - pdata =3D dev_get_platdata(&pdev->dev); - if (!pdata) { - dev_err(&pdev->dev, "no platform data\n"); - return -EINVAL; - } - if (pdev->id < 0 || pdev->id >=3D LM3533_HVCTRLBANK_COUNT) { dev_err(&pdev->dev, "illegal backlight id %d\n", pdev->id); return -EINVAL; @@ -296,13 +294,20 @@ static int lm3533_bl_probe(struct platform_device *pd= ev) bl->cb.id =3D lm3533_bl_get_ctrlbank_id(bl); bl->cb.dev =3D NULL; /* until registered */ =20 + name =3D devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s-%d", + pdev->name, pdev->id); + if (!name) + return -ENOMEM; + memset(&props, 0, sizeof(props)); props.type =3D BACKLIGHT_RAW; props.max_brightness =3D LM3533_BL_MAX_BRIGHTNESS; - props.brightness =3D pdata->default_brightness; - bd =3D devm_backlight_device_register(&pdev->dev, pdata->name, - pdev->dev.parent, bl, &lm3533_bl_ops, - &props); + props.brightness =3D LM3533_BL_MAX_BRIGHTNESS; + device_property_read_u32(&pdev->dev, "default-brightness", + &props.brightness); + + bd =3D devm_backlight_device_register(&pdev->dev, name, &pdev->dev, + bl, &lm3533_bl_ops, &props); if (IS_ERR(bd)) { dev_err(&pdev->dev, "failed to register backlight device\n"); return PTR_ERR(bd); @@ -313,6 +318,18 @@ static int lm3533_bl_probe(struct platform_device *pde= v) =20 platform_set_drvdata(pdev, bl); =20 + device_property_read_u32(&pdev->dev, "led-max-microamp", + &bl->max_current); + bl->max_current =3D clamp(bl->max_current, LM3533_MAX_CURRENT_MIN, + LM3533_MAX_CURRENT_MAX); + + bl->pwm =3D 0; + device_property_read_u32(&pdev->dev, "ti,pwm-config-mask", &bl->pwm); + + ret =3D lm3533_bl_setup(bl); + if (ret) + return ret; + ret =3D sysfs_create_group(&bd->dev.kobj, &lm3533_bl_attribute_group); if (ret < 0) { dev_err(&pdev->dev, "failed to create sysfs attributes\n"); @@ -321,10 +338,6 @@ static int lm3533_bl_probe(struct platform_device *pde= v) =20 backlight_update_status(bd); =20 - ret =3D lm3533_bl_setup(bl, pdata); - if (ret) - goto err_sysfs_remove; - ret =3D lm3533_ctrlbank_enable(&bl->cb); if (ret) goto err_sysfs_remove; @@ -382,10 +395,17 @@ static void lm3533_bl_shutdown(struct platform_device= *pdev) lm3533_ctrlbank_disable(&bl->cb); } =20 +static const struct of_device_id lm3533_bl_match_table[] =3D { + { .compatible =3D "ti,lm3533-backlight" }, + { } +}; +MODULE_DEVICE_TABLE(of, lm3533_bl_match_table); + static struct platform_driver lm3533_bl_driver =3D { .driver =3D { .name =3D "lm3533-backlight", .pm =3D &lm3533_bl_pm_ops, + .of_match_table =3D lm3533_bl_match_table, }, .probe =3D lm3533_bl_probe, .remove =3D lm3533_bl_remove, diff --git a/include/linux/mfd/lm3533.h b/include/linux/mfd/lm3533.h index db0a5e5c9e39..3fd8d4737ea5 100644 --- a/include/linux/mfd/lm3533.h +++ b/include/linux/mfd/lm3533.h @@ -15,6 +15,10 @@ #define LM3533_ATTR_RW(_name) \ DEVICE_ATTR(_name, S_IRUGO | S_IWUSR , show_##_name, store_##_name) =20 +#define LM3533_MAX_CURRENT_MIN 5000 +#define LM3533_MAX_CURRENT_MAX 29800 +#define LM3533_MAX_CURRENT_STEP 800 + struct device; struct gpio_desc; struct regmap; @@ -25,7 +29,9 @@ struct lm3533 { struct regmap *regmap; =20 struct gpio_desc *hwen; - int irq; + + u32 boost_ovp; + u32 boost_freq; =20 unsigned have_als:1; unsigned have_backlights:1; @@ -38,50 +44,6 @@ struct lm3533_ctrlbank { int id; }; =20 -struct lm3533_als_platform_data { - unsigned pwm_mode:1; /* PWM input mode (default analog) */ - u8 r_select; /* 1 - 127 (ignored in PWM-mode) */ -}; - -struct lm3533_bl_platform_data { - char *name; - u16 max_current; /* 5000 - 29800 uA (800 uA step) */ - u8 default_brightness; /* 0 - 255 */ - u8 pwm; /* 0 - 0x3f */ -}; - -struct lm3533_led_platform_data { - char *name; - const char *default_trigger; - u16 max_current; /* 5000 - 29800 uA (800 uA step) */ - u8 pwm; /* 0 - 0x3f */ -}; - -enum lm3533_boost_freq { - LM3533_BOOST_FREQ_500KHZ, - LM3533_BOOST_FREQ_1000KHZ, -}; - -enum lm3533_boost_ovp { - LM3533_BOOST_OVP_16V, - LM3533_BOOST_OVP_24V, - LM3533_BOOST_OVP_32V, - LM3533_BOOST_OVP_40V, -}; - -struct lm3533_platform_data { - enum lm3533_boost_ovp boost_ovp; - enum lm3533_boost_freq boost_freq; - - struct lm3533_als_platform_data *als; - - struct lm3533_bl_platform_data *backlights; - int num_backlights; - - struct lm3533_led_platform_data *leds; - int num_leds; -}; - extern int lm3533_ctrlbank_enable(struct lm3533_ctrlbank *cb); extern int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb); =20 --=20 2.51.0 From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B5B103DD51C for ; Mon, 1 Jun 2026 15:19:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327160; cv=none; b=TtuUMqYOeVRacTvLKdm87qwba2OeK8YwGzEHnDxgWdV4IyoVo+rMXA483lmz1zUjSQVQVg7NoVCLF/46dzsdP7ZAlwN8cUVezAYuZHSGe2O3i2xTwjgUXdfoWUg60EilsoDcSj0kbcioGmd8I2EF6wuvRaoE+MIMkkzblIJfjOw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327160; c=relaxed/simple; bh=1i1ud9qKyYnaqS2Sm7wFXRXPLupGr8dxgdr5XwdPNHM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=A6wqIJ0sHCattJed9O14QTOr/vKyN4wuwoSr4Hq6Kw7NMxIXqRMgA+FivpvFengGApz3934hBYG4bkxICiANZEJbUd5Bks27e/PzmGPRcvrigEaB4zctCO33xTK3FFfRf5poBFTWGDEzu7SWBVUqvgxWNtSI1Hr5QE0wDUJqD6E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=rIfDSjI6; arc=none smtp.client-ip=209.85.221.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="rIfDSjI6" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-45eeea039ebso1834858f8f.1 for ; Mon, 01 Jun 2026 08:19:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327147; x=1780931947; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=u1lcsLIobScldpWx6WSR7/N2rSVozhhuMPVVUCbPDt4=; b=rIfDSjI6/z7rwVmbqWC0I2U5pgX6TdSdLHrpyRURtet3XqpmAYtKwW8Vdlo3XdqCf4 W+UbSlRgSjszlfiAz3KANIuFsuuvJLxyFqO9ZtdrpiuRWGKbwe+0Kj6pCy+YV3iaeXJK BkfIcd7hFMkjXtoueKHt2hEJuA4zHRSd+mwv9mGQQlNiLWMI5796uMOzPeUTZ9/AyHCg AES8+CKpaGFJGqbLQPNLlEMH1tmy5Eaj3hWZGwSuP6XHZps/KvA7VFcgJtD5MUlRIrqf uMlWInZ4BoWZRF5vqHxKKpVGWPIBreE8BYxFi8C5IHyvgTRAnQRwn01CreithjA9vlAY JZ4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327147; x=1780931947; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=u1lcsLIobScldpWx6WSR7/N2rSVozhhuMPVVUCbPDt4=; b=aV4cRdkbAwHiq7fI7LBWwQhRRwIRe6waY8HFWJjL52v9g+Woh8nER6JjjYlIeLALKT ZrZeGgFlP07P+ceTiTTyQo353dRUZm+/LbF4dGPENWsLD/XmMmyMU/eZQ4Y4c2i8SPQf vPXyavELImRdK8P5gwuBOoX2TbLPHFmZjOFhXMSJvloDZtDwlGQxdkRtPs+jXEaQuxdK eNG+dOxA7o18R4K2viaoXl5tauWFnSMLrOUB5w9ZxM9vtmLP6nNzKGrVVHSYvp/lR6PY AyKlip3iErOnYvYW2/E9eY5bIkOSEGRpWGQl7lG0djtxJZTvpjkyUPozJ43U19RrzM7Z JK8g== X-Forwarded-Encrypted: i=1; AFNElJ8lyDLtBnYR1kIR+dXPBzSOug3CEMq8zNi7KKLsFG4kPDx2znfzpHgW5psn/1CCICYYqtq0D8SPetyf02I=@vger.kernel.org X-Gm-Message-State: AOJu0Yy4gOBW1LBbEvYMiDQFj0icxocY7CnY0jh/IRbEj2PTtk11xBzC TxdPkesmziNvzGn9T6NUdGgvEFmyt37oHIrPa/abOjQ4RyYw2B2q8YBd X-Gm-Gg: Acq92OFNjli3zOtKzfMub9VPmofuFsmADFDkCNYpppCXzkx8qbinwiqbYUJhfn3Gwgd JKF+2EvKaM9uccQW94iAuq3jeSlfioqjoWa7xMlvjvRFf5WBsYqWODascXqVAts/Z7/FOKtG9TA 8/U/Go2O8durtYtpqXWp6w0bag9Bsf22u4TaXbwOz1FRym43yVHcC2qLlCVFHZJjkM3x5XUEZ8d TgIwoKrWrrvSr1eAG/qTGYgREkNZkQCsxD924t35B1xHXOxroa0Vhu8XunePG+LR3hsoHA7rAKp iX/t5KmgGeOFrC5Xa/RikHGp6221bXoz+G1aA1Lksc+VpXQsLe0zgIqVjhls0raEHlLOKXV4Al/ IbQe4yCGawPg+ab58a6/0WxuOaQq4UM8f6S2xJ8QO3tg1LFqhGtO+FlVeUYA/M+uxvwSoIgSrHU 3EPUAfnoO+wXu/h6FEq+0ZJhA= X-Received: by 2002:a05:6000:40c7:b0:460:cfc:eb24 with SMTP id ffacd0b85a97d-4600cfced10mr13759481f8f.22.1780327146823; Mon, 01 Jun 2026 08:19:06 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.19.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:19:06 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 06/11] mfd: lm3533: Add support for VIN power supply Date: Mon, 1 Jun 2026 18:18:26 +0300 Message-ID: <20260601151831.76350-7-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add support for 2.7V-5.5V VIN power supply. Signed-off-by: Svyatoslav Ryhel --- drivers/mfd/lm3533-core.c | 23 +++++++++++++++++++++-- include/linux/mfd/lm3533.h | 2 ++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c index d57c2cdf11c5..4dca5641b774 100644 --- a/drivers/mfd/lm3533-core.c +++ b/drivers/mfd/lm3533-core.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -113,14 +114,25 @@ static int lm3533_set_lvled_config(struct lm3533 *lm3= 533, u8 lvled, u8 led) return ret; } =20 -static void lm3533_enable(struct lm3533 *lm3533) +static int lm3533_enable(struct lm3533 *lm3533) { + int ret; + + ret =3D regulator_enable(lm3533->vin_supply); + if (ret) { + dev_err(lm3533->dev, "failed to enable vin power supply\n"); + return ret; + } + gpiod_set_value(lm3533->hwen, 1); + + return 0; } =20 static void lm3533_disable(struct lm3533 *lm3533) { gpiod_set_value(lm3533->hwen, 0); + regulator_disable(lm3533->vin_supply); } =20 enum lm3533_attribute_type { @@ -334,7 +346,9 @@ static int lm3533_device_init(struct lm3533 *lm3533) } } =20 - lm3533_enable(lm3533); + ret =3D lm3533_enable(lm3533); + if (ret) + return ret; =20 ret =3D regmap_update_bits(lm3533->regmap, LM3533_REG_BOOST_PWM, LM3533_BOOST_FREQ_MASK, @@ -458,6 +472,11 @@ static int lm3533_i2c_probe(struct i2c_client *i2c) return dev_err_probe(lm3533->dev, PTR_ERR(lm3533->hwen), "failed to get HWEN GPIO\n"); =20 + lm3533->vin_supply =3D devm_regulator_get(lm3533->dev, "vin"); + if (IS_ERR(lm3533->vin_supply)) + return dev_err_probe(lm3533->dev, PTR_ERR(lm3533->vin_supply), + "failed to get vin-supply\n"); + device_property_read_u32(lm3533->dev, "ti,boost-ovp-microvolt", &lm3533->boost_ovp); =20 diff --git a/include/linux/mfd/lm3533.h b/include/linux/mfd/lm3533.h index 3fd8d4737ea5..9ee99be93d9b 100644 --- a/include/linux/mfd/lm3533.h +++ b/include/linux/mfd/lm3533.h @@ -22,6 +22,7 @@ struct device; struct gpio_desc; struct regmap; +struct regulator; =20 struct lm3533 { struct device *dev; @@ -29,6 +30,7 @@ struct lm3533 { struct regmap *regmap; =20 struct gpio_desc *hwen; + struct regulator *vin_supply; =20 u32 boost_ovp; u32 boost_freq; --=20 2.51.0 From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8F65B3DD86D for ; Mon, 1 Jun 2026 15:19:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327164; cv=none; b=QvX2C1krtlnqUf+HrAW4SsI/fCMwAO8MA0I83Q49tLJ7z6lWiDdTfzkIxOJwfKz+GNSaXqfmX8NsgrVejP0cGvbHOW/z8rJSUuONdkoAO1AuJ+63lBlsDaaxGFCZeOKtAQ+VmaeVZkWLRcBBwDECbYR3V1zMK1MgbHGxlnb7cP0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327164; c=relaxed/simple; bh=x5K4xFRFiQMCHrQaFBke2R9ygwO72RPNpHJKJvM5Ef4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C9yMPi7ulHolV/POY5s/fOotRlEwmi2FshUzDik1++KgTkkFPUPw0mI0CdPVV5sZkEmFKMLPoXarXNpVfIBBto9blXhAyzEPRdeZ+ZGM8W0TsIHNvR+EyNEqaehe5R5FiJ6BrLtL1fSWImAtOQlhdjTOYGmOCsYR4/iJtIoruDA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=li2x1C4P; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="li2x1C4P" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-45eedc94d37so2038862f8f.3 for ; Mon, 01 Jun 2026 08:19:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327148; x=1780931948; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1p24QeWuEOdkZHaL1V7uOjlrxK/vJ1VAKn0KvK7P92s=; b=li2x1C4PiZsuigqBQgmGPTakdR5fFV/3WLVzPcpYVZL0X2xEi3lq6jjWq3+Q3M/IXr TTP7uawhaRSjKjbM8dUWLmlb4yohmVNpvKZQTpaFlkWfZEelDbjdJ889AMRWxE8qvUCT oxMYi69LCvHXYT1VM0MnARsd8KMYysw5y03KBEqL20D4mYbzSXKfOBr0+gFqg6ClMtiZ KNrU3KI9U8zQhcBvKkNkyoFAE7HZ0YeljoE96sV1UEmTk075TIt3UJ+0GYausJlaFDT0 YwxrwQFSnyHWhL33LdSAlI7TmHVST9XlMXOkieaO6s0q11zD+zTfF0M9Da5VohrOsnJJ biTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327148; x=1780931948; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1p24QeWuEOdkZHaL1V7uOjlrxK/vJ1VAKn0KvK7P92s=; b=HNL90tlrmKEjmymUn8E5QBqFELYg2R50i+yHjoN8I+IETUyDa8HiVJmZmA2QR/eDSH 4AODePE9KVmP4pvn3A5RyA6m4arqwC7Yr/eKKyleKevv1xE1PC8NHCkuzxMEyislhOLc TVzJN+oxpC1sfteS0fYD4ZJGHzVx9qSJ7AN8NsBkGiwyMB0TPHWkbPcGpj0ktcnDh1w4 QE+lVDZ5BerkhxDOv5B+WpO9+WM+tnGHsHyenMfEuLqLDq6IxAy7azogLZ5W3oUuJ/fA 66tp8lZMw9C/r7RtAKz5XUD+VJ5lYehVDkG6JiA+jVAQjUJ7gQPJYXOc4QOFZXPWbaW0 8AEw== X-Forwarded-Encrypted: i=1; AFNElJ8oYQdCUBTHl53kd7OAE7MRP5KlxO6mGUxgrgoGmkv3/diaQP2fvN7rR5dKcGIQbQNIDUWHY4jVxhIF2F8=@vger.kernel.org X-Gm-Message-State: AOJu0Ywvo5X1V9dAddw091vew2L0xmM4HB8VwkxX/vjW8t/9iujStImR VkzYSjC0KPsrTxuukzLoS6PSO2w3m6Kvi2YTxWnQZ0cWWooguMj7n6w+ X-Gm-Gg: Acq92OFqU83BluGoi82I6CTPPkz9PPFkWhaoGJQfb5IPUABs3lO3gKlkh8+aA5SbNxb jHyru2FiFCjAL1SyEgBPH8t1WvaKxt4nC6Tkads7QoDgJpKaK4NehpImcZOgm2Hk5SKo2b7fDCP MAV0gLRnABCiJC3ATVCa60kmftVbMmfRdpLy8QYJZwts6XvZFQM9YQHQXF2QJ7Evsok8m+t/J2M tKcSZ5mx7U3MFAdftzgVmYY/EdDElThdYYaojX6a7TfUm5t7bBpv+QLZGTQrslLh5Vw2xMz1cEx Xq45MWmM2aFm7/+OjLIsn7FquBgFUlBvZrD68Rth0Sarzo5/6U1C/NhPx519acCK2//xVX1KTzb WW77wjOYQKIUrQPtkc9fZ0lXXVAdPeAnyUuBV0aBn4VGiy1iYqpSMBUAodQZtLZHnvQwbP73GKJ utyR5nr6QpjB2P24JDXdzPgVw= X-Received: by 2002:a5d:5cd1:0:b0:43f:dd91:b022 with SMTP id ffacd0b85a97d-45ef6b791f1mr16538591f8f.35.1780327148356; Mon, 01 Jun 2026 08:19:08 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.19.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:19:07 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 07/11] mfd: lm3533: Set DMA mask Date: Mon, 1 Jun 2026 18:18:27 +0300 Message-ID: <20260601151831.76350-8-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Missing coherent_dma_mask assigning triggers the following warning in dmesg: [ 3.287872] platform lm3533-backlight.0: DMA mask not set Since this warning might be elevated to an error in the future, set coherent_dma_mask to zero because both the core and cells do not utilize DMA. Signed-off-by: Svyatoslav Ryhel --- drivers/mfd/lm3533-core.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c index 4dca5641b774..b597d338d6f7 100644 --- a/drivers/mfd/lm3533-core.c +++ b/drivers/mfd/lm3533-core.c @@ -491,6 +491,10 @@ static int lm3533_i2c_probe(struct i2c_client *i2c) LM3533_BOOST_FREQ_MAX); lm3533->boost_freq =3D lm3533->boost_freq / (500 * KILO) - 1; =20 + /* LM3533 and child devices do not use DMA */ + i2c->dev.coherent_dma_mask =3D 0; + i2c->dev.dma_mask =3D &i2c->dev.coherent_dma_mask; + return lm3533_device_init(lm3533); } =20 --=20 2.51.0 From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB2C43DDDCD for ; Mon, 1 Jun 2026 15:19:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327164; cv=none; b=eHvMWhNrDkN7D6RwYlOglUPvhIW5kLbSy0czlGmI9o+0/ck8L/AfNYP0FOwRRgZvJpXQUChwCoTkty6CqSmfZgNhKiOWOAJ5tm+A5+Ur4ZVPIQLEGxKPDdhgpNekIJnDS4zb27NSqBgJyfIh67uEAm4K57vB7lWQ5OlgW1hs0Gc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327164; c=relaxed/simple; bh=+XJVhU2zPkpnCe5OFCObMG1j3Sj/CGVdrvJ521UPM9U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VUS/atTWZyF2EuqnqOji5S4TcScGIQMPSc9n2yglzZT8aad4nwKNSmbUaUtVUxDLZbFFwzU/oUhto9STzeLr3HwFamWoqdSQOcgCfDan94sKbkj1rvR6JNFhPiUUQZayQUHj48USHejBoiZ9rRHaewVQ5ez7W1YQ+agsN5kUXTU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=V/pp/l99; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="V/pp/l99" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-4905529b933so78613195e9.0 for ; Mon, 01 Jun 2026 08:19:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327150; x=1780931950; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MeSJxuqtwsz6jGt+YVFicWB8+6LnFt3NUvnbNkDL/mA=; b=V/pp/l9948g7rakEOQUQ390K7N9kJ7sXVs2zB9cQnAKPZYPQ6sZ1YrD4Koy1xcdl84 HC4gfDOvOdMpPzk/qeXJLABpNiGwsBwt5ITlcPpK3PzkE6z8hJlsRgki1V1byJy0VWld 4SEsVODptC2xv8sv58A4/pQq4icscBd+TTnMfcbhYPLvyxdRtRqOU1C3T5cmPbSdrrXh azI4KW6a9DXfUyqgjRHlh15vBYBpRG+o/nGy30xa8l22ZjenhGeCEleWIyPfDLdnmklB Dc1T8b3lly7M0KBDW58x0yNaIBxrPdIfIIzzIOefLFzWsn17usNDYX46ATubZGo/QMMn pGsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327150; x=1780931950; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=MeSJxuqtwsz6jGt+YVFicWB8+6LnFt3NUvnbNkDL/mA=; b=MlvzT1odqWRRXVwHqIjGePDoHAboIjZFDxNIfJF1e1McaPyvD+Q260FYG3kX6Xqob+ A55ywRzlRlnoAFr4ZwKUgvOyTyrfGZLhU43Hz65Ypd/cVuqD+z0HesQPQok1gkOY62Xa EIU5NY8z0aONvzfkuF5QUBZ2TSy9TgxyIfiWX4mguUmP9EV3BvhLrI2MO7NpWoa3ADc2 sDqsI1UypPLVXrrZCDZ/thQZWmNnJRUJ1mfB1USYr32+sR7b3A7z5yEiniQ+JEEAj2UD 0CkohjE07AauGjGa6EpsisThRbOvdNqOywPMsbG8fj/IRhts7EDDUSL+F22FOI0NWwZI 8crw== X-Forwarded-Encrypted: i=1; AFNElJ8QyFj94MH//vj3UjC7hR2YvZs889iVmCOCwl02mUzf0fhooT/JW2XRDGDVmvlPif6/4Ywya7HBRQcOvOo=@vger.kernel.org X-Gm-Message-State: AOJu0YzvGPFgqxUThPlQmmtyzc+wo8R0erMp938IvMS9uLBUUGxxP3bh MsiHZP6D2iqVF5RUUozGZhQam5vx7LX1uzW5RdEIzu96+OAaXIuE2h5r X-Gm-Gg: Acq92OHLXmxS6IWH7bbsGmsxTF8nvW7fBA60qbQOp1XJ+zX8a/M/q37Vs758ImtCz2Z UP1BxrYgF/fIbuTTCmh7BMG7i8xU8sT+JCJhyT4qyeEEvlNVH1vLyP4zXsN/h8uSU2HuGEeUZHk mKbdc4Oz4toG4EshXHE3aup9rzr8MDa/5E5AQczf8pmjv2pc0CzVIZ191gNbHkPdgYfsgQ6x5Gq Rnh9BeunfpUIDji5KBuHsz3hTnDn9Maj6aO2Ik1owEBdr9veLw95AMk54sOQbIeXM8HgRJNjOkl TqflIncxvEDWPYnwSazDEMH+ZIIcnLilUHr0uapZyPkRX3ZRjbeEeHPc5QkFBgydLMy5ApA3YBP 9RaMPoPs1hf5j0D+ietsnkQK37INQ8MGvkaqLjzcUYl4lwbH5MyIA0mmJ1m2j5l8fr+JRvTnEOD wgA1KmNL9GHm1lJZXO+kExMzM= X-Received: by 2002:a05:600c:4715:b0:490:7136:ad05 with SMTP id 5b1f17b1804b1-490a29748dcmr205098165e9.31.1780327149765; Mon, 01 Jun 2026 08:19:09 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.19.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:19:09 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 08/11] video: backlight: lm3533_bl: Improve linear sysfs logic Date: Mon, 1 Jun 2026 18:18:28 +0300 Message-ID: <20260601151831.76350-9-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Simplify the sysfs logic of the linear property by switching to a macro and a ternary operator. Signed-off-by: Svyatoslav Ryhel Reviewed-by: Daniel Thompson (RISCstar) --- drivers/video/backlight/lm3533_bl.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/= lm3533_bl.c index c70b8a3bb301..36e6f027613a 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -23,6 +23,7 @@ #define LM3533_BL_MAX_BRIGHTNESS 255 =20 #define LM3533_REG_CTRLBANK_AB_BCONF 0x1a +#define CTRLBANK_AB_BCONF_MODE(n) BIT(2 * (n) + 1) =20 =20 struct lm3533_bl { @@ -136,8 +137,9 @@ static ssize_t show_linear(struct device *dev, struct device_attribute *attr, char *buf) { struct lm3533_bl *bl =3D dev_get_drvdata(dev); + int id =3D lm3533_bl_get_ctrlbank_id(bl); + u8 mask =3D CTRLBANK_AB_BCONF_MODE(id); u32 val; - u8 mask; int linear; int ret; =20 @@ -145,8 +147,6 @@ static ssize_t show_linear(struct device *dev, if (ret) return ret; =20 - mask =3D 1 << (2 * lm3533_bl_get_ctrlbank_id(bl) + 1); - if (val & mask) linear =3D 1; else @@ -160,23 +160,16 @@ static ssize_t store_linear(struct device *dev, const char *buf, size_t len) { struct lm3533_bl *bl =3D dev_get_drvdata(dev); + int id =3D lm3533_bl_get_ctrlbank_id(bl); unsigned long linear; - u8 mask; - u8 val; int ret; =20 if (kstrtoul(buf, 0, &linear)) return -EINVAL; =20 - mask =3D 1 << (2 * lm3533_bl_get_ctrlbank_id(bl) + 1); - - if (linear) - val =3D mask; - else - val =3D 0; - ret =3D regmap_update_bits(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCO= NF, - mask, val); + CTRLBANK_AB_BCONF_MODE(id), + linear ? CTRLBANK_AB_BCONF_MODE(id) : 0); if (ret) return ret; =20 --=20 2.51.0 From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 41E2D3DEACE for ; Mon, 1 Jun 2026 15:19:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327169; cv=none; b=CWCcKZ8sTO7iwMZgjkHfX55EgwHz5nKzKSMQ+Vgh6PErER3NMX2bgfHHWEzIpzZuAMC8ha5KM9FnVBtv+a0R5S8GYioKhrwh+uaadbQ5YaiFj1fTJKrb787hnXBYwPRnz/GHW5FgHjPYAdEWpCcNp9UN+54y/GeDBQcdu3vEdis= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327169; c=relaxed/simple; bh=S8Y/SLmqiOO5N/roCezf9U+wAzAxng5Uw10f73gGxPo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sqSi7zjJBStW/EbKT8AJwWWE3PgDO1v3ZBAlaLrOoXNpV7hGDi8W9dsHXS1eug9pfzeNM3r2q1kl2tplMqIUoZI/bBUoU3I1QkiR7fL2ADKu0A59C/McNatBEkYCOZD3e28bIljTH0D1kem3Lbk5m1H9lOjt8Bm7vVgN5T6PaQg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ez3BPqnQ; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ez3BPqnQ" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-45ef6565cfdso1306610f8f.0 for ; Mon, 01 Jun 2026 08:19:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327151; x=1780931951; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nMbWeeGe7TfgpPAVjQgWggP+Fym0ITJZjA/DygAtKOs=; b=ez3BPqnQg6HprkBZSv6xqhsXTAShRms5YEHj4EaMCgbYcbWvGXfZUTUmqmUQte3P4b nPA8+O1jPMuHQp/QQm9dUIyUORq45UXNKBxrkJ6My5DWTT8x7wg9GCZwml6Qdy4bpBE0 YMgRlxbmfH38ctG9mgfNrYKTSeKOFwqjfON8ih0tbbrT6RsysRZkkEHGEfQ5rCPaAvKq eI0JJRWbFRv/dOAYZxVVQXwuF3SvUZ+yv4IgvjQjFo+AGstLGO5ZNfNnbNwMdJcnv8fY FCjQbKE9j1PAzBSKMlrrj/GXDW8onJB1MT7O2keqxEBh7r7RCI3tzHSxKrb+hD2eQKfS OWhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327151; x=1780931951; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=nMbWeeGe7TfgpPAVjQgWggP+Fym0ITJZjA/DygAtKOs=; b=f9EE4U5bHOZwvwESxHgZpVanJzzLnI/DJUNRzybAwUCxTytBLsggJMpEz4cDhN1+hg 87/boMAh0XBlIl+RJD6zuTSWmg2Fzv9s8uUNp/LvsTx7nhLimcENqzN/2vjJVa1pxVk/ msCGywRUaGoOeAvgioRAEPZzvmD6YWse2oPztIdx+5cnE+5n/VEpoEGIfE1RGQ7OuDdn zktv/91O4RrpoR9WICcZp0CoCctpuiuBwnPpnW4ZB71XT6P635mh0Q4zU6pL49z63XrG wiCjIMPHBwirCQexBCmw4r0Op3ymRYd+VxZBHAF+BXvO589UUz5t/1/0m9fW2j/C8B8u uNsQ== X-Forwarded-Encrypted: i=1; AFNElJ9RulvRyjyTndIXYB4GQEGJBB0IM291JkZDjQle4rCI8uEv6tMqouZ7KHOsQvpLLdTvZ/VLwqZhtDOrks4=@vger.kernel.org X-Gm-Message-State: AOJu0Yw6URTIF0XWK5cfBm46jycy1hzP/vGapguoyzd1AZQ34I5asGs4 oH0OA/BvpXnHiQ/x2YEBcD2f2rpZWmnZIMd2oIM2Ixbak343boI3Wpdq X-Gm-Gg: Acq92OE0s9KcXFjXf/OeJxdJMCxkP2x7HXEugNxv4+0JVTWBhDfs+yz8tD5/CaDiIvd /MhAGslQI2viIwLIYNW4gde7HcHE8Myxec16nJTyill47cqQsCOTWtdrYb40WawzpsHFI8rAR4P YSpcoDYMXOOmJV9ITXjzZYnPXGQipsHeFLye7yX6JCxJefT89EO2GZ3nyzSSWoLnBqKE6SXgmOh 5/no9vSuJBBQlECVRuqCpSO80+CvnlNxdDYbqxrCri1h2/KP+dqT3R+ZeacvhS/rxpMeomqC7JM bTxt16bpDQ9raVCxzSGD9XQizXR2umsX5beTIykci7oZNKx+Wl69gUdwAwGBys6Mmhhva15G0vK ddGEcGKtWJRXwm85wKPdhU+G4oNvQasg3Tt4noq9QeijdBE1wqkZif8hQXyIrMVfm8KwDdEeARr icPM+h+owz7uzgrRQGSReZ588= X-Received: by 2002:adf:f190:0:b0:44f:9b70:2996 with SMTP id ffacd0b85a97d-45ef6b4f4f5mr15476481f8f.21.1780327151236; Mon, 01 Jun 2026 08:19:11 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.19.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:19:10 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 09/11] video: backlight: lm3533_bl: Set initial mapping mode from DT Date: Mon, 1 Jun 2026 18:18:29 +0300 Message-ID: <20260601151831.76350-10-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add support to obtain the initial mapping mode from DT instead of leaving it unconfigured. Signed-off-by: Svyatoslav Ryhel Reviewed-by: Daniel Thompson (RISCstar) --- drivers/video/backlight/lm3533_bl.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/= lm3533_bl.c index 36e6f027613a..f0d88b7bc229 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -34,6 +34,7 @@ struct lm3533_bl { =20 u32 max_current; u32 pwm; + bool linear; }; =20 =20 @@ -247,8 +248,15 @@ static struct attribute_group lm3533_bl_attribute_grou= p =3D { =20 static int lm3533_bl_setup(struct lm3533_bl *bl) { + int id =3D lm3533_bl_get_ctrlbank_id(bl); int ret; =20 + ret =3D regmap_update_bits(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCO= NF, + CTRLBANK_AB_BCONF_MODE(id), + bl->linear ? CTRLBANK_AB_BCONF_MODE(id) : 0); + if (ret) + return ret; + ret =3D lm3533_ctrlbank_set_max_current(&bl->cb, bl->max_current); if (ret) return ret; @@ -299,6 +307,9 @@ static int lm3533_bl_probe(struct platform_device *pdev) device_property_read_u32(&pdev->dev, "default-brightness", &props.brightness); =20 + bl->linear =3D device_property_read_bool(&pdev->dev, + "ti,linear-mapping-mode"); + bd =3D devm_backlight_device_register(&pdev->dev, name, &pdev->dev, bl, &lm3533_bl_ops, &props); if (IS_ERR(bd)) { --=20 2.51.0 From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 636963DEFE7 for ; Mon, 1 Jun 2026 15:19:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327170; cv=none; b=Rin2O6jc6a+y83NpHVI0R/aUAM4Sy6Wp6jTmhrumFWsrdCOjujdWz3XG40zbP8OPym93uddt0cC8SgN3NJFUL90fusJAHMwZ3BtguZ0vVzsMIJg4gzAQ13YGOpPCPZCxwPA0Anz79Bo8KyYugDjxbGq/iA7tNBufoWOCwWARLs4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327170; c=relaxed/simple; bh=Gqs7G7t00pywVX3rRhClLifko2DwPlgtzGf6OODWNOY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qLQwAPEtgAJ5hUq7bo//C1ZeDwWD9CQOOzdJyk47AN5GiuzYE28VdB8j637/YGcL4GcK48fkkRLQCxjhe5YtDgTpYSCPZDETTvkHFcOiMj1UWs+20sPDE6P+AI0o4kXFBq26EEivK+T4W92lPudOI7xV9JIwyf/OKM1KGtbueMU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SlWReqmt; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SlWReqmt" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4906869f0cbso94006005e9.1 for ; Mon, 01 Jun 2026 08:19:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327153; x=1780931953; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=33jV+tJR7Nm5ReUL1Jncj608Et9Ag1X54glyJfKp5cY=; b=SlWReqmtNBJgpuPqFBJ12rBdSTE7NTWat1EwcxNlvUeN/Q1Vmuq084pYnUVAPpNXTh K/7XijqDSNVP7JleW6xrVBhilYT/7pjmhsYeZF9ykncXIuFMw/AtI6IpMBZR6qIu4CtJ alpPerpSV5LkvxU/kBG54B0uhhRDRFWkd5FMNNar2kl+3CugOLVhYN6/sc2ugYKu+TAw GEE5AbOxDZlxbR00XBDHRloB4HW4NFOiKkUllyhnpOAiKzdCZtt3ofTzfdmmP4Uul2G0 L0AR5zkgyJnyrnDlY7WwxlOVcK0V5rKis71rON1FV69F0QFYRmo/K1JgOYetuUizzmJG jEtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327153; x=1780931953; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=33jV+tJR7Nm5ReUL1Jncj608Et9Ag1X54glyJfKp5cY=; b=AS0EGP1dyFLkkAwO25vawzbvQ6aglEU7/pefy0WUV6J2ylgLKAcGlbRYlP/x5gtq1x 81kXgZrNU5U8Oyyx9kunbdJ3J0He+wL3bjoqzvm4s2NGZqo+BRmSDvNS0NgGjUmSWMa3 q5tIGH0tZ+YlGRderFYf+0fvE4oeeS2FXBAYTLcBp3U8ZYP6bT6ISuASeH15LxabJAzI YcwMFgbOJjY0uOYImMoiolnUnVDQ4KqLzC9zXRBZW9W1TIGekxeGixoyeilREEagUtvq Uljztpi/6QrJkWjSNDznUPjjuVcMcdPlZBBHkhXOdM+bz6QOV4nELsDWGU9tDUCQSB9F KWTw== X-Forwarded-Encrypted: i=1; AFNElJ/nsGl1wmVVNYNbuQ2lXsdLMpsto1gTcDdJ24iJqIZE9eNcc9kr+4XCnbCuBAXYf0asVFUziQ8pQFL7TX0=@vger.kernel.org X-Gm-Message-State: AOJu0YxxnhbgCCaWhuqGwwXDEVhOZMbmjIKrKyz7SuVlk6ji1synFx5I YBML3DcRoOeohwaEm2OP6qjIQChDOlVHtpHYb0MtXyxuZ7Oe/4JXUBiA X-Gm-Gg: Acq92OFL1HNn3pCnn2c+nJ43NWsKGH6x6MpOMOPd36DV3m4xqCCQcoQP+zA34wREbS0 jKsFZhVDmDh76UvAugKxqU5c409L+3LCLiUkWQKQJws6auoeAxb4f3t403gm6pYZy54wwkf79fl J/8KRQKb+5Hjc+VhEkDxylJVxnIkBzKy057w9t9lju36N8BDkYTtKRFkjif6MLyLO0ZtB5OJa8d RbbDCT4Hip0jVEsHESn0/r0giA4KMy0BImTDYLytN+E/xLLuosJ3vArmrwJfImWLIdNxKDFIxNW hIRaYKGLuIsIGIjrLKLpJcJEKVbGgrd9y92NBw/zmfSHZTEmTxNIWuebIqZVs+PNWlgk6MHyyfF O74gPV+wfeDUiN3qGRqvjfxedhRdMjdcSbuN/2tXSLITMRHgU23dUQtdA+chXpyrzPJEvbkZIDx B5p8cJ6hbGxH3YGVc6W50ZslL6ICufNIGd2w== X-Received: by 2002:a05:600c:6385:b0:490:40f1:5314 with SMTP id 5b1f17b1804b1-490a290ec08mr258749965e9.1.1780327152708; Mon, 01 Jun 2026 08:19:12 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.19.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:19:12 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 10/11] video: backlight: lm3533_bl: Implement backlight_scale property Date: Mon, 1 Jun 2026 18:18:30 +0300 Message-ID: <20260601151831.76350-11-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Since the device supports linear and non-linear modes, implement the backlight_scale property to describe this state. Signed-off-by: Svyatoslav Ryhel Reviewed-by: Daniel Thompson (RISCstar) --- drivers/video/backlight/lm3533_bl.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/= lm3533_bl.c index f0d88b7bc229..945625c54fc4 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -161,6 +161,7 @@ static ssize_t store_linear(struct device *dev, const char *buf, size_t len) { struct lm3533_bl *bl =3D dev_get_drvdata(dev); + struct backlight_device *bd =3D bl->bd; int id =3D lm3533_bl_get_ctrlbank_id(bl); unsigned long linear; int ret; @@ -174,6 +175,9 @@ static ssize_t store_linear(struct device *dev, if (ret) return ret; =20 + bd->props.scale =3D linear ? BACKLIGHT_SCALE_LINEAR : + BACKLIGHT_SCALE_NON_LINEAR; + return len; } =20 @@ -309,6 +313,8 @@ static int lm3533_bl_probe(struct platform_device *pdev) =20 bl->linear =3D device_property_read_bool(&pdev->dev, "ti,linear-mapping-mode"); + props.scale =3D bl->linear ? BACKLIGHT_SCALE_LINEAR : + BACKLIGHT_SCALE_NON_LINEAR; =20 bd =3D devm_backlight_device_register(&pdev->dev, name, &pdev->dev, bl, &lm3533_bl_ops, &props); --=20 2.51.0 From nobody Mon Jun 8 05:26:06 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5D8663E00B6 for ; Mon, 1 Jun 2026 15:19:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327173; cv=none; b=sR1bt/Q9HR53UR/Px0OFA+IDGzlAqCCKV1zqt589gqkBM507lZR0HRLebFerO6NjKZhNbcMOK+c/ShWrJew2+op5lGzneeG334Og67gIpYM3j/sRyh23fClSLrfMP4vXF+Rgp3x3xnz4YF02t5Zb3Ri9vGa8pNOzwKrbXyUaEBs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780327173; c=relaxed/simple; bh=RZTQ2H/zzNTFrVxP5f5192LTONxSh/ltoz3RRhQzsG0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bXBRs1B8r7jbXWHxtU3t6bXxo/HjLDyhrG/TTWXKnuSOKVLpEj2gNb7rScSnvBwdOdf0TrzSeEx1j9Ha5Oi1YF9IJJm4mZDbW1Q4F9/5ouhKSyWL0hxnet/+YkjMwi5NpKI4bEht5SBtKWv+cnYYLzwzZ8h8Wz/kKkptlpwWQiY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=h1/4O/gP; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="h1/4O/gP" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-45ef189aa1cso2743188f8f.0 for ; Mon, 01 Jun 2026 08:19:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780327154; x=1780931954; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fl3qFf3690+fE50JY3SQOXjzJEQ1bfcjE1YgTovPA6E=; b=h1/4O/gPfRv/HHJqc/lQyR287miEaJngBhbvey0jCYwGsUUUF05RtFdcwvDFn+z6Zj 6FWGRME/fTf4SFB3c3DR7hQBjG3CiAiVbPMDh/SRyM3GykIxJUGB/MbJMTzn5btjcazo e8y+ByQORZZP5U0QfLffflTrIv5drS6KYIWtDZYBOTAwSbgS/jvjsM1G0L8Se3EqCbk7 Gbv41GbC1+SFKHFWKK0E5S7yOdCrhGgPP5+6s1nXkjy8yuEvORbscLTFDhd+dVKFCWhw yinQbg/1FXZte3lPlRoKDbBDCJ8BE8tIbe46fofSQ6mbERohk9e/zQqSSZIvUmy+ClK3 JPOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780327154; x=1780931954; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fl3qFf3690+fE50JY3SQOXjzJEQ1bfcjE1YgTovPA6E=; b=sOQG7ZaU0kFxYL6PWgb4rHoP/L8VloTaRJYBXQvJv/wuodXLavUdRlEuNPdfwzYryT pcNKBwU+eZQMwPiUrpz9r2OdRvFf5pceHM68+h0KOYoiCk45Lq3uVX2foCBwLpq6mFfy GUEi4inQARNmmKm/xQm+uG5t7uvZAfv0pnE/3nC1FW/ZLZp2CMXbP4OUyfj5BbrXPUTQ ckTzJghXepaEguBWGP4nOIqj9+ONVvqaxPjdKSD713tbze19mpE0pze83k0y7ptzayCt T6ua8Rkkfs8JBNWhGKqUZ5+Wq10be0f78WzjrcfoRkj4YkinVeARRTKb0JlFsS/jc2Sc v5nw== X-Forwarded-Encrypted: i=1; AFNElJ95kjtHZVVDFsj0ehguz7i94GT/cQrRrsSN/sG5SCEGjp+Kwc4lATTl2w+8ZAJNXyCIftHwrKpRH2qlAvc=@vger.kernel.org X-Gm-Message-State: AOJu0YyXoon7XL9bM9cmjp0561Kd1a4seFip1WzG8deO98HP97REUP4C 5r98ENHluwoHf6kTGpdXSsNaey3cVYZjQXOhHWgcVg3x1VncytIh+wtG X-Gm-Gg: Acq92OGML87MYhxRTNPB6cVSvtEeQHhqmivU9ftvxX/A/VDRGbLA8Y2VM4KmxyugKaV uUZXu8SoBPZxUgQnzilRk0WYmLBoDuNgmVDioXPXhNzjMXxQYdljV3+QbHO0VVku5+oWn+QY8UC i4vV1iqhvJkMWf698AVtt/bzodoJkxHGo82Jb19NDM8PdL9WCufo7IbK6P65MKBp7H3BheQkAnt Yw9Z7Lj91Jtpf3ioudql9OIHuC3cjKpJmxwScVDDS3ztzeqQ6D9wH/uZ3j3kL0Vlu8RUqAyYHUU sYmjk5K1O7C5tOUl+DtULLZAAqzxZmFqHdl0OLrYwrUI9k3HPnZUI0h/qAS7WO909cugu4GEQZf SkYoU6YBOSzCd/TF2dtRshd2Jz4Nq7IrafxBEGnawbWCVuWMmTd8f+q1vWAvcOnuzQGv4CAu8yM xZfKvPLYkCPpzHJSiVk7yE0Rs= X-Received: by 2002:a05:6000:1376:b0:43d:7868:21f0 with SMTP id ffacd0b85a97d-45ef6afc537mr16294468f8f.9.1780327154150; Mon, 01 Jun 2026 08:19:14 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef354cd7csm25753103f8f.18.2026.06.01.08.19.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 08:19:13 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Daniel Thompson , Jingoo Han , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Helge Deller , Svyatoslav Ryhel Cc: Johan Hovold , dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH v3 11/11] video: leds: backlight: lm3533: Support getting LED sources from DT Date: Mon, 1 Jun 2026 18:18:31 +0300 Message-ID: <20260601151831.76350-12-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260601151831.76350-1-clamor95@gmail.com> References: <20260601151831.76350-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add Control Bank to HVLED/LVLED muxing support based on the led-sources defined in the device tree. Signed-off-by: Svyatoslav Ryhel --- drivers/leds/leds-lm3533.c | 55 ++++++++++++++++++++++++++++- drivers/video/backlight/lm3533_bl.c | 40 ++++++++++++++++++++- 2 files changed, 93 insertions(+), 2 deletions(-) diff --git a/drivers/leds/leds-lm3533.c b/drivers/leds/leds-lm3533.c index f2502daf450d..6db1c1fd2e20 100644 --- a/drivers/leds/leds-lm3533.c +++ b/drivers/leds/leds-lm3533.c @@ -7,6 +7,7 @@ * Author: Johan Hovold */ =20 +#include #include #include #include @@ -27,6 +28,12 @@ #define LM3533_ALS_CHANNEL_LV_MIN 1 #define LM3533_ALS_CHANNEL_LV_MAX 2 =20 +#define LM3533_REG_OUTPUT_CONF1 0x10 +#define OUTPUT_CONF1_MASK GENMASK(7, 2) +#define OUTPUT_CONF1_SHIFT 2 +#define LM3533_REG_OUTPUT_CONF2 0x11 +#define OUTPUT_CONF2_MASK GENMASK(3, 0) +#define OUTPUT_CONF2_SHIFT 6 #define LM3533_REG_CTRLBANK_BCONF_BASE 0x1b #define LM3533_REG_PATTERN_ENABLE 0x28 #define LM3533_REG_PATTERN_LOW_TIME_BASE 0x71 @@ -54,6 +61,9 @@ struct lm3533_led { =20 u32 max_current; u32 pwm; + + int num_leds; + u32 leds[LM3533_LVCTRLBANK_MAX]; }; =20 =20 @@ -641,7 +651,33 @@ static const struct attribute_group *lm3533_led_attrib= ute_groups[] =3D { =20 static int lm3533_led_setup(struct lm3533_led *led) { - int ret; + u32 output_cfg_shift =3D 0; + u32 output_cfg_val =3D 0; + int ret, i; + + if (led->num_leds) { + for (i =3D 0; i < led->num_leds; i++) { + if (led->leds[i] >=3D LM3533_LVCTRLBANK_MAX) + continue; + + output_cfg_shift =3D led->leds[i] * 2; + output_cfg_val |=3D led->id << output_cfg_shift; + } + + /* LVLED1, LVLED2 and LVLED3 */ + ret =3D regmap_update_bits(led->lm3533->regmap, LM3533_REG_OUTPUT_CONF1, + OUTPUT_CONF1_MASK, + output_cfg_val << OUTPUT_CONF1_SHIFT); + if (ret) + return ret; + + /* LVLED4 and LVLED5 */ + ret =3D regmap_update_bits(led->lm3533->regmap, LM3533_REG_OUTPUT_CONF2, + OUTPUT_CONF2_MASK, + output_cfg_val >> OUTPUT_CONF2_SHIFT); + if (ret) + return ret; + } =20 ret =3D lm3533_ctrlbank_set_max_current(&led->cb, led->max_current); if (ret) @@ -716,6 +752,23 @@ static int lm3533_led_probe(struct platform_device *pd= ev) led->pwm =3D 0; device_property_read_u32(&pdev->dev, "ti,pwm-config-mask", &led->pwm); =20 + led->num_leds =3D device_property_count_u32(&pdev->dev, "led-sources"); + + /* + * If led-sources property is not set then either this Control Bank uses + * its default LVLED or is not linked to any LVLED at all. + */ + if (led->num_leds > 0 && led->num_leds <=3D LM3533_LVCTRLBANK_MAX) { + ret =3D device_property_read_u32_array(&pdev->dev, "led-sources", + led->leds, led->num_leds); + if (ret) { + dev_err(&pdev->dev, "failed to get led-sources\n"); + goto err_deregister; + } + } else { + led->num_leds =3D 0; + } + ret =3D lm3533_led_setup(led); if (ret) goto err_deregister; diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/= lm3533_bl.c index 945625c54fc4..2119433bae45 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -7,6 +7,7 @@ * Author: Johan Hovold */ =20 +#include #include #include #include @@ -22,6 +23,8 @@ #define LM3533_HVCTRLBANK_COUNT 2 #define LM3533_BL_MAX_BRIGHTNESS 255 =20 +#define LM3533_REG_OUTPUT_CONF1 0x10 +#define OUTPUT_CONF1_MASK GENMASK(1, 0) #define LM3533_REG_CTRLBANK_AB_BCONF 0x1a #define CTRLBANK_AB_BCONF_MODE(n) BIT(2 * (n) + 1) =20 @@ -35,6 +38,9 @@ struct lm3533_bl { u32 max_current; u32 pwm; bool linear; + + int num_leds; + u32 led_strings[LM3533_HVCTRLBANK_COUNT]; }; =20 =20 @@ -253,7 +259,8 @@ static struct attribute_group lm3533_bl_attribute_group= =3D { static int lm3533_bl_setup(struct lm3533_bl *bl) { int id =3D lm3533_bl_get_ctrlbank_id(bl); - int ret; + u32 output_cfg_val =3D 0; + int ret, i; =20 ret =3D regmap_update_bits(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCO= NF, CTRLBANK_AB_BCONF_MODE(id), @@ -261,6 +268,20 @@ static int lm3533_bl_setup(struct lm3533_bl *bl) if (ret) return ret; =20 + if (bl->num_leds) { + for (i =3D 0; i < bl->num_leds; i++) { + if (bl->led_strings[i] >=3D LM3533_HVCTRLBANK_COUNT) + continue; + + output_cfg_val |=3D id << bl->led_strings[i]; + } + + ret =3D regmap_update_bits(bl->lm3533->regmap, LM3533_REG_OUTPUT_CONF1, + OUTPUT_CONF1_MASK, output_cfg_val); + if (ret) + return ret; + } + ret =3D lm3533_ctrlbank_set_max_current(&bl->cb, bl->max_current); if (ret) return ret; @@ -336,6 +357,23 @@ static int lm3533_bl_probe(struct platform_device *pde= v) bl->pwm =3D 0; device_property_read_u32(&pdev->dev, "ti,pwm-config-mask", &bl->pwm); =20 + bl->num_leds =3D device_property_count_u32(&pdev->dev, "led-sources"); + + /* + * If led-sources property is not set then either this Control Bank uses + * its default HVLED or is not linked to any HVLED at all. + */ + if (bl->num_leds > 0 && bl->num_leds <=3D LM3533_HVCTRLBANK_COUNT) { + ret =3D device_property_read_u32_array(&pdev->dev, "led-sources", + bl->led_strings, + bl->num_leds); + if (ret) + return dev_err_probe(&pdev->dev, ret, + "failed to get led-sources\n"); + } else { + bl->num_leds =3D 0; + } + ret =3D lm3533_bl_setup(bl); if (ret) return ret; --=20 2.51.0