From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (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 2FD2E2F8E91 for ; Sat, 6 Jun 2026 04:58:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721891; cv=none; b=ihxdwD2AW8i6warKpqtOeBWSmidKWT7HxMWn9HZogVN+FTd84sowsJ/vLfdZRNLHyFM9ZJx/+auuScrS1ND0d1GAJ96tMQUdU7HjjkygHXp/TEuBXBysZ72g4GInSt4Po59qW6tpcYDa0h1LIaGO8nsIKr4uZ/suYXSRGYf44Ro= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721891; c=relaxed/simple; bh=ri7st6VQxv7zgJDG81aZW390zfSIszmCcRBtlHflWUo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SGFir3ydNjTzdoaZmRs81znTOVeyZGg52YiEoqMIzrBeOgNiGK6/nHqiAcuheD5Nw9hfRsmcVJR9M+QAGViTCt0LNe4eK5Ilnj/d3MuKgIoeeV1qbR+DXsWwcgsY2PWSFB031Jln4qEDWoFHPbWWT+YTfoPi8WbleeZJvL+BCQo= 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=Y8xmerJl; arc=none smtp.client-ip=209.85.208.47 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="Y8xmerJl" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-6914a658115so712380a12.0 for ; Fri, 05 Jun 2026 21:58:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721887; x=1781326687; 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=shI03q1w0e4L+IBi9B5rha1pksieDLncgskbwjM0zrc=; b=Y8xmerJld6QZ8iylHH+uRAFVMYJK0fpD/uWcVOenqe8rV7aRx12orjcL7DlK614sK+ 6WFcLtrwvtlwSgcCxAtmsFTdomzVhAM+p0Mwa8xMEoFM2Z/hs6lZVA5o75MEzt06ryEU 6IsnDD65i1+nvy6hUhLiMUxhtagzofBhsjz5JeyKyHcudamDBo58cKqIrhMcLrx6NOF3 nEEUrfbBM82f/mS06URccN13djN5JWa5N8mKlRfOQaQl4ha3xro7mbEqjFkkMVwf8oqE SrlN9uUckPgB5J1ulc2MXG4aI9kYlfjfxZwEDGubbNYt4w0whg8RdcxpOu4xBrpwSrk0 Szmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721887; x=1781326687; 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=shI03q1w0e4L+IBi9B5rha1pksieDLncgskbwjM0zrc=; b=S6EB9mvcX1OFsWTQ2cZ022ODepCYHA4Pmd+Z8QC9kECUu7xMvxbQCJWNTj2h4WE3CE /VaV4eRM72b15m3B5YHLaVwiZaNHYnQuVnizftz3essgV9tfrVl356rm6aRfaLZXN7VZ OQZajF4X+kB2kwnJb4arVcZomAfmqL+7c5E0mOq6xFpg8p1uIHq2sIpCXqeK7/tMOfIH 3bg/cWCsVCtnvwUb+rHA16I1nN0tCXMczzt8RNfUJ+KO1iqg+i2+jcp+7ORpH8JTR3Kk oI7Blt522ro1JspVNCBLf2FhI9f3p5IAeI/0TpG0zFDt2EW8NPhsYLmeqMRWC8h/pyaP 5Hyw== X-Forwarded-Encrypted: i=1; AFNElJ8IxfhLpk+c9cXAEoiM7lnV/3LeiJeoz0YKR+/xi0yZuJMjnJJ9bafAx6KxE+cCDFtbviiWdN1WBy6j8AY=@vger.kernel.org X-Gm-Message-State: AOJu0Yyoi01slp1G4yjLPrU5KWeeWws5WZTN1XT8z5CMQST2udjhgVmO hOFira1HcS8MWO0/oP+0giGpltxA6PxTL6IGUagDxdXj4XPAlVoNcE/E X-Gm-Gg: Acq92OH1FFFxqsxxshN6jsoUOsR7t1Dgtd0WzggbV79HuZzzMnhIZOm2epNmn3hW18q Fgp1OVfrTz87OieHS8HqC1ph3jPippnYL6B0Ua1kVXgPMrrifdkBrsJhn3QPV1HcOaAIyJvqH2Z o4IDLOPz53TbfZK3wcdhfHDKuUhYaXnx4emDn8mcckV9sj0OEWbudFGDDZ2JW3cv3oDPRobKiQF CkshY0ColkQptWzjApGG63WVmMbQjmi5PooHP6BTFW/FpedM1WtAtJZVxmpl2oW8NNrYjJSoJMS quYp11n18tYHeacO4RTwkcmiqK8HPhhWg5rCls8s1U4pMrwWoqPgu4X7+Vd94H6DUtM/2VDxOwC ybG+Mo3HK+zv9rdOuuFFhe8pAPvXa6bddgGWLgmtkL26pIPDUgfif1XJRRW0Hl6/BPzmAPkCkOI 9D2MYRSnxPUWsbNoWSLsrP94w= X-Received: by 2002:a17:907:2d92:b0:bf0:59a2:4ccc with SMTP id a640c23a62f3a-bf36fd9bc68mr379384866b.3.1780721887268; Fri, 05 Jun 2026 21:58:07 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:05 -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 v4 01/14] dt-bindings: leds: Document TI LM3533 LED controller Date: Sat, 6 Jun 2026 07:57:25 +0300 Message-ID: <20260606045738.21050-2-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (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 6ECC53019A6 for ; Sat, 6 Jun 2026 04:58:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721892; cv=none; b=L91TiGrfWMDYS3/eG99xIvwOVA7gPkZMiX14erpni0bra3QbelWakJ5nk7pWQzzSUKUZF860OjuejxMCKn2WlO6tt4kRHkXI3MxVTlc3cju1kE2UIwHkpq0sDMZawW5UrZ4pBrkj3gawTcPFs0T+anyPQi69qAxUAJVn16KcTr8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721892; c=relaxed/simple; bh=9fUrOXJ0ZI+0f52eTa/9AqkmecF4y8G0qJn/YY7pPMU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Yp69BmRuMMs94sG4V0g7aqqpvodm5zdPA0nV9O1QPwJwFmOlfY4i6WMvRm3V50xmTHx8+++gjGQpS2ihyb7wtA0h9nucczr84jbiiyQ+srTiWcz6IjMiM8XQfyf76D/a0fA8HOna6NUPaQrTBddeOLQS2o46Ljllv1se3ajoF8E= 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=eWXT37Aa; arc=none smtp.client-ip=209.85.218.51 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="eWXT37Aa" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-bec449cf976so352341366b.2 for ; Fri, 05 Jun 2026 21:58:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721889; x=1781326689; 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=6WZGMz9a8XsNsuHgB7vubDPNzI+zMoyCyaCQ9SgGtB4=; b=eWXT37AaVImZiPeT2Y+DJpWVc+BFRpmCvZLnDyEK6CtEIFBjEkV3rQYiV2sbtPs08m epZWTGd1SPB8NeMAA/OcfGhru1gXLjY9MfhfcS/cdbs9Vfqfu4vYMzQXEVXpUGV/iq8N zu4Cnfl5HSviA7WVUW1w7Fu12T6glymx5S7KRnFlbCpljdGTtPdQdKckbFP+oSSZXc/z 7jQeFg7ZpM1y31kDU1bQbrSAZfyvXx7JvL4Jrq2dNJs+2nd6wt6cBYKhM13/peU4Wvfj 1sLeeT0Rdi3ewK8gpiGJACvo5VnELgHouqoUTPmne8XsjUJig4cwWG+u6+WAL84k+prz DiJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721889; x=1781326689; 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=6WZGMz9a8XsNsuHgB7vubDPNzI+zMoyCyaCQ9SgGtB4=; b=G2EE7I4L2BuhuU9z05rFTeE1XEw5HiS+BiWQNjrlpHPT4VnmkunA77/FY2ENqqPwTs ArUjSUM2STnWANhAhop2cfQPt9PJJTC5qhCl7na/rvEv9+VFsFBm89FkmaYkH4uZJP9N LBV06XV7JyLsEymK2mbzkvIdnbgb71tXOqkT+m0qf3FnOI8JXadEa1frvb6iW3VMgUIc QxjplnNHNEvBVh/XzymKvWIryFxBTVDWjtrA1eCryr8mu4wT+9Ga0/OwxT6kLWXz3P3+ qbjXz7192lZQi38vBBVn+niN5jD24S6WsL1h5ODDhXF1sqgwy2CVrEIo08e7cYfPbWLw y9gw== X-Forwarded-Encrypted: i=1; AFNElJ/paSVTJc3vbMKMLBzEUcbeC7iHxkIcxWiAKcQXfHZ+CsNTmIkhN/3keb0PssRbkq4uF/SnjpTHOON9QQI=@vger.kernel.org X-Gm-Message-State: AOJu0YzfdEGpmjLduB2gIqS4foXpYZuUEXWumVpgaIbz8g1Lr2ECU3x8 BCl9ZWWvAnKZ0vnzwHI/N++fd+n/V7rexyChAJD12Y/bHwqCnQeUSMMr X-Gm-Gg: Acq92OG9uNlrlaXaFIsdVy5eOXwCJAxTdzYD5NVXUlPtzZjo6qgpeSLGeTXrTiI4Ho9 mNkc0rgnsjLeAeiO2bPcAwdeC6/qfZ2xG12UgkWx1fNFm/wXz291klFkRlCuSMZweJCt8CNsih8 Op3Zbvis1lZBbqZHG1h3GmRCVi4YzJRqBC9c1/o4sLMZVKUXo7WLVLHmTfuaGlDKo4Dbir+Z+9e 0IQBnIxN/T5TloV59ezjLaqnRhH+K9bW4y9JXJmtLE6oOpj8oYpimkIkPHW4d97k72bW9oirNPh pIwznrCVbW7CTpVBcLSVmkL41LNnr5AjsRCpc8VI3icqtgvxFZHRC/mnlJIHvXW7eE4znwfLQFG KSeMXjsHXpihzBmn1VQllWpJYveWoyyUrKGOgk8oMxphcndmaCW0P0iijCrhEAf+Q6f/sv3Df4t 3g0pf6JyiBwwdNyGS2ldriCpc= X-Received: by 2002:a17:907:a44:b0:bd3:cb24:ae61 with SMTP id a640c23a62f3a-bf37037d2eemr377837966b.6.1780721888728; Fri, 05 Jun 2026 21:58:08 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:08 -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 v4 02/14] mfd: lm3533: Remove driver specific regmap wrappers Date: Sat, 6 Jun 2026 07:57:26 +0300 Message-ID: <20260606045738.21050-3-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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. Signed-off-by: Svyatoslav Ryhel --- drivers/iio/light/lm3533-als.c | 79 +++++++++++++---------------- drivers/leds/leds-lm3533.c | 58 ++++++++------------- drivers/mfd/lm3533-core.c | 73 ++++---------------------- drivers/mfd/lm3533-ctrlbank.c | 22 ++++---- drivers/video/backlight/lm3533_bl.c | 33 ++++-------- include/linux/mfd/lm3533.h | 8 +-- 6 files changed, 90 insertions(+), 183 deletions(-) diff --git a/drivers/iio/light/lm3533-als.c b/drivers/iio/light/lm3533-als.c index 99f0b903018c..44b104c2d77f 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 @@ -171,8 +172,8 @@ static int lm3533_als_set_target(struct iio_dev *indio_= dev, unsigned channel, static int lm3533_als_get_current(struct iio_dev *indio_dev, unsigned chan= nel, int *val) { + u32 target; u8 zone; - u8 target; int ret; =20 ret =3D lm3533_als_get_zone(indio_dev, &zone); @@ -271,16 +272,10 @@ static irqreturn_t lm3533_als_isr(int irq, void *dev_= id) static int lm3533_als_set_int_mode(struct iio_dev *indio_dev, int enable) { struct lm3533_als *als =3D iio_priv(indio_dev); - u8 mask =3D LM3533_ALS_INT_ENABLE_MASK; - u8 val; int ret; =20 - if (enable) - val =3D mask; - else - val =3D 0; - - ret =3D lm3533_update(als->lm3533, LM3533_REG_ALS_ZONE_INFO, val, mask); + ret =3D regmap_assign_bits(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, + LM3533_ALS_INT_ENABLE_MASK, enable); if (ret) { dev_err(&indio_dev->dev, "failed to set int mode %d\n", enable); @@ -293,17 +288,16 @@ static int lm3533_als_set_int_mode(struct iio_dev *in= dio_dev, int enable) static int lm3533_als_get_int_mode(struct iio_dev *indio_dev, int *enable) { struct lm3533_als *als =3D iio_priv(indio_dev); - u8 mask =3D LM3533_ALS_INT_ENABLE_MASK; - u8 val; int ret; =20 - ret =3D lm3533_read(als->lm3533, LM3533_REG_ALS_ZONE_INFO, &val); - if (ret) { + ret =3D regmap_test_bits(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, + LM3533_ALS_INT_ENABLE_MASK); + if (ret < 0) { dev_err(&indio_dev->dev, "failed to get int mode\n"); return ret; } =20 - *enable =3D !!(val & mask); + *enable =3D ret; =20 return 0; } @@ -316,7 +310,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 +320,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,8 +331,8 @@ 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; u8 reg, reg2; + u32 val2; int ret; =20 if (nr > LM3533_ALS_THRESH_MAX) @@ -348,7 +342,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 +357,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 +369,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 +497,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) { @@ -716,16 +710,10 @@ static const struct attribute_group lm3533_als_attrib= ute_group =3D { =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; =20 - if (pwm_mode) - val =3D mask; /* pwm input */ - else - val =3D 0; /* analog input */ - - ret =3D lm3533_update(als->lm3533, LM3533_REG_ALS_CONF, val, mask); + ret =3D regmap_assign_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, + LM3533_ALS_INPUT_MODE_MASK, pwm_mode); if (ret) { dev_err(&als->pdev->dev, "failed to set input mode %d\n", pwm_mode); @@ -744,7 +732,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; @@ -774,11 +763,11 @@ static int lm3533_als_setup(struct lm3533_als *als, =20 static int lm3533_als_setup_irq(struct lm3533_als *als, void *dev) { - u8 mask =3D LM3533_ALS_INT_ENABLE_MASK; int ret; =20 /* Make sure interrupts are disabled. */ - ret =3D lm3533_update(als->lm3533, LM3533_REG_ALS_ZONE_INFO, 0, mask); + ret =3D regmap_clear_bits(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, + LM3533_ALS_INT_ENABLE_MASK); if (ret) { dev_err(&als->pdev->dev, "failed to disable interrupts\n"); return ret; @@ -798,10 +787,10 @@ static int lm3533_als_setup_irq(struct lm3533_als *al= s, void *dev) =20 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_set_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, + LM3533_ALS_ENABLE_MASK); if (ret) dev_err(&als->pdev->dev, "failed to enable ALS\n"); =20 @@ -810,10 +799,10 @@ static int lm3533_als_enable(struct lm3533_als *als) =20 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_clear_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, + LM3533_ALS_ENABLE_MASK); 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..a48991958eae 100644 --- a/drivers/leds/leds-lm3533.c +++ b/drivers/leds/leds-lm3533.c @@ -12,6 +12,7 @@ #include #include #include +#include #include =20 #include @@ -80,7 +81,6 @@ static inline u8 lm3533_led_get_pattern_reg(struct lm3533= _led *led, static int lm3533_led_pattern_enable(struct lm3533_led *led, int enable) { u8 mask; - u8 val; int pattern; int state; int ret =3D 0; @@ -96,12 +96,8 @@ static int lm3533_led_pattern_enable(struct lm3533_led *= led, int enable) pattern =3D lm3533_led_get_pattern(led); mask =3D 1 << (2 * pattern); =20 - if (enable) - val =3D mask; - else - val =3D 0; - - ret =3D lm3533_update(led->lm3533, LM3533_REG_PATTERN_ENABLE, val, mask); + ret =3D regmap_assign_bits(led->lm3533->regmap, + LM3533_REG_PATTERN_ENABLE, mask, enable); if (ret) { dev_err(led->cdev.dev, "failed to enable pattern %d (%d)\n", pattern, enable); @@ -131,7 +127,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 +255,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 +333,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 +371,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 +401,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 +437,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 +451,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 @@ -476,22 +472,15 @@ static ssize_t store_als_en(struct device *dev, struct lm3533_led *led =3D to_lm3533_led(led_cdev); unsigned enable; u8 reg; - u8 mask; - u8 val; int ret; =20 if (kstrtouint(buf, 0, &enable)) return -EINVAL; =20 reg =3D lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); - mask =3D LM3533_REG_CTRLBANK_BCONF_ALS_EN_MASK; =20 - if (enable) - val =3D mask; - else - val =3D 0; - - ret =3D lm3533_update(led->lm3533, reg, val, mask); + ret =3D regmap_assign_bits(led->lm3533->regmap, reg, + LM3533_REG_CTRLBANK_BCONF_ALS_EN_MASK, enable); if (ret) return ret; =20 @@ -504,12 +493,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 @@ -529,22 +518,15 @@ static ssize_t store_linear(struct device *dev, struct lm3533_led *led =3D to_lm3533_led(led_cdev); unsigned long linear; u8 reg; - u8 mask; - u8 val; int ret; =20 if (kstrtoul(buf, 0, &linear)) return -EINVAL; =20 reg =3D lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); - mask =3D LM3533_REG_CTRLBANK_BCONF_MAPPING_MASK; - - if (linear) - val =3D mask; - else - val =3D 0; =20 - ret =3D lm3533_update(led->lm3533, reg, val, mask); + ret =3D regmap_assign_bits(led->lm3533->regmap, reg, + LM3533_REG_CTRLBANK_BCONF_MAPPING_MASK, linear); if (ret) return ret; =20 @@ -557,7 +539,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..b78c130d7712 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_set_bits(cb->lm3533->regmap, LM3533_REG_CTRLBANK_ENABLE, + 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_clear_bits(cb->lm3533->regmap, LM3533_REG_CTRLBANK_ENABLE, + mask); 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..03cce6aeb014 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 @@ -104,7 +105,6 @@ static ssize_t store_als_en(struct device *dev, struct lm3533_bl *bl =3D dev_get_drvdata(dev); int ctrlbank =3D lm3533_bl_get_ctrlbank_id(bl); int enable; - u8 val; u8 mask; int ret; =20 @@ -113,13 +113,8 @@ static ssize_t store_als_en(struct device *dev, =20 mask =3D 1 << (2 * ctrlbank); =20 - if (enable) - val =3D mask; - else - val =3D 0; - - ret =3D lm3533_update(bl->lm3533, LM3533_REG_CTRLBANK_AB_BCONF, val, - mask); + ret =3D regmap_assign_bits(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCO= NF, + mask, enable); if (ret) return ret; =20 @@ -130,12 +125,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 @@ -156,7 +151,6 @@ static ssize_t store_linear(struct device *dev, struct lm3533_bl *bl =3D dev_get_drvdata(dev); unsigned long linear; u8 mask; - u8 val; int ret; =20 if (kstrtoul(buf, 0, &linear)) @@ -164,13 +158,8 @@ static ssize_t store_linear(struct device *dev, =20 mask =3D 1 << (2 * lm3533_bl_get_ctrlbank_id(bl) + 1); =20 - if (linear) - val =3D mask; - else - val =3D 0; - - ret =3D lm3533_update(bl->lm3533, LM3533_REG_CTRLBANK_AB_BCONF, val, - mask); + ret =3D regmap_assign_bits(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCO= NF, + mask, linear); if (ret) return ret; =20 @@ -182,7 +171,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.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.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 10A662F8E9F for ; Sat, 6 Jun 2026 04:58:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721895; cv=none; b=L2+EKPqRVXiLMHQadWKqBUZQn6Z+5z4/7IIngo1Jss3Ek6AvQfZxmpSD5KAG9QasV0O9XDfqzyibzMIoEfOqbUPD1PkkiUoFLUIRVbCZrJWNjGlg9kL4XdrcROVzjMSWesls3VAWAzdywS0fvl3aWhASmUyuwpDe+XmGTL/ktUU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721895; c=relaxed/simple; bh=TwTMH444TQxyNANvjbKliwqB2xUrF4F6rItPqPyQfQk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nCo0hgv50olOfoqipQZAonSBSpkviZn+3juglI+MQgfP3GhPj4GPNfGG70r3ksIM8G9BnM3MADewn0ZdsqsF7ph0NbpV5Km0A8bKBlqcJLLmpzYPgVLYiyDl7ruEM/GxflLw8U2SYBK6tq4C55MLLUz6Bm2Vod+uaOUSwlSowz4= 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=YJj9WjiX; arc=none smtp.client-ip=209.85.208.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="YJj9WjiX" Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-68c08bfe5afso4974475a12.2 for ; Fri, 05 Jun 2026 21:58:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721892; x=1781326692; 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=VIXOvbsU7+o0n1Qu63VvvDhjmq7U5oR0cXTC0wZz+Oo=; b=YJj9WjiXr43PEAcbIaLfkvdprJG+MiDLNcOh1yMpwgG2uNq7XJtBRhk08MJASekLay z58rrhW47XSdwDTuW5ifeoNXDeKkIWu9COyB9zIShjRTs/SOZqD59C1e8IMGs1GAidUI 8d496OhP2+cvrDr3QhPgj9UnWD8meVa+KxP5Fdw4j4Vi2LVuZtjpG+eMYbjjJWH2cACY 6aj4mDbQ7Uf06nPfxHRxguoy9kj01jtphW0nbyvfb2RVILzpcGFVCnjHoH+7aiVn1//W 2cEfebvVPo5AQEFd1tVeTnVyGsLx54cTq6MDVKjkaz53PGiTEeX02wXPbe7CUxiCzgwf K/yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721892; x=1781326692; 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=VIXOvbsU7+o0n1Qu63VvvDhjmq7U5oR0cXTC0wZz+Oo=; b=OAPNipup1ZFz+Qj5gAL2u/R6pV86LcBwsjTG63cpRBkioqWUrSzYCvt/U88j+/v+SK UIt3dYHsNCnX3uPm5jg+LhhSNrvMt55L1I3J0VDwX/02nMBZqIG3BfD3JiVX/5dwySsc ZOofvPYtdl6tMwpZFqYMig8izlckfr5U2hXf3mopP1v8ofqRgp6+0foxlmey54jS6wYw 3XKq4jtP/W67dhZ221jQcrUHGG0mYK/7PCPtpqZ38vM/E7rICDULk4Hi8n9M6fPIHu6a BqY4CYgX5eI1/P5janrEaRDY6d9+H/XI/HZfU3g3rhhFqPQvVYWZfwkdiLBeTHhnHebi 58PA== X-Forwarded-Encrypted: i=1; AFNElJ/sMSTmKvd3z01t7iDHZua1T/iybM/kpoAiSPtAnKJHGrfoMR1VofKZYZ5TG/cU5bzJ2fSfMVQARf+Z9I8=@vger.kernel.org X-Gm-Message-State: AOJu0YydIrZHe6m2iJ3Bi06+HaZxmuBgSut68S/JkdPJ3ZFJvLaJLUW3 Jo0Tnddhp4bUtQCcE6qYe9TDn77edLmB11qB91i/uWQ3wn1RhFYc+U/d X-Gm-Gg: Acq92OEkm0FOebxZ045gw4oo+9KS7tEEAxeucJUGTHaU+GAw5YKprjXevHdrSeePFql c3/FuIFOWHn5uptwBlyjE0KXFP45K3TIDhO75eKhMHA8WnqQ+00LuUN9ylOkCoTGQkgiM+iL8CB eBg/A48W/u7yqkQPlhJHv88hmOP7LFKkoaAxRTI0cb2o1U6WyYGbjzlsoq4m4UhwBJDc3l5Z0Y0 0XzhP2x/mr+BQ2XaOynoPWKhwsBYm6ua/+j5Kq2DWTwxLOcDHfjd7Wm2L73Q7/mEoAc+SW2KDXw cslAXs127relD42tD8nRAyVL0m5I3uItxDIU45yKABrwFqUC/1knoMl+hm0MuWJJDEbtC1O63XO /HcJw+WJmwh5za/pwdxJonJqfN8d3lfWAHulqCknq5+7mIu5fDPfgxog+wvH0mFd2MuaINrOXpe My7NAwz6lEi1+Au8ERgYQ2CcMDoEj+rtU8sw== X-Received: by 2002:a17:907:75c2:b0:bec:db41:e4ae with SMTP id a640c23a62f3a-bf3737ebea2mr248152866b.43.1780721892058; Fri, 05 Jun 2026 21:58:12 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58: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 v4 03/14] mfd: lm3533: Remove extern from shared functions in the header Date: Sat, 6 Jun 2026 07:57:27 +0300 Message-ID: <20260606045738.21050-4-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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" Using 'extern' is not required, drop them. Signed-off-by: Svyatoslav Ryhel Reviewed-by: Andy Shevchenko --- include/linux/mfd/lm3533.h | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/include/linux/mfd/lm3533.h b/include/linux/mfd/lm3533.h index db0a5e5c9e39..aab8f08dfcb0 100644 --- a/include/linux/mfd/lm3533.h +++ b/include/linux/mfd/lm3533.h @@ -82,14 +82,13 @@ struct lm3533_platform_data { int num_leds; }; =20 -extern int lm3533_ctrlbank_enable(struct lm3533_ctrlbank *cb); -extern int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb); - -extern int lm3533_ctrlbank_set_brightness(struct lm3533_ctrlbank *cb, u8 v= al); -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, u32 *val); +int lm3533_ctrlbank_enable(struct lm3533_ctrlbank *cb); +int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb); + +int lm3533_ctrlbank_set_brightness(struct lm3533_ctrlbank *cb, u8 val); +int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlbank *cb, u32 *val); +int lm3533_ctrlbank_set_max_current(struct lm3533_ctrlbank *cb, u16 imax); +int lm3533_ctrlbank_set_pwm(struct lm3533_ctrlbank *cb, u8 val); +int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u32 *val); =20 #endif /* __LINUX_MFD_LM3533_H */ --=20 2.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (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 43629306B37 for ; Sat, 6 Jun 2026 04:58:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721899; cv=none; b=ZQLdKOXn/Lqz6GLZZ85WhXLo1r/pwLGJgbzc5ZPDQYjw2P0Hg+5pwo50+f+u26kD/hW5XCovEnvcnPWqeWELhw6HizZU3bjg2drViZCTg+1YKoQma1xhV7UIqk+eb+f9A7hNCe2XBedXqboLfhdUOyvkqKDSwgYgVOmNjNGtlGw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721899; c=relaxed/simple; bh=s0PwDA4IYUDR0kbBRpwppxawRW3izjGikcIKQ/q6d58=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EuyCUvebXtdJqrOZDcyzJ8cTYMWsiOX59sfQ0RUy6ogJFqjQi4s9pgnlex0gFOMRbuHWtVmNOPOcjGybpuR5lLicShdVz9eoWMTB66RyxY4MPLZxptBQdZlEHdyTsLa839CnLEsUJN14L+d8d0pW6A19JR5uAd7xGIJrkQy477M= 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=EbA3+HNK; arc=none smtp.client-ip=209.85.208.47 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="EbA3+HNK" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-68d23430690so5356444a12.3 for ; Fri, 05 Jun 2026 21:58:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721896; x=1781326696; 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=BMd8HY6ukZyI1ZnTN3O/lqGKIC/cU33GiiGHTNdAXMs=; b=EbA3+HNKYjBqe0X6FOv+xc1mcUUlynq3ZlPd+Xp+nEUhXpVSAGnZ63ZJmDsEN9J/wm fNPbTbK4gwFj/d8+F0eMgSrup35cSI+seEHiVsg7vIrfaMCfM+bpsKbOBRVufoL2b1vY JuJmE+gcXgD2d7biKE27uPTQBcb/RxrZmUzaRIq+rlJ7Ph+bqixjwZ5lbsQyLQXHha2L cAbc6LdpDYo8FrWEH3HPNIfxyA+h+Dz4ITksZ074iP0TXWd/Z1dUCKn2nbELfyK0qWg6 4bs7hZZ35m4bPkbuvQMjaC4s7MWWGW8B1b/2mi5mbx/RIMzowIOPZ4QPQrZQn1T1djDC a31w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721896; x=1781326696; 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=BMd8HY6ukZyI1ZnTN3O/lqGKIC/cU33GiiGHTNdAXMs=; b=HKk29YXBLSk/GIw3pg+Kxnf5oJYFJ76BFNaHgFgNZqPXNG0T4BxISHueK85uxrZ+aZ qdkhyRH/5AdrwiRtkZSlOVzng6nJIMejs5rIlGEQbqO7MkgV3bSkOsXVy47zVXj9UnZG QOhfaQl/dFQMXSyTUs3LWoSnA5FwP3HCtjKpUzNkDVFQtyZpSGirYdomTEoe/pwry2IO LfAaZPbwFkE7o06QupMqAAEzplbOFWD4nqULfBy/mrKjckx7M/wD3AqyO32oPf880O70 88Gutm8MY3if2kE5jjmPvMp6Ru3/yrXWaoJbk2YtygM+ryG/rA/L9Pqww+cOtPAtghRb TTSQ== X-Forwarded-Encrypted: i=1; AFNElJ9xSV04L8W41fnyHKbRa/jyLljNqnHg8sgyMDQJQbIoC6PmmIJi3U5jYLB0ZTYUSuc7rqTR6Pf93mxdvZs=@vger.kernel.org X-Gm-Message-State: AOJu0YwbF6+S7f61UO94cSf3ZREQXXmMP4+Z3OxVVVE4AqLCF292+3LL RmDMCbFS5BM775ffvMbVXL62n06E6FsBZ8sq/vsIn5npF+q08NN9QsjC X-Gm-Gg: Acq92OHFRpk8H98crF2UeAhikGZLrVdUu+3j4aE+65/kKVDE6LjD1e8z0k7gpjeG8jn dU9dJ/xXZ45WHSTAQctSSd61l8vheHhfSx2m9cTCDFldLvNTMHBoDTbtgriilY8Rc0y8EVwQVDE Kr9jUvVhStx/1Yzjr7J8XxXVLf7f/EDLwQv4rLWbkgUQFwPt+aAkvHAGeQEyQOnltqHnB4P+f4Q rVyMaKFxUjKpLbzticyGltB1kb2RGQuGQ1v9Wq+AV4xIfBk88YGbGNU053CXW/KBVLU2NKR8qBI PUGmk7qOAMfL2ygRvAsuVPfi5zRk0ep/XRnnfSSZqgtvleaw5pfOSMOCZvzB4yvxZwmgdevBX/r R57Z0YbJC0uiBEDSDvnubP21qIoA0+mHbM0ISV96SZUeTyrsvBvx+EQEkORH/6KDwUQRsGAaY0g C9uTePifEUUO612nQOkogqSmE= X-Received: by 2002:a17:907:6e9f:b0:beb:7979:47dd with SMTP id a640c23a62f3a-bf3738f1f81mr401214366b.27.1780721895503; Fri, 05 Jun 2026 21:58:15 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:14 -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 v4 04/14] mfd: lm3533: Pass only regmap and light sensor presence to child devices Date: Sat, 6 Jun 2026 07:57:28 +0300 Message-ID: <20260606045738.21050-5-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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" Instead of passing the entire lm3533 core data structure, only pass the regmap and the light sensor presence flag to child devices. Signed-off-by: Svyatoslav Ryhel --- drivers/iio/light/lm3533-als.c | 32 ++++++++++++++--------------- drivers/leds/leds-lm3533.c | 32 ++++++++++++++++------------- drivers/mfd/lm3533-ctrlbank.c | 14 ++++++------- drivers/video/backlight/lm3533_bl.c | 19 +++++++++-------- include/linux/mfd/lm3533.h | 2 +- 5 files changed, 53 insertions(+), 46 deletions(-) diff --git a/drivers/iio/light/lm3533-als.c b/drivers/iio/light/lm3533-als.c index 44b104c2d77f..a9af8e2b965f 100644 --- a/drivers/iio/light/lm3533-als.c +++ b/drivers/iio/light/lm3533-als.c @@ -49,7 +49,7 @@ =20 =20 struct lm3533_als { - struct lm3533 *lm3533; + struct regmap *regmap; struct platform_device *pdev; =20 unsigned long flags; @@ -73,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 regmap_read(als->lm3533->regmap, reg, &val); + ret =3D regmap_read(als->regmap, reg, &val); if (ret) { dev_err(&indio_dev->dev, "failed to read adc\n"); return ret; @@ -90,7 +90,7 @@ static int _lm3533_als_get_zone(struct iio_dev *indio_dev= , u8 *zone) u32 val; int ret; =20 - ret =3D regmap_read(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, &val); + ret =3D regmap_read(als->regmap, LM3533_REG_ALS_ZONE_INFO, &val); if (ret) { dev_err(&indio_dev->dev, "failed to read zone\n"); return ret; @@ -141,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 regmap_read(als->lm3533->regmap, reg, val); + ret =3D regmap_read(als->regmap, reg, val); if (ret) dev_err(&indio_dev->dev, "failed to get target current\n"); =20 @@ -162,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 regmap_write(als->lm3533->regmap, reg, val); + ret =3D regmap_write(als->regmap, reg, val); if (ret) dev_err(&indio_dev->dev, "failed to set target current\n"); =20 @@ -274,7 +274,7 @@ static int lm3533_als_set_int_mode(struct iio_dev *indi= o_dev, int enable) struct lm3533_als *als =3D iio_priv(indio_dev); int ret; =20 - ret =3D regmap_assign_bits(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, + ret =3D regmap_assign_bits(als->regmap, LM3533_REG_ALS_ZONE_INFO, LM3533_ALS_INT_ENABLE_MASK, enable); if (ret) { dev_err(&indio_dev->dev, "failed to set int mode %d\n", @@ -290,7 +290,7 @@ static int lm3533_als_get_int_mode(struct iio_dev *indi= o_dev, int *enable) struct lm3533_als *als =3D iio_priv(indio_dev); int ret; =20 - ret =3D regmap_test_bits(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, + ret =3D regmap_test_bits(als->regmap, LM3533_REG_ALS_ZONE_INFO, LM3533_ALS_INT_ENABLE_MASK); if (ret < 0) { dev_err(&indio_dev->dev, "failed to get int mode\n"); @@ -320,7 +320,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 regmap_read(als->lm3533->regmap, reg, val); + ret =3D regmap_read(als->regmap, reg, val); if (ret) dev_err(&indio_dev->dev, "failed to get threshold\n"); =20 @@ -342,7 +342,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 regmap_read(als->lm3533->regmap, reg2, &val2); + ret =3D regmap_read(als->regmap, reg2, &val2); if (ret) { dev_err(&indio_dev->dev, "failed to get threshold\n"); goto out; @@ -357,7 +357,7 @@ static int lm3533_als_set_threshold(struct iio_dev *ind= io_dev, unsigned nr, goto out; } =20 - ret =3D regmap_write(als->lm3533->regmap, reg, val); + ret =3D regmap_write(als->regmap, reg, val); if (ret) { dev_err(&indio_dev->dev, "failed to set threshold\n"); goto out; @@ -712,7 +712,7 @@ static int lm3533_als_set_input_mode(struct lm3533_als = *als, bool pwm_mode) { int ret; =20 - ret =3D regmap_assign_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, + ret =3D regmap_assign_bits(als->regmap, LM3533_REG_ALS_CONF, LM3533_ALS_INPUT_MODE_MASK, pwm_mode); if (ret) { dev_err(&als->pdev->dev, "failed to set input mode %d\n", @@ -732,7 +732,7 @@ static int lm3533_als_set_resistor(struct lm3533_als *a= ls, u8 val) return -EINVAL; } =20 - ret =3D regmap_write(als->lm3533->regmap, LM3533_REG_ALS_RESISTOR_SELECT, + ret =3D regmap_write(als->regmap, LM3533_REG_ALS_RESISTOR_SELECT, val); if (ret) { dev_err(&als->pdev->dev, "failed to set resistor\n"); @@ -766,7 +766,7 @@ static int lm3533_als_setup_irq(struct lm3533_als *als,= void *dev) int ret; =20 /* Make sure interrupts are disabled. */ - ret =3D regmap_clear_bits(als->lm3533->regmap, LM3533_REG_ALS_ZONE_INFO, + ret =3D regmap_clear_bits(als->regmap, LM3533_REG_ALS_ZONE_INFO, LM3533_ALS_INT_ENABLE_MASK); if (ret) { dev_err(&als->pdev->dev, "failed to disable interrupts\n"); @@ -789,7 +789,7 @@ static int lm3533_als_enable(struct lm3533_als *als) { int ret; =20 - ret =3D regmap_set_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, + ret =3D regmap_set_bits(als->regmap, LM3533_REG_ALS_CONF, LM3533_ALS_ENABLE_MASK); if (ret) dev_err(&als->pdev->dev, "failed to enable ALS\n"); @@ -801,7 +801,7 @@ static int lm3533_als_disable(struct lm3533_als *als) { int ret; =20 - ret =3D regmap_clear_bits(als->lm3533->regmap, LM3533_REG_ALS_CONF, + ret =3D regmap_clear_bits(als->regmap, LM3533_REG_ALS_CONF, LM3533_ALS_ENABLE_MASK); if (ret) dev_err(&als->pdev->dev, "failed to disable ALS\n"); @@ -845,7 +845,7 @@ static int lm3533_als_probe(struct platform_device *pde= v) indio_dev->modes =3D INDIO_DIRECT_MODE; =20 als =3D iio_priv(indio_dev); - als->lm3533 =3D lm3533; + als->regmap =3D lm3533->regmap; als->pdev =3D pdev; als->irq =3D lm3533->irq; atomic_set(&als->zone, 0); diff --git a/drivers/leds/leds-lm3533.c b/drivers/leds/leds-lm3533.c index a48991958eae..f57d97201816 100644 --- a/drivers/leds/leds-lm3533.c +++ b/drivers/leds/leds-lm3533.c @@ -42,13 +42,15 @@ =20 =20 struct lm3533_led { - struct lm3533 *lm3533; + struct regmap *regmap; struct lm3533_ctrlbank cb; struct led_classdev cdev; int id; =20 struct mutex mutex; unsigned long flags; + + bool have_als; }; =20 =20 @@ -96,7 +98,7 @@ static int lm3533_led_pattern_enable(struct lm3533_led *l= ed, int enable) pattern =3D lm3533_led_get_pattern(led); mask =3D 1 << (2 * pattern); =20 - ret =3D regmap_assign_bits(led->lm3533->regmap, + ret =3D regmap_assign_bits(led->regmap, LM3533_REG_PATTERN_ENABLE, mask, enable); if (ret) { dev_err(led->cdev.dev, "failed to enable pattern %d (%d)\n", @@ -255,7 +257,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 regmap_write(led->lm3533->regmap, reg, val); + ret =3D regmap_write(led->regmap, reg, val); if (ret) dev_err(led->cdev.dev, "failed to set delay (%02x)\n", reg); =20 @@ -336,7 +338,7 @@ static ssize_t show_risefalltime(struct device *dev, u32 val; =20 reg =3D lm3533_led_get_pattern_reg(led, base); - ret =3D regmap_read(led->lm3533->regmap, reg, &val); + ret =3D regmap_read(led->regmap, reg, &val); if (ret) return ret; =20 @@ -371,7 +373,7 @@ static ssize_t store_risefalltime(struct device *dev, return -EINVAL; =20 reg =3D lm3533_led_get_pattern_reg(led, base); - ret =3D regmap_write(led->lm3533->regmap, reg, val); + ret =3D regmap_write(led->regmap, reg, val); if (ret) return ret; =20 @@ -405,7 +407,7 @@ static ssize_t show_als_channel(struct device *dev, int ret; =20 reg =3D lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); - ret =3D regmap_read(led->lm3533->regmap, reg, &val); + ret =3D regmap_read(led->regmap, reg, &val); if (ret) return ret; =20 @@ -437,7 +439,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 regmap_update_bits(led->lm3533->regmap, reg, mask, val); + ret =3D regmap_update_bits(led->regmap, reg, mask, val); if (ret) return ret; =20 @@ -455,7 +457,7 @@ static ssize_t show_als_en(struct device *dev, int ret; =20 reg =3D lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); - ret =3D regmap_read(led->lm3533->regmap, reg, &val); + ret =3D regmap_read(led->regmap, reg, &val); if (ret) return ret; =20 @@ -479,7 +481,7 @@ static ssize_t store_als_en(struct device *dev, =20 reg =3D lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); =20 - ret =3D regmap_assign_bits(led->lm3533->regmap, reg, + ret =3D regmap_assign_bits(led->regmap, reg, LM3533_REG_CTRLBANK_BCONF_ALS_EN_MASK, enable); if (ret) return ret; @@ -498,7 +500,7 @@ static ssize_t show_linear(struct device *dev, int ret; =20 reg =3D lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); - ret =3D regmap_read(led->lm3533->regmap, reg, &val); + ret =3D regmap_read(led->regmap, reg, &val); if (ret) return ret; =20 @@ -525,7 +527,7 @@ static ssize_t store_linear(struct device *dev, =20 reg =3D lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); =20 - ret =3D regmap_assign_bits(led->lm3533->regmap, reg, + ret =3D regmap_assign_bits(led->regmap, reg, LM3533_REG_CTRLBANK_BCONF_MAPPING_MASK, linear); if (ret) return ret; @@ -597,7 +599,7 @@ static umode_t lm3533_led_attr_is_visible(struct kobjec= t *kobj, =20 if (attr =3D=3D &dev_attr_als_channel.attr || attr =3D=3D &dev_attr_als_en.attr) { - if (!led->lm3533->have_als) + if (!led->have_als) mode =3D 0; } =20 @@ -654,7 +656,9 @@ static int lm3533_led_probe(struct platform_device *pde= v) if (!led) return -ENOMEM; =20 - led->lm3533 =3D lm3533; + led->regmap =3D lm3533->regmap; + led->have_als =3D lm3533->have_als; + led->cdev.name =3D pdata->name; led->cdev.default_trigger =3D pdata->default_trigger; led->cdev.brightness_set_blocking =3D lm3533_led_set; @@ -670,7 +674,7 @@ static int lm3533_led_probe(struct platform_device *pde= v) * registration so use parent device (for error reporting) until * registered. */ - led->cb.lm3533 =3D lm3533; + led->cb.regmap =3D lm3533->regmap; led->cb.id =3D lm3533_led_get_ctrlbank_id(led); led->cb.dev =3D lm3533->dev; =20 diff --git a/drivers/mfd/lm3533-ctrlbank.c b/drivers/mfd/lm3533-ctrlbank.c index b78c130d7712..07aec46e8c0a 100644 --- a/drivers/mfd/lm3533-ctrlbank.c +++ b/drivers/mfd/lm3533-ctrlbank.c @@ -39,7 +39,7 @@ 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 regmap_set_bits(cb->lm3533->regmap, LM3533_REG_CTRLBANK_ENABLE, + ret =3D regmap_set_bits(cb->regmap, LM3533_REG_CTRLBANK_ENABLE, mask); if (ret) dev_err(cb->dev, "failed to enable ctrlbank %d\n", cb->id); @@ -56,7 +56,7 @@ 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 regmap_clear_bits(cb->lm3533->regmap, LM3533_REG_CTRLBANK_ENABLE, + ret =3D regmap_clear_bits(cb->regmap, LM3533_REG_CTRLBANK_ENABLE, mask); if (ret) dev_err(cb->dev, "failed to disable ctrlbank %d\n", cb->id); @@ -82,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 regmap_write(cb->lm3533->regmap, reg, val); + ret =3D regmap_write(cb->regmap, reg, val); if (ret) dev_err(cb->dev, "failed to set max current\n"); =20 @@ -96,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 regmap_write(cb->lm3533->regmap, reg, val); + ret =3D regmap_write(cb->regmap, reg, val); if (ret) dev_err(cb->dev, "failed to set brightness\n"); =20 @@ -110,7 +110,7 @@ int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlba= nk *cb, u32 *val) int ret; =20 reg =3D lm3533_ctrlbank_get_reg(cb, LM3533_REG_BRIGHTNESS_BASE); - ret =3D regmap_read(cb->lm3533->regmap, reg, val); + ret =3D regmap_read(cb->regmap, reg, val); if (ret) dev_err(cb->dev, "failed to get brightness\n"); =20 @@ -137,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 regmap_write(cb->lm3533->regmap, reg, val); + ret =3D regmap_write(cb->regmap, reg, val); if (ret) dev_err(cb->dev, "failed to set PWM mask\n"); =20 @@ -151,7 +151,7 @@ int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb,= u32 *val) int ret; =20 reg =3D lm3533_ctrlbank_get_reg(cb, LM3533_REG_PWM_BASE); - ret =3D regmap_read(cb->lm3533->regmap, reg, val); + ret =3D regmap_read(cb->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 03cce6aeb014..39f438114c48 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -24,10 +24,12 @@ =20 =20 struct lm3533_bl { - struct lm3533 *lm3533; + struct regmap *regmap; struct lm3533_ctrlbank cb; struct backlight_device *bd; int id; + + bool have_als; }; =20 =20 @@ -88,7 +90,7 @@ static ssize_t show_als_en(struct device *dev, bool enable; int ret; =20 - ret =3D regmap_read(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCONF, &va= l); + ret =3D regmap_read(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, &val); if (ret) return ret; =20 @@ -113,7 +115,7 @@ static ssize_t store_als_en(struct device *dev, =20 mask =3D 1 << (2 * ctrlbank); =20 - ret =3D regmap_assign_bits(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCO= NF, + ret =3D regmap_assign_bits(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, mask, enable); if (ret) return ret; @@ -130,7 +132,7 @@ static ssize_t show_linear(struct device *dev, int linear; int ret; =20 - ret =3D regmap_read(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCONF, &va= l); + ret =3D regmap_read(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, &val); if (ret) return ret; =20 @@ -158,7 +160,7 @@ static ssize_t store_linear(struct device *dev, =20 mask =3D 1 << (2 * lm3533_bl_get_ctrlbank_id(bl) + 1); =20 - ret =3D regmap_assign_bits(bl->lm3533->regmap, LM3533_REG_CTRLBANK_AB_BCO= NF, + ret =3D regmap_assign_bits(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, mask, linear); if (ret) return ret; @@ -223,7 +225,7 @@ static umode_t lm3533_bl_attr_is_visible(struct kobject= *kobj, =20 if (attr =3D=3D &dev_attr_als_channel.attr || attr =3D=3D &dev_attr_als_en.attr) { - if (!bl->lm3533->have_als) + if (!bl->have_als) mode =3D 0; } =20 @@ -277,10 +279,11 @@ static int lm3533_bl_probe(struct platform_device *pd= ev) if (!bl) return -ENOMEM; =20 - bl->lm3533 =3D lm3533; + bl->regmap =3D lm3533->regmap; + bl->have_als =3D lm3533->have_als; bl->id =3D pdev->id; =20 - bl->cb.lm3533 =3D lm3533; + bl->cb.regmap =3D lm3533->regmap; bl->cb.id =3D lm3533_bl_get_ctrlbank_id(bl); bl->cb.dev =3D NULL; /* until registered */ =20 diff --git a/include/linux/mfd/lm3533.h b/include/linux/mfd/lm3533.h index aab8f08dfcb0..696014deaa7c 100644 --- a/include/linux/mfd/lm3533.h +++ b/include/linux/mfd/lm3533.h @@ -33,7 +33,7 @@ struct lm3533 { }; =20 struct lm3533_ctrlbank { - struct lm3533 *lm3533; + struct regmap *regmap; struct device *dev; int id; }; --=20 2.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (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 73AF8309DAF for ; Sat, 6 Jun 2026 04:58:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721901; cv=none; b=LYsWOh+Xc+9GCiwBVCjVfOiD7jfysX5FBhagpSnByFaTyEz9kO/W+yktL3NQNgZc/o10LUVChdxI6OexWLbqAxrscZ0QOhvzGRs9ChGh5I8wrOOmvCBf/8/eVvu2D1HLCwjVTxx1x6F79hVBojmBomuyRNhwyxzHPl6QIGqyKLY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721901; c=relaxed/simple; bh=YRqN1j/Uc0jI/GiT/Eg6MIuncKpETtLQTmH4/MsCOmk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kRFprPhdN2EO9AV9XYuwRi7r/cBSrFHa2nsFpTnKh148lVE/Se1Q8a3bbvoQ5uvE1WjPLzBqQ4sJOhfSDu0ucr6F/1+aDsKJTm/335P520z7fd4LH7RSTonrwrLmVDebNb8X0ipmpp146N2+7/5P/3zrGvTV8LGXqstFXoW1hi0= 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=GGpYP5Ht; arc=none smtp.client-ip=209.85.218.54 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="GGpYP5Ht" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-bf046d4da1fso267301666b.3 for ; Fri, 05 Jun 2026 21:58:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721899; x=1781326699; 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=YqXfwtTZgGLv1WLyA0/ZZTY8n+25azMFw/42UfL9a9I=; b=GGpYP5Hts8BID/r58VqOnLfMhLRly5Vmj8qSNLiDFFwEjswkhc4HCDjOXeWFWatmP9 yvLiQ1jQEV19MU+UnmyL9bjo4v5y3gJoOHPfBQgkHeUe62rdHtEALKm4HQ9o6Si4sewa hEfT4buYJVM0PY+PJlsvN1354HUW7TXzqzBDIhoEeZbYJ/TMUAZbKw27D9x3BdJhHJha yRa8K8xdVm4riCMEmGygbHMNB14wxud/CeMNz7FKnrc/y9O3g1yTkTMfnpbCWVqjj7ex ZXqJM5TGr5fp9+V0M2ui5TvCWRVoLnSwr6aLn1iV5lmcHyjyeU8qFrU25Xm105gdl6Q9 Dwgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721899; x=1781326699; 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=YqXfwtTZgGLv1WLyA0/ZZTY8n+25azMFw/42UfL9a9I=; b=W99aB9rOPqIe1+e3zB86dV6ZqMbi91l5rGUHOS7TzKcD3IBwJODoRWb7RtUKqsB0kp oGFEfN6OezIIWpS7avc5karT97pMr81mmKXjrJYjzqS6T1VMdzB112+rqM7+HLl93gx9 90PsyTENhvvhI46sPn4ZAhhMKgldo48jdwmPFj+wCxcfGHUtCCdsaqCBPge/sc/nzikd 1gIL4eY0tOwlBmqyYQoOGnGrkDumTI4ieClohxLmc16Vikh6ZGemBsMzHWJuZhcA/JYM u8X015VcyAqDHlVANJCj7DXJJ9mf1mm9f3YrDaH5v4m8gttKkc5DW6oUKrIVNCLmYeNt GPLQ== X-Forwarded-Encrypted: i=1; AFNElJ+hW4/vHllY03rvpWqdra/R0q+0Y6+JaQPw12Y2DDMjYOLJF3DMQ9SdITIb0TupOhJfvI6kQeMEW9aBe88=@vger.kernel.org X-Gm-Message-State: AOJu0Yxpmal7K3Jp80onvwfi6Ge1AI70oscEPwHwclZC1buzTkUNSOZC 6X02cpi+PQd10pl9/ANnVp7pTywhc/JJuO07cBHWwOxEPp6g9XjntcXs X-Gm-Gg: Acq92OFb6f0yW6u/V7s25upOROnqpAnKx6lICwmf6nW5EifENReFJ8btA5FvPrE//ay AlGx6ETUs+680M5w4y30+XcpNXkWGVXQGrk4kTDjcuyuz3cCQ16270w+qTySRWIkjNk1WJnxa1b DpTsHi/F/jx/uPZl3Y5JBmaiWokBb8si3D1iOxwWm1RutCdxSw3z79bUColnDbItVSASk7cogX9 mUmnd0gP1P8ZVRzNfxeNNKPBhUI2styXcT+0zAJ9jRiBWMndrAajRIVX+GLLOEYJxVrx+pOcFon JGV7OGMBgk1kZVSmGjfQQvWKg0s7ekw7kdHh5iLqCAQz3PVnbK5Gim8zBq3W7KrZteWmjBBRkYN qXWsHnqhZq+UR2BlrlF710niV5RDI0bU4FTUqOR/cJ9LAGsNzNHUT7QhCTD0uBRUQigYy6j98aD xGWZ+ziif1pFYr9VKR2+Emoao= X-Received: by 2002:a17:907:60cb:b0:bee:4562:32fa with SMTP id a640c23a62f3a-bf3708686cdmr334213566b.14.1780721898847; Fri, 05 Jun 2026 21:58:18 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:17 -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 v4 05/14] iio: light: lm3533-als: Remove redundant pdata helpers Date: Sat, 6 Jun 2026 07:57:29 +0300 Message-ID: <20260606045738.21050-6-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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 | 51 +++++++++------------------------- 1 file changed, 13 insertions(+), 38 deletions(-) diff --git a/drivers/iio/light/lm3533-als.c b/drivers/iio/light/lm3533-als.c index a9af8e2b965f..c4035d1c8d57 100644 --- a/drivers/iio/light/lm3533-als.c +++ b/drivers/iio/light/lm3533-als.c @@ -708,54 +708,29 @@ 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) -{ - int ret; - - ret =3D regmap_assign_bits(als->regmap, LM3533_REG_ALS_CONF, - LM3533_ALS_INPUT_MODE_MASK, pwm_mode); - 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->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_assign_bits(als->regmap, LM3533_REG_ALS_CONF, + LM3533_ALS_INPUT_MODE_MASK, pdata->pwm_mode); 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) + return dev_err_probe(dev, -EINVAL, + "invalid resistor value\n"); + + ret =3D regmap_write(als->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.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.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 1FAF3305675 for ; Sat, 6 Jun 2026 04:58:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721905; cv=none; b=pH3bHBVPBRZI2JoJ8C83YGwhPK9p2XUlSR80DzUVjFHXBYEzhm0ZYI++SwoRGNu2INiruxWIWGmgMvuJJgUPUlATy4jVY9CWcZ9XIA3FWM/R8KsLWQ/NUREGpvclKdCAgQHcWPIa0cw/WL8G+ufho6U3S5qJI7plyEc/VnIZFZk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721905; c=relaxed/simple; bh=4z8TZ1ZUPM43BFkNRD7i/+Vv36ZfSXtks2zi9DysJhY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZC3CoEyeYWieJzwgV13nK7IBd3NRkbWpGC6w7ExrGu1d+MOwMDN9KObsfTBdzuutgMh7r6bnHDxyG8Q4l8kpXXaQVx0hP8epn4KtL0YERI6Ul+tegigImAgK22ypfNnA8eTKJTy7hv6G/i3jb0Dlz7Juy2tiU4jCrRZeOsl+3P0= 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=l1+nCZh9; arc=none smtp.client-ip=209.85.218.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="l1+nCZh9" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-bebde89cfd3so315550166b.2 for ; Fri, 05 Jun 2026 21:58:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721903; x=1781326703; 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=wS67jochwubseohJgYpjn1pYUwemo5z+ytbVISXPDzc=; b=l1+nCZh9V7/wz6JtkQQ6PBnqXL/wtVrqwMlhOqOaVMYkob9Wpupqqjq0mZ0KpL26B9 y4b4hPJFKh5sDnxM5QFJd99qkzPoMCE/UKzvL714iLWhyhdeDSnnXugP8R4JYN3d9EcJ ySja4FYQ7zoU7Duh7m26VxteXMBx81fYQSihfnZZGaaYPq6edxOQpzHZQGmM+fBWPg5Q oP7NZmfCcvzd0RH6m6sujxTI1jXn0aqUxv3ttU4o092DZoQryryUlo6M9y/rSWuwWthG V8FMQPaUZiK9ajYwkKkEERFQv23w7jGIsa2b97/FQeca89ief8a4ePr2tTHAOKAPGWXh /fDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721903; x=1781326703; 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=wS67jochwubseohJgYpjn1pYUwemo5z+ytbVISXPDzc=; b=Yir38X7T8oJ+2hrWVqdLzSYMyW8wdXXP0jE6VqCNSk86rsYcVE6NMRSbGPTINOsp2R wITB+Doquuz9ZqmQKsFIHtgfmaD2LXJJ+de9DDDjxYAtHW3zIknqNfcmQS24pUxHe6xs R7aLquECddgUreJZGuQnhk/37+XRXvL6tliXK5BQWMencNGrXYUTPtVMZGsH3GE+wUnh Ui8Y2KsiCwSYVVm0pIBi4ijkZd2uxgvkGHxL89/F97/eze7JsDrqppkiqJdg3JC4xFKs i8SLXR3J4kfucM5b3EZfGrhTvJjFkkLBDqmNXjLO+inrYsXWIBmwRItorGl/jHV8PG9x rYyg== X-Forwarded-Encrypted: i=1; AFNElJ/b4dIUHQG5ZrJbJKn+m8zmDHs/u/tDssBuMWe3uH0fydlBCVXAXPOls0qsGSjIrrj3NL5CyzoNQobNcBI=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+i+1C4QYyhfb6ts4bUPbDAynsO0xU8akZDJQFDqvFAKiowV3n VBnBXodgBB3Yp4mxQ+1lYoftCPQd1hLBfilpatYZA/UZpATFg9e1zJrw X-Gm-Gg: Acq92OG6hN64hVyeycr+rH0mpwcYG2BqBQgytLQL6uEj4rwq+PUnPNbVWFBp/aLlxiH T9aM8j2MrUpbTBShb+xKRn9wfosbA0Fqhsokkm78P4cn+Cbr67zna1zEKo6LSFd+Qe6FsBL/VHv CEvzN8PRiEGOtokFf+a35l6fFYziQlLTyHehCjHSwgYePgpstCyIqz66uA93UZsuy6EPowNE35h Q8Dtu9yaFbd3XD38vmde4czzqGrf4NWPGziqtXdA5z3qkKcTEVQrLaxZIgM07CLur6xw7HeX91d 5AwFMbjNcTQ1+5aW1DtJ+3365CYEPCvFzuFJ9P3e70MgiXO+O9BRhPBmXloYuqWXvuUX7xNCYY1 EmlVQP35aZUBbjaQatzjkicnlxWXPC8zYUZEmRU17BdouVluZb6xv7dzUVj1VQ9xUvcMbtDfFsG UdUp23Ln6rrqu75T28a2gomfE= X-Received: by 2002:a17:907:3fa1:b0:bdd:378:3f2a with SMTP id a640c23a62f3a-bf372d28da4mr313211866b.38.1780721902322; Fri, 05 Jun 2026 21:58:22 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:20 -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 v4 06/14] mfd: lm3533-core: Remove redundant pdata helpers Date: Sat, 6 Jun 2026 07:57:30 +0300 Message-ID: <20260606045738.21050-7-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 50F7C30C343 for ; Sat, 6 Jun 2026 04:58:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721907; cv=none; b=HnfZo21OFygZnh3o8g80ImJ8bD3JOPt7qHL82z1V6o47UsjGCv2nLXIi7CgneSiQK9mHW6WTHefZ6cxnCm1TmLSQM8041gNo4agoMDW/UolKhc6XCVoesVtMjheph2UhqBc2Gpx4JE25KwCMrFg+oMIAmUDZH/+ycEIStBdY/Qw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721907; c=relaxed/simple; bh=O+IQDDaskjpiY9H7vh3SwWeHCbOSEhzjDI8laqLbRkE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PEP0UT8N8b0VEZp3kSe3DqN2zXnrYOhYatFa1kScaHfXjz98bLX3r6Rv/FkdjG7VxTYlTa55oqz0pVIhHw6a7avOMXOEDEGRGINm+BUpSKNvwNnBqHHasozLyakxMBOdGNMMtQW4H0+iEEiSd3RZ6TETwMIuIFLyWC6seUJbseU= 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=E49JGrj4; arc=none smtp.client-ip=209.85.218.52 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="E49JGrj4" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-bebbc325000so310852566b.0 for ; Fri, 05 Jun 2026 21:58:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721905; x=1781326705; 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=yN9wV+nrusoIiZXpR2QbLHADEoHUVVuow5fDPzDOfKY=; b=E49JGrj4Nx+Ge9LGt1wMJ1FmPcIKiAT5nYDYu7F9BK3kHL0NhPX2bABzkD+KSEC8RB 93lXRNaJatpao2sKzCk5RD79L4Yl258IZmVVwamxpPPt+dO3kkIjHxXMsDhraXFC48IU rNgDAP+LGeSrph0vwpHhNvlyvoc1d296v+wCYoZmhV9RiREZo5Vh4LiHsdSIK6BliRJ6 WBjPVEojKkPX9vEejLxNAD8i5HDk8AhZfNpFWR1U70JBk0pImX1mjGOB1OOf5lMvIBoj veErV2Ym4lq8fJxmk3eCyJIJxIfREbGEF1nvE5p8j7PxYJw0u8utWfkudGYdkYdR1Q25 B9DQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721905; x=1781326705; 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=yN9wV+nrusoIiZXpR2QbLHADEoHUVVuow5fDPzDOfKY=; b=s9ML7BQMoaTC69eSl/Bvv1I2nI1OLdpTzfWgXqe1dN9pG8C5G7KT0OZOuogUfURK+h glguivTGALy3JEHEJ6qt828K7d7XXlf/cGQ9r5g8dLiTFCr/5XTXZ4tYOTT2kFVCTSv4 Ff9BUamIL4DloLOXXHMTobx5ZEYHTD9NVQcvTSbd8UxsyAssTm5phhwIqWINv5SU0W2m JYpYwwoJm4p43bk5LkIljQ8hQjGOi8oFEWHDXeN8Fqw4KdUjQHDa+OvseJa4WEsCaqP1 ti+VvsMMmUVHBdsxrvdCAbcXP2UXEVUD1QrEMrB0tDvBOPFphsB0fYW8Rn/fe+FgQG2L Z/hw== X-Forwarded-Encrypted: i=1; AFNElJ9po0oVot/sIdWhZqibZ4J6olMX/wxSMYOmZrMIsBRuiLCGz4LelBCS9ISIirjNC8kwoq0Stlbyv9L6M0Y=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+LsSRyLs6oDjj7Z2cxdZUztzr/4PUTlu6PEqK0D8g02WL7Z9a QcFoVsmaI3J+HOX7/LW9UHdjnE5+9VkjU1SbgKnI3BZZj05hV9SMBeGa X-Gm-Gg: Acq92OHsJnN4VALUmQbLDhQSgru9C4YfLaOxriGV6cAT01u2248Y12bY2SxJkm0OU/b uLdL4og7C1tAWiylPE4zXFF450FY+J2NpWctAtepw9pQ7RMElMe0jdMsWCsoJ+dVlqOWgX5esFy VPz+xzACZh+K8c8MpnyRjY2FV7Nn2w2abeV1+wmBI8HrDzNv38NvfkCLoxjKeK8pkB9sKiEDiPz VwSutqToGaSjMlqtUMXUij/ayWo7jchqfXGfNmkn8kiH6yuGxj5ubqDtXtCZZ4l9rfIHZvzV9jF XxCPFUVUSh7ir/pxfE4H+2CIafr744qDqTje8mm+SyWAxhm80fEmhydZEvgyZyon+mwCcDR/dHq f6fqrMp3D1+HMa3VHUvUUz0NHhAqjNTGIyAh+nYw8BpNGgkK/C9O/1A3/Fo18c6nK3FVz1juPhG GqLtdizNAn8JDjcFHtfz8HgoM= X-Received: by 2002:a17:906:f58d:b0:bed:5d12:db5d with SMTP id a640c23a62f3a-bf37135e498mr329022266b.4.1780721904690; Fri, 05 Jun 2026 21:58:24 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:24 -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 v4 07/14] mfd: lm3533: Switch sysfs_create_group() to device_add_group() Date: Sat, 6 Jun 2026 07:57:31 +0300 Message-ID: <20260606045738.21050-8-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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" Switch from sysfs_create_group() to device_add_group() including device managed where appropriate. Signed-off-by: Svyatoslav Ryhel --- drivers/mfd/lm3533-core.c | 4 ++-- drivers/video/backlight/lm3533_bl.c | 19 ++++++------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c index 45e7f7481aa0..e3efc9f6f348 100644 --- a/drivers/mfd/lm3533-core.c +++ b/drivers/mfd/lm3533-core.c @@ -416,7 +416,7 @@ static int lm3533_device_init(struct lm3533 *lm3533) lm3533_device_bl_init(lm3533); lm3533_device_led_init(lm3533); =20 - ret =3D sysfs_create_group(&lm3533->dev->kobj, &lm3533_attribute_group); + ret =3D device_add_group(lm3533->dev, &lm3533_attribute_group); if (ret < 0) { dev_err(lm3533->dev, "failed to create sysfs attributes\n"); goto err_unregister; @@ -436,7 +436,7 @@ static void lm3533_device_exit(struct lm3533 *lm3533) { dev_dbg(lm3533->dev, "%s\n", __func__); =20 - sysfs_remove_group(&lm3533->dev->kobj, &lm3533_attribute_group); + device_remove_group(lm3533->dev, &lm3533_attribute_group); =20 mfd_remove_devices(lm3533->dev); lm3533_disable(lm3533); diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/= lm3533_bl.c index 39f438114c48..b4363a30b2c8 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -304,28 +304,22 @@ static int lm3533_bl_probe(struct platform_device *pd= ev) =20 platform_set_drvdata(pdev, bl); =20 - 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"); - return ret; - } + ret =3D devm_device_add_group(&bd->dev, &lm3533_bl_attribute_group); + if (ret < 0) + return dev_err_probe(&pdev->dev, ret, + "failed to create sysfs attributes\n"); =20 backlight_update_status(bd); =20 ret =3D lm3533_bl_setup(bl, pdata); if (ret) - goto err_sysfs_remove; + return ret; =20 ret =3D lm3533_ctrlbank_enable(&bl->cb); if (ret) - goto err_sysfs_remove; + return ret; =20 return 0; - -err_sysfs_remove: - sysfs_remove_group(&bd->dev.kobj, &lm3533_bl_attribute_group); - - return ret; } =20 static void lm3533_bl_remove(struct platform_device *pdev) @@ -339,7 +333,6 @@ static void lm3533_bl_remove(struct platform_device *pd= ev) bd->props.brightness =3D 0; =20 lm3533_ctrlbank_disable(&bl->cb); - sysfs_remove_group(&bd->dev.kobj, &lm3533_bl_attribute_group); } =20 #ifdef CONFIG_PM_SLEEP --=20 2.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.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 EE9DC30D408 for ; Sat, 6 Jun 2026 04:58:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721912; cv=none; b=gK7d70ls+AzVxWvHanAUByXqGGaJSy7ueQxaPrD3RT51+c4R9gOHF5bHRiMbMQcILERipW1ReUK+3wgyQVEFXM3/agf5+zqt0ihCL0rrsm5d41mLHcdicCmbmEjeO3oiVxJaRPyzas2Rj+nBYFs06f4nQ26rgeJ77lzeRA0YgxI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721912; c=relaxed/simple; bh=v3Q4MRjIdJO+xnsKPLjaINesqpeuELzHNsI9WbWurqY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Q5DFso2D2mpHHYPQdnd0ipLmvKJ1qeJgcFNfDVklFKSoNPHE6UnYxT1zGPXszRqUs4LofmZgHX4z9jdb7ys01dVWl5NwpUY/A6Q4QKH+TxNBRpQ+aLPIeaLEHRMvwTW1iO9twe5jXeb/oz4qCVPHWksGHhBGMM21PGHrltiiIA0= 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=jhDj+C3T; arc=none smtp.client-ip=209.85.218.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="jhDj+C3T" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-bec43ee8ff0so373261266b.1 for ; Fri, 05 Jun 2026 21:58:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721908; x=1781326708; 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=TCQU5hTKwnnVQ8s/EYP1FmGAYa8cB7bTz1dncUM+SfM=; b=jhDj+C3TYJrir472vOJTNQuLO6UcOMMsETPbTnUTpXZz0jMlL01sWokYlIvSbb6VlK 4OAUAh286wlzG89dFVmNQAewJU6rPZ3RkhJ3kscGtoyiZpBkkpTaHHrzFxyWa103RLTd YeBUY7CPp7gxPADK9IBs6EBuZ4FIn4GMVJbv9mw59aVVcBRtk+mIIflsfl7MFvbzGI92 DPsr5P8B2mpCYIXUuwHZMBDf3og2mQvZKDMgJV5OF2+5M89B6uU1AC+Ywuvn/RzHtd07 TZb/fSCWeXwNToSjEBiTKmik7PWed4KFq7Zj12Oag1dUr3QbwgSQZS23wvejNkNXgVEy Y/0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721908; x=1781326708; 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=TCQU5hTKwnnVQ8s/EYP1FmGAYa8cB7bTz1dncUM+SfM=; b=QbFvYp0VCRJ+JDT6CWlnQGln7emCmrbERDcbwo96M2ze5W25tvf1lWbWK5PnCufVrX 8bBd1/C2r9eFXDVVbNN+43qC4taU+ik0x7luQGUJAU/jcmhNUeM0jWFg0E7cVtI56z8Y kNTydYYbsdv03mXIcfcZIKBndQObTxXnmilLsHqLtxB6SAz+5zXX2bTP9ki2uC5mI0I8 LrXu2tp7pkqig4Q6RdxNuEFsfdm8iOfWagyfu1kvuLZ4MOHOXhVtjkzB6jCKL80blZb+ NIXqhUrWqF2J5GLPHaK3qx7jDabPzjvhwilwtNnTcT2/VNii7sd7nWxHelK28KrTd73f WMEQ== X-Forwarded-Encrypted: i=1; AFNElJ/FM2CIpV1UhAnIfkG1pG7lvBqNMDWvNh4PXILKMWN3NpJdRqotcSGkL/kUnhkb5fuhi0raOJVLl+nIdTg=@vger.kernel.org X-Gm-Message-State: AOJu0YzfBdm2n6QoELgxhryipG3WvisZIpG1ID2R7U50WFwoPdW/O4cY ESAz1HLzIDT4HC2Tzopmxoz+nnc6yiNMFBLPJbcjxp909Xhl6LCFhlYn X-Gm-Gg: Acq92OE6bZw8sMj+v2nOS6vKYbNVMGZ31YeJg7J3x8t4wrwoT4E9RFzGJ5kLqzQEJeu zpdZ/wZX8TNX+DaDvE75t9xtZWJQlNBVOm42chJT73LVF+4LUEHBwzPc8y978KjEAtMs6sNu7c9 UVzOvBjs0AaYbuIL2kj/mJ+Ga1Gn6t6CQyCpSnpe1eFkpX4Oj9P0xsk1v8brqf6t3dusPJ+haU/ qffG2wOawDVUOQdWtJpFBcR+PciG4jWuWyECjDhQz4d2qOYoK64aX3i7zLbL/hGs/ejgt4Lfjc7 kggfSXkIYDGYqqvfowrZhAfMufkzP9ZBehI3g5d+70ozKEhKZmp88aAlb6h5eFm89EHfwD82Pyz 9hONZ5d4qU837Qc+84HrtQpyD/Flc8+AdYZQI3Ybdqp4QfmbeZqM+3BAVmOWQZ4DqX1dt6RHL24 Fjw3e56NpnFNaAu9WFxvERSH7W7TiwHMAm4Q== X-Received: by 2002:a17:906:d550:b0:bec:1632:eceb with SMTP id a640c23a62f3a-bf3a840d8bcmr261923166b.19.1780721908264; Fri, 05 Jun 2026 21:58:28 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:26 -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 v4 08/14] mfd: lm3533: Convert to use OF bindings Date: Sat, 6 Jun 2026 07:57:32 +0300 Message-ID: <20260606045738.21050-9-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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 | 67 +++++--- drivers/leds/leds-lm3533.c | 51 ++++-- drivers/mfd/lm3533-core.c | 236 ++++++++++++---------------- drivers/mfd/lm3533-ctrlbank.c | 5 - drivers/video/backlight/lm3533_bl.c | 59 ++++--- include/linux/mfd/lm3533.h | 52 +----- 6 files changed, 225 insertions(+), 245 deletions(-) diff --git a/drivers/iio/light/lm3533-als.c b/drivers/iio/light/lm3533-als.c index c4035d1c8d57..d51cf96970b9 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_OHMS 1575 +#define LM3533_ALS_RESISTOR_MAX_OHMS 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; + + u32 r_select; + bool pwm_mode; }; =20 =20 @@ -403,7 +409,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; @@ -425,7 +431,7 @@ static ssize_t store_thresh_either_en(struct device *de= v, u8 zone; int ret; =20 - if (!als->irq) + if (als->irq <=3D 0) return -EBUSY; =20 if (kstrtoul(buf, 0, &enable)) @@ -708,27 +714,36 @@ 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_assign_bits(als->regmap, LM3533_REG_ALS_CONF, - LM3533_ALS_INPUT_MODE_MASK, pdata->pwm_mode); + LM3533_ALS_INPUT_MODE_MASK, als->pwm_mode); 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) + if (!als->pwm_mode) { + ret =3D device_property_read_u32(dev, "ti,resistor-ohms", + &als->r_select); + if (ret) + return dev_err_probe(dev, ret, + "failed to ger resistor value\n"); + + if (als->r_select < LM3533_ALS_RESISTOR_MIN_OHMS || + als->r_select > LM3533_ALS_RESISTOR_MAX_OHMS) return dev_err_probe(dev, -EINVAL, "invalid resistor value\n"); =20 + als->r_select =3D DIV_ROUND_UP(2 * MICRO, 10 * als->r_select); + ret =3D regmap_write(als->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"); } @@ -792,7 +807,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; @@ -802,12 +816,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; @@ -816,25 +824,27 @@ 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->regmap =3D lm3533->regmap; 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 @@ -853,7 +863,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; @@ -867,13 +877,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 f57d97201816..a661aedcdc60 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 @@ -50,6 +52,9 @@ struct lm3533_led { struct mutex mutex; unsigned long flags; =20 + u32 max_current; + u32 pwm; + bool have_als; }; =20 @@ -616,22 +621,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 @@ -641,12 +644,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; @@ -659,8 +656,6 @@ static int lm3533_led_probe(struct platform_device *pde= v) led->regmap =3D lm3533->regmap; led->have_als =3D lm3533->have_als; =20 - 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; @@ -668,6 +663,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 @@ -680,15 +684,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 @@ -725,9 +737,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 e3efc9f6f348..5af1d5476d3e 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 (16 * MICRO) +#define LM3533_BOOST_OVP_MAX (40 * MICRO) =20 #define LM3533_BOOST_FREQ_MASK 0x01 #define LM3533_BOOST_FREQ_SHIFT 0 +#define LM3533_BOOST_FREQ_MIN (500 * HZ_PER_KHZ) +#define LM3533_BOOST_FREQ_MAX (1000 * HZ_PER_KHZ) =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,99 @@ static struct attribute_group lm3533_attribute_group= =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) -{ - struct lm3533_platform_data *pdata =3D dev_get_platdata(lm3533->dev); - int i; - int ret; - - 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]); - } - - 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) +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->leds || pdata->num_leds =3D=3D 0) - return 0; - - if (pdata->num_leds > ARRAY_SIZE(lm3533_led_devs)) - pdata->num_leds =3D ARRAY_SIZE(lm3533_led_devs); + nchilds =3D device_get_child_node_count(dev); + if (!nchilds || nchilds > LM3533_CELLS_MAX) + return dev_err_probe(dev, -ENODEV, + "num of child nodes is not supported\n"); =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]); - } - - 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; - } + lm3533_devices =3D devm_kcalloc(dev, nchilds, sizeof(*lm3533_devices), + GFP_KERNEL); + if (!lm3533_devices) + return -ENOMEM; =20 - lm3533->have_leds =3D 1; + device_for_each_child_node_scoped(dev, child) { + if (count >=3D nchilds) + break; =20 - return 0; -} + if (fwnode_device_is_compatible(child, "ti,lm3533-als")) { + lm3533_devices[count].name =3D "lm3533-als"; + lm3533_devices[count].of_compatible =3D "ti,lm3533-als"; + lm3533_devices[count].id =3D PLATFORM_DEVID_NONE; =20 -static int lm3533_device_init(struct lm3533 *lm3533) -{ - struct lm3533_platform_data *pdata =3D dev_get_platdata(lm3533->dev); - int ret; + lm3533->have_als =3D true; + count++; + } =20 - dev_dbg(lm3533->dev, "%s\n", __func__); + 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 %pfw\n", child); + continue; + } + + lm3533_devices[count].name =3D "lm3533-backlight"; + lm3533_devices[count].of_compatible =3D "ti,lm3533-backlight"; + lm3533_devices[count].id =3D reg; + lm3533_devices[count].of_reg =3D reg; + lm3533_devices[count].use_of_reg =3D true; + + 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 %pfw\n", child); + continue; + } + + lm3533_devices[count].name =3D "lm3533-leds"; + lm3533_devices[count].of_compatible =3D "ti,lm3533-leds"; + lm3533_devices[count].id =3D reg - LM3533_HVLED_ID_MAX; + lm3533_devices[count].of_reg =3D reg; + lm3533_devices[count].use_of_reg =3D true; + + 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 device_add_group(lm3533->dev, &lm3533_attribute_group); + ret =3D device_add_group(dev, &lm3533_attribute_group); if (ret < 0) { - dev_err(lm3533->dev, "failed to create sysfs attributes\n"); + dev_err(dev, "failed to create sysfs attributes\n"); goto err_unregister; } =20 @@ -509,7 +449,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 +482,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 +497,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 07aec46e8c0a..0454b4bd2da2 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 b4363a30b2c8..e91c598342ad 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 @@ -29,6 +31,9 @@ struct lm3533_bl { struct backlight_device *bd; int id; =20 + u32 max_current; + u32 pwm; + bool have_als; }; =20 @@ -237,25 +242,25 @@ 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; + u32 default_brightness =3D LM3533_BL_MAX_BRIGHTNESS; int ret; =20 dev_dbg(&pdev->dev, "%s\n", __func__); @@ -264,12 +269,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; @@ -287,13 +286,21 @@ 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; + + device_property_read_u32(&pdev->dev, "default-brightness", + &default_brightness); + 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 default_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); @@ -304,6 +311,17 @@ 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); + + device_property_read_u32(&pdev->dev, "ti,pwm-config-mask", &bl->pwm); + + ret =3D lm3533_bl_setup(bl); + if (ret) + return ret; + ret =3D devm_device_add_group(&bd->dev, &lm3533_bl_attribute_group); if (ret < 0) return dev_err_probe(&pdev->dev, ret, @@ -311,10 +329,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) - return ret; - ret =3D lm3533_ctrlbank_enable(&bl->cb); if (ret) return ret; @@ -366,10 +380,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 696014deaa7c..d3f7b07dbefc 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; -}; - int lm3533_ctrlbank_enable(struct lm3533_ctrlbank *cb); int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb); =20 --=20 2.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (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 40D9230D40B for ; Sat, 6 Jun 2026 04:58:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721914; cv=none; b=aZLLMLpj5LSYZuMomFHobSHxIDMvlbjzvFbo1vo7zkcChx5C0BUeldH3ArMzVhOdGZ3sv7/L9D3E/MHuV+evtQU/5TNoJ/Ti9FfNp/YTcaSm6lwlmnkPEMWlhqjsuxPP7xakBnkD0J/UZN2sPFUBUg80H+sCYMcGoTFWFBcDlQs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721914; c=relaxed/simple; bh=1nFZau3RQUxnCZgOYDCBt3epgx5xe5YIlqUb8E8u0UM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lBjCYIeh1HrK+L2YTacfsMmrH/BNo8o1duXCGp2RboItNh+d79oOuXbtT92mKwFYvqckxVsX4IpLIjdT8hrALYekdplVwWPW7/MPYT1mTAkchptrGoPswji40fjxAXXZOcWOCh5X1HJbqhuZqvNb+NDWxypdgY4JnBUucD+vWiY= 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=MeuMLo6d; arc=none smtp.client-ip=209.85.208.54 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="MeuMLo6d" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-68d232ed3f9so4231360a12.0 for ; Fri, 05 Jun 2026 21:58:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721912; x=1781326712; 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=RlI5mUz8s798lOZfnX8f9JGZtNvnkftPBfqwbzzNVuw=; b=MeuMLo6ddRVm4igBW3Yn2OS7xsV+kQTx3p48MhwdrnG77458i4pHAqhN6OK2U1I5c0 iQPBtpxS/+vZX8/eMqS0fv0LAGGXQVdHzaObof2MDhEnYB4C4gY1zJP2NrqXq4QCuvJ9 3lyivExzhuIbC58zbI/2pV91uiunbu+avjuZ1oJoa7hrJL5tMSCs8LuMAmmPKu8KPe9a ekgkxNrfhoAn6pm/CZ513lgWxyA/RbFh2aBcLMVUxBXYx5O2YSJnYKWkKlL1D3ZnwVqS Izd8MJGGAyuGsvOg5RRk3yEiPaXi8TWJBMINw3HQHGzuisu+mwEDGqY/UJQLFtY0L5+Y cDTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721912; x=1781326712; 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=RlI5mUz8s798lOZfnX8f9JGZtNvnkftPBfqwbzzNVuw=; b=aouCM4gVLmm6yE9PgrJUZELx9ZM48MqQ3IEyUJ+TDH8sw55LaKkIkadUYW8OWLsN1C BQB6aIMnepu+mOc+jeYsKuZpOe+FH1CtdGax/lYfJufnH7wlmkazq1Duh7OW5Qop/+u9 vcrIO8+zTLPdQwHfx3tcwNWdfbv3t09AX+qh+WO1JHE7tzSMOGsvZ7FfIfHFAlywjUz2 RMWdDn1C12rzgod67jd0wQ/Covzzaq2UgIqLIpMIW4lQgwfGzS7x9ZZyljlfDHg/+YN2 GE4HshZIPDhmocB7tDEMUROUxM/ETTYICqtWQ/lUs5ezYhC/mYKrn5LjuOr3EDQzCk7p ZKOg== X-Forwarded-Encrypted: i=1; AFNElJ/LfwlYjZV9hCHhhTNYgUldpZoUrvvtJ2l21vTAp5dgK+5KmIdYs6vmB7west5enZ+iMdm7WnPE6yp6yNE=@vger.kernel.org X-Gm-Message-State: AOJu0YzHBMeI0YyjpR7VT7Om2RsBmJXIMLdeMuE7nxLuDTM27x+2N0t6 Wff8Cks6h53uQkJN+XnhpQuaJVyv0vmT+/FL1KL9xfBnzm6BHH90zocp X-Gm-Gg: Acq92OEx6pnvxzVaiG3Zd/Lt5CMZ2KSW/M8lDYQsI8qFlNPIFYqotdycn2pGhxjIAk2 AF1/wFnjMK+g7kcbKPmUnj3XwgKdD8XwzSn+4Qj57owGtjjTpLDqRszqI93pDRac92dZoxzfFUD CUOtuX6sBlfxBRxVHQ3gEMEiTWWh3oFm31myou1lQFuG5HjtxjLYAO1EmsHc1QOEuTw/to4wQM6 Z2s5lGYXwmzRyd4tdh33ml6W6qLFAoNn9ZdZfFB/RTpD49FJgiQmIYD2FsbKeDYLX9+6bc/olB2 K2JWECKIZinJ0fEttpxvztprpyjJjnp7Nw6Nr1fEHY32AFkLPLeVP7hcPhXuOiKkuNUyigg9O/M mPs+mvnXv0URahuM0FolQyraTYQEVtn8g3IAZ2ogRKRgpKobZ1N57JlqjjjglKLDarP3APEPR3O Z2xBYWdSvGhyCRlJu3e8G6xec= X-Received: by 2002:a17:907:c247:b0:bed:6e53:bb16 with SMTP id a640c23a62f3a-bf3743e5c7dmr350247866b.43.1780721911635; Fri, 05 Jun 2026 21:58:31 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:30 -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 v4 09/14] mfd: lm3533: Add support for VIN power supply Date: Sat, 6 Jun 2026 07:57:33 +0300 Message-ID: <20260606045738.21050-10-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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 5af1d5476d3e..500cec3cceba 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 { @@ -332,7 +344,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, @@ -456,6 +470,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 d3f7b07dbefc..3f9f4c9ef9f3 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.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 CAB5530EF94 for ; Sat, 6 Jun 2026 04:58:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721918; cv=none; b=DJHUksineWYR6XQHpjc6k6wlc3HKyZMQ8K5I7umWKlpu3HDLeJr148izfbT1PC/ukUhuXvYl+cDpEIT62N2uJD7UqdYhs1+Kg4fzzrmBzKHf71hiwiY1lpHkTzSqG45tA0Std9YxQ8T4fhqbkUPtqvBBizIxgzcgaESlJb5/th4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721918; c=relaxed/simple; bh=Uj/we1VRlh8Apf/xbTm9Cclx4UJKJna7Lcylt5N9akk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SVSIbMdSwLKxmY+rRyQFBIvqxJqg3fxrSu2cze63Up4D7e+9zY10Zp3gBQ7uFA6oXTyl+4gJH25ajNfwDgFLYqyIn/9qtvyqTNUmr9LZmyEK6QYPKdlY1MmYQCT8oBh798xpB677GqFKQyLbReN+C26E3AclZ3viaORzSG/GUpY= 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=A/unh+1k; arc=none smtp.client-ip=209.85.218.52 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="A/unh+1k" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-bed4f2f0898so325160766b.3 for ; Fri, 05 Jun 2026 21:58:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721915; x=1781326715; 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=gRUfH60NeaMpCaCx84KeDTGgGO9ytSJVg0ZaUrTfvB4=; b=A/unh+1kjipGI8XGzFvTj3U7czU7f66fZb60gWItRppp86TQsnJc+ZhnwwWkEztngk ZXZdFKYNLTDYIFhMAFv4yK80g28YjCSYosSXktQqcM1Xbvw2X13FKQbo8kgMlLNOZBkQ sfBU9e/miezAaRfQ2dXRIlGPPCB/hlsxZurDJx0phhXKefFiALFQFJ8cWwCLPlV7Jx0l pVbxBKCYwhIvUQ80WgzxZ78SY60O6A9sHgIXpvtbK+FXiyaRiJc5K41Oqxhttp6Lajhl urzHYMnon6ajDNumWML8ydBCUy1XktRrDxurAkQ1FYfPQtIWEa9x71i1AhNSPFdoEIKK SHug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721915; x=1781326715; 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=gRUfH60NeaMpCaCx84KeDTGgGO9ytSJVg0ZaUrTfvB4=; b=q/CxcpILHL41y59QsfujUoe5P5HGqAja8eCW9nrCXOhL/ySmIWOdb0B76HuXNeqs1B 54vP1WTm9iAmGqDkhexFOsKfu/+O5IKZLExvv4ZeSCuoQ2W9x0LdorEl/CM+sbHC3M6A /6OGwm8o9k2O2CH66y4z8xcmvmicZmrvwePNSXJcl68uwQTJbCNQQKZMkrqNS85hswvx NaggyIn+L+WqXCkw0uHFa90yv/wjjjoBLz0bePy+AuAz8vbFsp+IVaomDjOfXr/vyPLu h6fI5zh5NlCkVBis3San3cRFZXUGBT4d4642VCx8GwmxDCBlPh+n5zFEOXT6VPaaiwOF 3fWw== X-Forwarded-Encrypted: i=1; AFNElJ8Cafh1MD8sxD4rkez1ExyIKwH7rWu3vek/jEL8yXLs/2/AAxecV7bFWMvQhkSL9AIMvZ4iVcAGGJpv3mM=@vger.kernel.org X-Gm-Message-State: AOJu0YwspkYnM2qUJLJTHdIeznoaQsaCjNpsdOSj/HWUE1XVWHNe05gF O1yKC7mk6ZwVuZ3amNUDSinokqmZhNyOiW/ZTpcnn1gMciHoAUiJvgTq X-Gm-Gg: Acq92OGztUaeJcF56epYEbQetAJl1FfLKB+BH4nTqjW1kL/bfoWLRLV4QK/R2YnGC4n i0tqBCdT51eUXWPbulmKK06ufi+qEmJl/OydOvVybpnMTzA45uyiecdFZSGPIyuJiMTqpe8aE5E IGAED+PEv6dYbe/bFtSmRK1CXIqYYUpzlVOOGiDi0kTJFmX7hmzqLYkSy9yURg/hAegodTrL1Ov 0bbcci18zOPZRYYP2BD+qHz8Y9DMsFWa25bvf0dZTsyTsao3KqAD7hQEabqAtZbUOgrroouto+p hbcKIGRNYSBKlv0R8tgNLhg+PRbQvriGATuaRjmMlww3i6HE/EENo4a+RoKUbKMXqqiCUCuS5Jz +QhGPidYPu7pD/aJB/cAsLr9UrXJR3BwyJWuVU5pT404MrQpu5E9DptHKPldMbIFY53EXB5+PrN oAamEy32ShBiDrdJxWxDe7VK0= X-Received: by 2002:a17:907:e117:b0:bed:62c1:ec with SMTP id a640c23a62f3a-bf3704783c0mr169855366b.13.1780721915036; Fri, 05 Jun 2026 21:58:35 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:33 -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 v4 10/14] mfd: lm3533: Set DMA mask Date: Sat, 6 Jun 2026 07:57:34 +0300 Message-ID: <20260606045738.21050-11-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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 500cec3cceba..5d17da1d998b 100644 --- a/drivers/mfd/lm3533-core.c +++ b/drivers/mfd/lm3533-core.c @@ -489,6 +489,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.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 12D3D30B51F for ; Sat, 6 Jun 2026 04:58:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721921; cv=none; b=KhRcNafmh8RvOdobe5u5gB3QT7QbOC9H9B5BsDvOJkFduYidVky0Rb5IHzbYwlrKv+nPvJi9raxsWJ4OizM1DWx4m3XpQ5Ayc4d4ASMtUbtZ163gQsprcV+KSc7G12Wx8ldPpOJgKH42OMJ+4Ypd2l+ANe2mNE3S8IC/V80nqbk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721921; c=relaxed/simple; bh=/uaa0Rfad4NLZbr7JCGcZ/k7YxCiey9V8icGrQZSDTI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=axCLX8ETWoI5034DKZ05OFA7II1TmfuATN3JgQUa2Yt2GU6RomV3ZH9KHgxSOyYPir22Loq388aTPyU7rviGqtV0ytpfC07hPVJCYgXJix4ATuTx1Z5jE0/K8L2BNG2pZIsmAe8Q09pI7g7+k8Ye178VJ2JF00+oJ58IFm5gl8k= 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=bcwU1SnI; arc=none smtp.client-ip=209.85.218.52 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="bcwU1SnI" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-bec449cf976so352365266b.2 for ; Fri, 05 Jun 2026 21:58:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721918; x=1781326718; 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=GpLTvUbX/MW96Oy59fQWRealZVBkci3zFRen/ePeGpY=; b=bcwU1SnIaojyRF02UDyw0xrz0CtVVG9O/vVworaEsVBb/tpTD11chsUybEjm0DPbTj YDPcgPk243grbapbfcxbVE/m/buNJy0+nxNF1ovpe8fFmchj6ePejXYLWbfcuXNDHxrb FaKOmxVbEo4YUNYaCGQGKKLQ7cC56tyWmjuiv8VacUN1A95nrmxWa9SIkQe6SgmOlaLE KKiwc9MTC2JCZUrvwZYPilSK5DmSDZLwli+zPjEGbXbgRV4Ab1w/Gjv94y5B4fwLwxrG 0TDjohQl+IDaRuY6B9HJuOi9elT6q/uRuFR7WiE+75ZA3g6QjDbExbCrhkP4j/DUNTSR Gqnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721918; x=1781326718; 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=GpLTvUbX/MW96Oy59fQWRealZVBkci3zFRen/ePeGpY=; b=hbVKk/tCbg5zQP432S9GFBTwPy/Tm5fXqxfPMMYYbuQf5jG+EM/lvNwn7yzHRYKC9Q wYHIPOW2kzgOqRwEWQQPQO7uFjgIHsZ08WTeQKaZe+diprvw1db/gSZ5uslUTwOXSZaN aXeqyU9C7ONQUWitVfYCWeLBTbgmU7J8oWLzPAut5VkEzPgX4f/UBHwIpqoidK2uq3CA b4Effu4FCnRAz+8zIGPgI6xQmTnU/3uWcH1OW3ZTUfZhVSUr2lOVlDUjOGmzWk0rQL5B G0PKuUg/5OZIb1L1LoIbC+KxfAZqBx4Jv4er5NaYY6TRBkZ4kNiJnOYI2dHlDLDzah16 TBaA== X-Forwarded-Encrypted: i=1; AFNElJ9JaNpMaz6ADx3/x8KZJ9XAUjpQVjkK8VPOh0sEY4OKbxtVfE4P61x3DS+9vITsCMGiB+14MvQJj1ediuA=@vger.kernel.org X-Gm-Message-State: AOJu0YyyGMRTucHePAbGdFjf2Q7s0fC+wGpU0BR74UO4k3p6m7OOlYmS GL7w1M2Ih6j6/gh7nUgF34rKLs7SOA/ecbV8slOrqHCYP/uJdXnDtv++ X-Gm-Gg: Acq92OE2NjPV4VQEuRddbtBU9CQJwMdGVIhA5RqHn71zh87mrGAP+SSKHc10XMXu9nr 2T+PTYkvHScyzdvchSYfQ/m6cRzg9mCvVYV8CCnW0BG0oVEXQ9/l6F771AlPGcpUpuQIfJKaR4Q KxVrqOjRs47YM4tviPeExG44N054G2LUTkhRGUourGabXXs7jUZZkk34Dg1l0ge4OVi4UltBTFA 9pfrTVCnRjd9ZqdXELn0ZJcK4HCkQBvxmem66GauaxSdqhHmNjAKwY4bGNWZKwFDbTXc5gNuUGr I7TSAmFbfCa7RVqujjfg7+mCsMMMCAtUq/6/usoGV7sDkgsTaldIRXH3APA8jcGGdQjN5jQef/s fc2ApcCKlvlRsv5OSEGaa26mfVhaPr5/4ZebH+HglD/rs1GKHVni2IMIvzA6YaJbOMaZ4+NhO2r 2+g15gKwBIb96ym+UosSG9+vM= X-Received: by 2002:a17:907:72d1:b0:bde:170:a0ef with SMTP id a640c23a62f3a-bf37234c5d9mr367725366b.27.1780721918445; Fri, 05 Jun 2026 21:58:38 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:36 -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 v4 11/14] video: backlight: lm3533_bl: Improve logic of sysfs functions Date: Sat, 6 Jun 2026 07:57:35 +0300 Message-ID: <20260606045738.21050-12-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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 properties by switching to macros and proper regmap helpers. Signed-off-by: Svyatoslav Ryhel Reviewed-by: Daniel Thompson (RISCstar) --- drivers/video/backlight/lm3533_bl.c | 58 ++++++++++------------------- 1 file changed, 20 insertions(+), 38 deletions(-) diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/= lm3533_bl.c index e91c598342ad..9ad7ea1bbbcc 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -23,6 +23,8 @@ #define LM3533_BL_MAX_BRIGHTNESS 255 =20 #define LM3533_REG_CTRLBANK_AB_BCONF 0x1a +#define CTRLBANK_AB_BCONF_ALS(n) BIT(2 * (n)) +#define CTRLBANK_AB_BCONF_MODE(n) BIT(2 * (n) + 1) =20 =20 struct lm3533_bl { @@ -85,88 +87,68 @@ static ssize_t show_als_channel(struct device *dev, return scnprintf(buf, PAGE_SIZE, "%u\n", channel); } =20 -static ssize_t show_als_en(struct device *dev, - struct device_attribute *attr, char *buf) +static ssize_t show_als_en(struct device *dev, struct device_attribute *at= tr, + char *buf) { struct lm3533_bl *bl =3D dev_get_drvdata(dev); int ctrlbank =3D lm3533_bl_get_ctrlbank_id(bl); - u32 val; - u8 mask; - bool enable; int ret; =20 - ret =3D regmap_read(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, &val); + ret =3D regmap_test_bits(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, + CTRLBANK_AB_BCONF_ALS(ctrlbank)); if (ret) return ret; =20 - mask =3D 1 << (2 * ctrlbank); - enable =3D val & mask; - - return scnprintf(buf, PAGE_SIZE, "%d\n", enable); + return scnprintf(buf, PAGE_SIZE, "%d\n", ret); } =20 -static ssize_t store_als_en(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t len) +static ssize_t store_als_en(struct device *dev, struct device_attribute *a= ttr, + const char *buf, size_t len) { struct lm3533_bl *bl =3D dev_get_drvdata(dev); int ctrlbank =3D lm3533_bl_get_ctrlbank_id(bl); int enable; - u8 mask; int ret; =20 if (kstrtoint(buf, 0, &enable)) return -EINVAL; =20 - mask =3D 1 << (2 * ctrlbank); - ret =3D regmap_assign_bits(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, - mask, enable); + CTRLBANK_AB_BCONF_ALS(ctrlbank), enable); if (ret) return ret; =20 return len; } =20 -static ssize_t show_linear(struct device *dev, - struct device_attribute *attr, char *buf) +static ssize_t show_linear(struct device *dev, struct device_attribute *at= tr, + char *buf) { struct lm3533_bl *bl =3D dev_get_drvdata(dev); - u32 val; - u8 mask; - int linear; + int ctrlbank =3D lm3533_bl_get_ctrlbank_id(bl); int ret; =20 - ret =3D regmap_read(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, &val); + ret =3D regmap_test_bits(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, + CTRLBANK_AB_BCONF_MODE(ctrlbank)); if (ret) return ret; =20 - mask =3D 1 << (2 * lm3533_bl_get_ctrlbank_id(bl) + 1); - - if (val & mask) - linear =3D 1; - else - linear =3D 0; - - return scnprintf(buf, PAGE_SIZE, "%x\n", linear); + return scnprintf(buf, PAGE_SIZE, "%x\n", ret); } =20 -static ssize_t store_linear(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t len) +static ssize_t store_linear(struct device *dev, struct device_attribute *a= ttr, + const char *buf, size_t len) { struct lm3533_bl *bl =3D dev_get_drvdata(dev); + int ctrlbank =3D lm3533_bl_get_ctrlbank_id(bl); unsigned long linear; - u8 mask; int ret; =20 if (kstrtoul(buf, 0, &linear)) return -EINVAL; =20 - mask =3D 1 << (2 * lm3533_bl_get_ctrlbank_id(bl) + 1); - ret =3D regmap_assign_bits(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, - mask, linear); + CTRLBANK_AB_BCONF_MODE(ctrlbank), linear); if (ret) return ret; =20 --=20 2.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (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 8A93730BB8A for ; Sat, 6 Jun 2026 04:58:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721925; cv=none; b=fn+5o3ey0X2l38lSroCDLp7Ei1uH3o3vwH8ORJToLZg2gVIIY3y9uZR2bMi/sXZZWNzFitYlblkH1Io/1EecO0IDCR7W3us5YVCEVPuauytSqI15fvdQw6kMW/hxdLWUOn/Z8MdH3sDN5mvj4vQAvvDOiL4d2+ePULMzQnDF9Sw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721925; c=relaxed/simple; bh=1X3Fe5KMAyI8d0lBSX7gzgdG4WYUQVZ8AWRde1CmRRg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lSmPZYiMEjrmqnuRpkuBavDlDDNFanoDy5a+j78CtJOck4zACafJQci5HgSjUqTAie58BE48cs3Wg3UGuHnqG4eP/J5/WpVUTGu4MITVedPQX+xfZpGZwzJisrI6pUTzFqhRXBlgz/3FUOgyt2wGqPIumwYO8cTk2QprMkD4L58= 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=WtSr6VpN; arc=none smtp.client-ip=209.85.218.51 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="WtSr6VpN" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-bec49f7e35eso353349566b.2 for ; Fri, 05 Jun 2026 21:58:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721922; x=1781326722; 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=tMzv/S8Y4Icyy6C4SSXqpDWOb9w1xnX2+g+CSvM++O4=; b=WtSr6VpNr5A1Ml2hGyJFaVqvyy6fxdgIFVLXIUFtW0YsU3e93OWG6eVDH8OYO/VAXH qnqlb2GvKyBGxF+ZNcPHtJeyGzapi/3lhMyI4yUHGvLA4eXjYkHd8e0xqptkOzsX+p8W lTXYexnL2obWiFIU7CJRXtRV8/QzFvPgR8ctCxYHSSwshvvUSOM06XPi6V+nd1FcmCMh P4s5eYoK/Js6UOp083Gw+pKhrJ6JBvWzgf/Q75tkU4sVMVkl420LeDTV2CBMiCNb5X2V KlJ+AW/m8Z4g7n99HixqijrLfpY9aaisaNNkmWbiziId9dTqjRv/aJzhQTAepwRJhyHf RCLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721922; x=1781326722; 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=tMzv/S8Y4Icyy6C4SSXqpDWOb9w1xnX2+g+CSvM++O4=; b=Ro/zksNPIHEq/T3QchHj9gxn0W4pf8naRMkgdv8Uo9T2Wk0DW1mB1qoX3tdUBT+vuY OJXAPkzcwXZLKHos5T+Psqcmew90TGKp2gt38zDuC3Oyrf6vuz96OCWhGa15gGBGVpYH gwghcMZavEnQq8TYgGH0A9VUtLgWKjYB9sfvkMpS5+DRqYdFRu87vBfWQQdlyeH20U2V 7enVYZwoGXraXBdhJW7TZLixVnoesfWUU6sqeO7fWJQPIkYs54Eo3zZLuIGZt9fVOH9N YXKKiAhWifIefeJ6B8scB/XYV77+HOvqCV8bfjwj5m39AgQpGSocn/DFIh47tEAiF4B+ Ru7A== X-Forwarded-Encrypted: i=1; AFNElJ+gN0n8/aVOn3GhoYbzrZtfFFsXJ+5Jkaaf1FP/m6PBtYsBZxOIeW6BuUSpghuHEKPRfqizK6MSIIh5aWY=@vger.kernel.org X-Gm-Message-State: AOJu0YyZ80rStmw8/Tlh62D6Es5RlefoRlFEsLI5j5gzQGqWmBKW2BQu swDeDrxUirmNfchYc0y4wJqBOhEx3sqpauuMBVwwr6y6yOM9QKoXKVXy X-Gm-Gg: Acq92OEiN2PUyFczwPLLdjHtI7leWV6M7KB1qkkq+8rfyxplre+J15JkIy5R1oLWp/f Z04u2K+BNCLChZvGT6mqtyYooXVNp9BwfJh+7m0bSm26THsnqIfIaU5M2mrNgZsCAW7Y38JiCCZ zkO58h2PjiZgZfPsbgl485S/M2tJOsrc4SL/Xc6uZOEx+5rqF+uTy3W+2wtkwEGF/NGis7yxo9D V4rAAj0++DMqmmJhLhiVkrS0MQ1315i/c9OiVTMATFpLtL3BOScNCl8MY6TaqbuTALYDtLdv3GA Vp06r5ZZWbPY3uXEw3Z76cPmMIJaaz16Kzw+umKAF3o2oiKgBu617rNhU0Ecuy3QdbCaw8tjrsl IcLxDpgr79S+ldTRalXIgB+3DHcW2qVbjmS3xEPoFiGL2uk35p9JOrsrYgBLcA4Oc5ANa81km6a FXjLdJXVGpEw+8Odn15dehM/XvJmePx/getw== X-Received: by 2002:a17:907:6d05:b0:bed:afd7:185 with SMTP id a640c23a62f3a-bf3737ed359mr332707666b.43.1780721921881; Fri, 05 Jun 2026 21:58:41 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:40 -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 v4 12/14] video: backlight: lm3533_bl: Set initial mapping mode from DT Date: Sat, 6 Jun 2026 07:57:36 +0300 Message-ID: <20260606045738.21050-13-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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 | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/= lm3533_bl.c index 9ad7ea1bbbcc..4f8cde9f290d 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -37,6 +37,7 @@ struct lm3533_bl { u32 pwm; =20 bool have_als; + bool linear; }; =20 =20 @@ -226,8 +227,14 @@ static struct attribute_group lm3533_bl_attribute_grou= p =3D { =20 static int lm3533_bl_setup(struct lm3533_bl *bl) { + int ctrlbank =3D lm3533_bl_get_ctrlbank_id(bl); int ret; =20 + ret =3D regmap_assign_bits(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, + CTRLBANK_AB_BCONF_MODE(ctrlbank), bl->linear); + if (ret) + return ret; + ret =3D lm3533_ctrlbank_set_max_current(&bl->cb, bl->max_current); if (ret) return ret; @@ -281,6 +288,9 @@ static int lm3533_bl_probe(struct platform_device *pdev) props.max_brightness =3D LM3533_BL_MAX_BRIGHTNESS; props.brightness =3D default_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.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (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 031DC313E29 for ; Sat, 6 Jun 2026 04:58:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721928; cv=none; b=g61VFAiMGiQX/bP1WSkAK1i0Ts3Vdrc44NmAQZo2Fg91wglGgp0Lj/8K5/vQXCYbLs3W1NdvL5BEYwdv5LXb2A8KlC7rH3yC6e6Qv7llz3s/KyMj3dyeqyoHoWw8k1A6u6MTDJdzhYUD72GWn2tnrgR4Hi4YVP/XmLMK1Tu+VXg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721928; c=relaxed/simple; bh=8ihLzDpqisj7RCWIgvP+oI6UBuVHBgOFSoKuiunQyxI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=l32Wr02FfUS2Tet3iEvmQtWwHcTfdFESrj7YDlYRTD1phTkMOMVfnLgncEIpQtLzuhg+Uw4ah34PXh0Fe0VJfUTIYnvIe5dip/rW9YTVVmDSOyHQnBP3jfo5k8WAtgCtRr/NdReafM57mVLI/gj/8Me/s8HAV+SvKbuLi72wbcU= 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=Ck2telJ+; arc=none smtp.client-ip=209.85.218.54 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="Ck2telJ+" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-bed2195323cso380347866b.1 for ; Fri, 05 Jun 2026 21:58:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721925; x=1781326725; 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=aMkYm2wLFurUx2dgxyb2h52E5PnRVf0UR593PbHgI/g=; b=Ck2telJ+fs74MtpcAOJeTy4O7AEBa7S8SvbI7OpYYhirYyA6IQTINVWse9cGmNGteB m9Pz+khqBVoefNt3pWHCLM/JJO/MYzuvVQ4ysjk+6IGfrMDUgGOTZ5zVRUfEUL7WFBAh OPTkXEejpD9sJ4B+SqdswG8ZzOD9DC0WzdG9FN7CSrGSiSPUnrIN2n7ahP9exY6YFOhF 6//N9euZ1h1OTBVXq6h5UER+PRmnJmWYKSmIav2nGH/3w9QNGomZH4urpmqYdCye6znu L0rY5XFuVf69oYK9AmpsqfQru9MiW8v45eXo9kEX8QV1M1kp1K6hivKfWZ50b8Yt55J7 hbYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721925; x=1781326725; 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=aMkYm2wLFurUx2dgxyb2h52E5PnRVf0UR593PbHgI/g=; b=sUQcpmdK8c7tWAJCotE57UaPtazEnojrfWla+ng6mMmBh0FnsiYkRv3IuQswQHP9ns kUUXSgqDfp35iP1FY/3Xm2v/UVGEWQuQk7F4dH5wsOdqclyhTT/zSfe6wOR8eAaFQ73R ++Lf2P4FIzEf7uIV8aZ9Losi6DL5MnjcSssEjNvuuY4JkocjtM4wPnPOSsb90kH9GxRq oFGNFSDjNg/jEsAmJjvZmw4LPFX2ZHuJJjhTUNR0WXXp0HFCah++QKJ/2jqp8UgMY0jU kfPbhBqKPW9ObsmB99uyzj3BAdXkYE3VzkIpLBcUnohjWZhI1v541mqIaeqeJFUljhsf pfWg== X-Forwarded-Encrypted: i=1; AFNElJ9Hr5jF4Wpv7XazQqygR/zqG0GiZYyt/zDYmZ27U6Gtwj3yNWkgiaZ9w69r2xDe2gllRVwDGBLcaJ/QUU4=@vger.kernel.org X-Gm-Message-State: AOJu0YxIjC9P1W06dyJsNJa7GGInRyhs+s7ZoSWgVqTXfElxdJq0DaKK 8kKZDUZwNoIQbALp8BlWMl+/MzToqxep37tQj63mCK330yH/jQo67WeD X-Gm-Gg: Acq92OGkf5glICMo9zC5URcAjBBMRjHRaAvzyjtLMjA8kT08jrQyYOxpr6AnxVBRuYR JS9TXpUSFzycnULKDzFFRQt6lXaRqulyWGwPBQkGxSPmLKNCO3Cvb444fzo4PU6cVb7W0TJrnnd g8AbuITahHsr1SL2zhrLJJCCiljgBENKCQCEWSzeFyfPdwCWQQSj4hmhAqDyewsErqz8CqGt3+J Po2Q5tpr3JjKSzG7+68Wqqsa/VlILFRb+y62cf7PGA6MAmgj0n8V0TgpcF2ACAgyW334UvEJMaZ tasEOMKMEMKeFRr7F4sJhHPhuxekNHfoTfpF4FQ2Z4N38oKZK+qoYp7VBsQngMEPvoEdiht9bHQ Iix1k72/aGut2qRnKeRQk/lbE/Fp8r/+GNeSYSKDRof9EhRcnlb39xKiyHn6jLNrsuUCD4o9G7Q zlp5BrFgL69Cd9Ng69A21jSoA= X-Received: by 2002:a17:906:f5aa:b0:bec:157:a630 with SMTP id a640c23a62f3a-bf3721598f7mr362897366b.23.1780721925345; Fri, 05 Jun 2026 21:58:45 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:43 -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 v4 13/14] video: backlight: lm3533_bl: Implement backlight_scale property Date: Sat, 6 Jun 2026 07:57:37 +0300 Message-ID: <20260606045738.21050-14-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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 4f8cde9f290d..2aa4b86042ff 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -142,6 +142,7 @@ static ssize_t store_linear(struct device *dev, struct = device_attribute *attr, { struct lm3533_bl *bl =3D dev_get_drvdata(dev); int ctrlbank =3D lm3533_bl_get_ctrlbank_id(bl); + struct backlight_device *bd =3D bl->bd; unsigned long linear; int ret; =20 @@ -153,6 +154,9 @@ static ssize_t store_linear(struct device *dev, struct = device_attribute *attr, if (ret) return ret; =20 + bd->props.scale =3D linear ? BACKLIGHT_SCALE_LINEAR : + BACKLIGHT_SCALE_NON_LINEAR; + return len; } =20 @@ -290,6 +294,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.53.0 From nobody Mon Jun 8 05:26:23 2026 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.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 89607314B72 for ; Sat, 6 Jun 2026 04:58:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721932; cv=none; b=AKLFX+eSIuBE6GeQOb1flpaynK8YAFSBwIaMrGnBVbURYXyAxMJNNNyew9AqQ5QwykRppwgujllTiwRtipc79oV8ge3JQL82NPvCFz5a2mjfqibtsboY6PJIwMoG0Qw5wAHCmpA1qrRJ5SgmFw6WTN/FrK19vZmIpUHByQeI41o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780721932; c=relaxed/simple; bh=J/hbghdGiskCXq2LMuJR1POlS86t7rcaRIUrzBWVHgM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=beDeJDJfX9yOiug43/4FZf5CTipzfPo7Qt86rgObAGCUDfORmLTtTUKoE6OxQA3+gYTGzMW3rQ+50JHitbkzlVeXEKRvnCe0Zfs0E4D/b6eIKrnbKxsw6n2Pfn6bffZNwDzKyA0CmRxNce+FuYArstsoA65CdaEfNHHqZ5SiyGE= 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=YduCpeko; arc=none smtp.client-ip=209.85.208.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="YduCpeko" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-68acf0a15b3so4004622a12.1 for ; Fri, 05 Jun 2026 21:58:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780721929; x=1781326729; 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=THaL1QVPpQgP2z5ftX+u3ovu7VRE23Z1E4qNugQA6t8=; b=YduCpekonrnNLVeTKOipMxkHqK9ZRrMCmfcIqHtSKi+Gb1r2p2R2pSajBPHv0wUH94 vG3ZDzYW22kbtqWDbqgc7S4eF3chQbsehw6l3nhGjFhLf3icNZD79XVsr140tkQ6a5Xk /69X8ba4crVwVD7aM8l6Gzcm/je+PzYn8r2QxKaTBk972bfN1727q+rCnpMJuDb1srbk 5MILrAIn1MU2boYxE+MDyz3UQnEtVOY82K9VEMccUw35dMoScaHy0KKjS4RieUPwDPRs D42KzQNWq73p+4oyoLevuEuRBz5zQEoA6CJSoH8g6fucj4nCK3L1AC/IDNBxlVJOZ2BX v7YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780721929; x=1781326729; 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=THaL1QVPpQgP2z5ftX+u3ovu7VRE23Z1E4qNugQA6t8=; b=YoFdcu1MImQYSjJbK3IIisXgFd5+VrRkoYNHgGs9PFNBr2ExfVXhJ95950kA6EoMAd ptmPH0RYR/QP63zIl/AONNiCW9BmnMS2xMfX2Q5JH30dIF91K0RviTCoxdrL0vH8mPNS KlFXT7CLaj63cMvR+tu3e4jBSsd9IogRn9KLwHPhf2KVSY4xpHSQ5c4rHOjBNjV+DhUj okqK/2aFd+7GusS+CLuL1uzsHkahsqYGbhqnmdfOmn5lnUGJvAG4oeOejmEPIcXXAgRO ajYkPgn54MomF3j3iPefT/7Kti5Ztn1Pyw/ha6p2+9L7APIQ7kOiOY4kJlFcOYKgp1Xd 2P/w== X-Forwarded-Encrypted: i=1; AFNElJ93/ntAl/b8v4U3GmwjkcVOdRB1Bokkz0mCk7iM6LochNbsewnXlmPke0kPPC45H6jSCkIM+PTJJftHAj0=@vger.kernel.org X-Gm-Message-State: AOJu0YymjsCTMLeqrxchAvlMridiwI5/9O4Z0WZpBHGmxkySEYGfRouq xkAkXcJ0TRk07Vg0XJSFiQx9pAARySy+q1sJvjs92DvXqMyYX9icTcQu X-Gm-Gg: Acq92OGiaLwqbs1gT2H9Ej0xHStZ7jVhA4pdQWpDVtWwGBFP0NtekGc9UXWwmtU4ibF mGIalT3DzqEaZ4hnDwXyNDaLM0mgz+tHafc6+zQVZBsRRokdqzMTlQjZLJzBkAJIiify8eu+Fr3 aBf6DDN8WBQmKL88m71qt9LvtCfTwVgsQXQ69n2/iF+ii8JlBxzMjaeLMmu2LAlW64mcx7XLLcG FwvBBi8GarjjOiHDQZ0BmE+yGeuKCeiAYIxARB/xcdsAsH/RQv6uLH3NdEmUmp4Lv1iJ/mzmh+3 YD6WdckNvgrdgT4SKJBtgT8bmOEKKaLRiRZwOBaAvlQlqi+WFXQ3009Y+E7jhOqX6B+AcMHCGK6 P7hj5Bb9120gUtev3v/Dj2OoVVH3Th25XHzAcB8VY418/Stnt8IdddyiCfdb1YqVt8kOkBEVrkK ELrnfpRHGKzSwwe1TeyoBfja+csJcJbeQBPw== X-Received: by 2002:a17:907:608b:b0:bcb:66df:819a with SMTP id a640c23a62f3a-bf3741e8062mr385758166b.40.1780721928778; Fri, 05 Jun 2026 21:58:48 -0700 (PDT) Received: from xeon ([188.163.112.61]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bf054e086fesm570597166b.32.2026.06.05.21.58.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jun 2026 21:58:47 -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 v4 14/14] video: leds: backlight: lm3533: Support getting LED sources from DT Date: Sat, 6 Jun 2026 07:57:38 +0300 Message-ID: <20260606045738.21050-15-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260606045738.21050-1-clamor95@gmail.com> References: <20260606045738.21050-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 | 58 ++++++++++++++++++++++++++++- drivers/video/backlight/lm3533_bl.c | 43 ++++++++++++++++++++- 2 files changed, 99 insertions(+), 2 deletions(-) diff --git a/drivers/leds/leds-lm3533.c b/drivers/leds/leds-lm3533.c index a661aedcdc60..fe3e01b265e1 100644 --- a/drivers/leds/leds-lm3533.c +++ b/drivers/leds/leds-lm3533.c @@ -27,6 +27,11 @@ #define LM3533_ALS_CHANNEL_LV_MIN 1 #define LM3533_ALS_CHANNEL_LV_MAX 2 =20 +#define LM3533_REG_OUTPUT_CONF1 0x10 +#define OUTPUT_CONF1_SHIFT 2 +#define OUTPUT_LVLED_MASK 0x3 +#define LM3533_REG_OUTPUT_CONF2 0x11 +#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 @@ -55,6 +60,9 @@ struct lm3533_led { u32 max_current; u32 pwm; =20 + int num_leds; + u32 leds[LM3533_LVCTRLBANK_MAX]; + bool have_als; }; =20 @@ -623,7 +631,35 @@ 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; + u32 output_cfg_mask =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; + output_cfg_mask |=3D OUTPUT_LVLED_MASK << output_cfg_shift; + } + + /* LVLED1, LVLED2 and LVLED3 */ + ret =3D regmap_update_bits(led->regmap, LM3533_REG_OUTPUT_CONF1, + output_cfg_mask << OUTPUT_CONF1_SHIFT, + output_cfg_val << OUTPUT_CONF1_SHIFT); + if (ret) + return ret; + + /* LVLED4 and LVLED5 */ + ret =3D regmap_update_bits(led->regmap, LM3533_REG_OUTPUT_CONF2, + output_cfg_mask >> OUTPUT_CONF2_SHIFT, + 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) @@ -700,6 +736,26 @@ 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->num_leds > LM3533_LVCTRLBANK_MAX) { + dev_err(&pdev->dev, "num of LED sources exceeds max %d: %d\n", + LM3533_LVCTRLBANK_MAX, led->num_leds); + goto err_deregister; + } + + /* + * 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) { + 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; + } + } + 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 2aa4b86042ff..ed358fb3c759 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,7 @@ #define LM3533_HVCTRLBANK_COUNT 2 #define LM3533_BL_MAX_BRIGHTNESS 255 =20 +#define LM3533_REG_OUTPUT_CONF1 0x10 #define LM3533_REG_CTRLBANK_AB_BCONF 0x1a #define CTRLBANK_AB_BCONF_ALS(n) BIT(2 * (n)) #define CTRLBANK_AB_BCONF_MODE(n) BIT(2 * (n) + 1) @@ -36,6 +38,9 @@ struct lm3533_bl { u32 max_current; u32 pwm; =20 + int num_leds; + u32 led_strings[LM3533_HVCTRLBANK_COUNT]; + bool have_als; bool linear; }; @@ -232,13 +237,30 @@ static struct attribute_group lm3533_bl_attribute_gro= up =3D { static int lm3533_bl_setup(struct lm3533_bl *bl) { int ctrlbank =3D lm3533_bl_get_ctrlbank_id(bl); - int ret; + u32 output_cfg_val =3D 0; + u32 output_cfg_mask =3D 0; + int ret, i; =20 ret =3D regmap_assign_bits(bl->regmap, LM3533_REG_CTRLBANK_AB_BCONF, CTRLBANK_AB_BCONF_MODE(ctrlbank), bl->linear); 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 ctrlbank << bl->led_strings[i]; + output_cfg_mask |=3D BIT(bl->led_strings[i]); + } + + ret =3D regmap_update_bits(bl->regmap, LM3533_REG_OUTPUT_CONF1, + output_cfg_mask, output_cfg_val); + if (ret) + return ret; + } + ret =3D lm3533_ctrlbank_set_max_current(&bl->cb, bl->max_current); if (ret) return ret; @@ -316,6 +338,25 @@ static int lm3533_bl_probe(struct platform_device *pde= v) =20 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 (bl->num_leds > LM3533_HVCTRLBANK_COUNT) + return dev_err_probe(&pdev->dev, bl->num_leds, + "num of LED sources exceeds max %d\n", + LM3533_HVCTRLBANK_COUNT); + + /* + * 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) { + 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"); + } + ret =3D lm3533_bl_setup(bl); if (ret) return ret; --=20 2.53.0