* [PATCH 0/2] media: pwm-ir-tx: regulator support
@ 2026-11-02 15:22 ` Roman Vivchar
0 siblings, 0 replies; 8+ messages in thread
From: Roman Vivchar via B4 Relay @ 2026-11-02 15:22 UTC (permalink / raw)
To: Sean Young, Lee Jones, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Mauro Carvalho Chehab,
Liam Girdwood, Mark Brown
Cc: linux-media, linux-leds, devicetree, linux-kernel, Roman Vivchar
This patch series adds optional power-supply property for PWM IR LED,
because some boards, like Xiaomi Redmi Note 9 phone, have the LED
connected to the eMMC power rail. If the eMMC is powered down, IR LED
can't function.
Patch 1 adds dt-bindings documentation for the power-supply property.
Patch 2 adds regulator management to the driver.
Signed-off-by: Roman Vivchar <rva333@protonmail.com>
---
Roman Vivchar (2):
dt-bindings: leds: irled: pwm-ir-tx: add power supply support
media: pwm-ir-tx: add regulator support
.../devicetree/bindings/leds/irled/pwm-ir-tx.yaml | 4 +++
drivers/media/rc/pwm-ir-tx.c | 37 +++++++++++++++++++++-
2 files changed, 40 insertions(+), 1 deletion(-)
---
base-commit: 5e6de6a2b522f659defacb1551d0465ba6ce13cf
change-id: 20261102-6768-irled-9e368faa84a7
Best regards,
--
Roman Vivchar <rva333@protonmail.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 0/2] media: pwm-ir-tx: regulator support
@ 2026-11-02 15:22 ` Roman Vivchar
0 siblings, 0 replies; 8+ messages in thread
From: Roman Vivchar @ 2026-11-02 15:22 UTC (permalink / raw)
To: Sean Young, Lee Jones, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Mauro Carvalho Chehab,
Liam Girdwood, Mark Brown
Cc: linux-media, linux-leds, devicetree, linux-kernel, Roman Vivchar
This patch series adds optional power-supply property for PWM IR LED,
because some boards, like Xiaomi Redmi Note 9 phone, have the LED
connected to the eMMC power rail. If the eMMC is powered down, IR LED
can't function.
Patch 1 adds dt-bindings documentation for the power-supply property.
Patch 2 adds regulator management to the driver.
Signed-off-by: Roman Vivchar <rva333@protonmail.com>
---
Roman Vivchar (2):
dt-bindings: leds: irled: pwm-ir-tx: add power supply support
media: pwm-ir-tx: add regulator support
.../devicetree/bindings/leds/irled/pwm-ir-tx.yaml | 4 +++
drivers/media/rc/pwm-ir-tx.c | 37 +++++++++++++++++++++-
2 files changed, 40 insertions(+), 1 deletion(-)
---
base-commit: 5e6de6a2b522f659defacb1551d0465ba6ce13cf
change-id: 20261102-6768-irled-9e368faa84a7
Best regards,
--
Roman Vivchar <rva333@protonmail.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] dt-bindings: leds: irled: pwm-ir-tx: add power supply support
2026-11-02 15:22 ` Roman Vivchar
@ 2026-11-02 15:22 ` Roman Vivchar
-1 siblings, 0 replies; 8+ messages in thread
From: Roman Vivchar via B4 Relay @ 2026-11-02 15:22 UTC (permalink / raw)
To: Sean Young, Lee Jones, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Mauro Carvalho Chehab,
Liam Girdwood, Mark Brown
Cc: linux-media, linux-leds, devicetree, linux-kernel, Roman Vivchar
From: Roman Vivchar <rva333@protonmail.com>
On some boards, the IR LED is connected to a switchable power rail, such
as an eMMC supply. If this regulator is disabled, IR transmission fails.
Add an optional power-supply property to document this regulator.
Signed-off-by: Roman Vivchar <rva333@protonmail.com>
---
Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml b/Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml
index 7526e3149f72..35a601cc068b 100644
--- a/Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml
+++ b/Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml
@@ -23,6 +23,10 @@ properties:
pwms:
maxItems: 1
+ power-supply:
+ description:
+ The regulator controlling the current to the LED.
+
required:
- compatible
- pwms
--
2.56.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 1/2] dt-bindings: leds: irled: pwm-ir-tx: add power supply support
@ 2026-11-02 15:22 ` Roman Vivchar
0 siblings, 0 replies; 8+ messages in thread
From: Roman Vivchar @ 2026-11-02 15:22 UTC (permalink / raw)
To: Sean Young, Lee Jones, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Mauro Carvalho Chehab,
Liam Girdwood, Mark Brown
Cc: linux-media, linux-leds, devicetree, linux-kernel, Roman Vivchar
On some boards, the IR LED is connected to a switchable power rail, such
as an eMMC supply. If this regulator is disabled, IR transmission fails.
Add an optional power-supply property to document this regulator.
Signed-off-by: Roman Vivchar <rva333@protonmail.com>
---
Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml b/Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml
index 7526e3149f72..35a601cc068b 100644
--- a/Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml
+++ b/Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml
@@ -23,6 +23,10 @@ properties:
pwms:
maxItems: 1
+ power-supply:
+ description:
+ The regulator controlling the current to the LED.
+
required:
- compatible
- pwms
--
2.56.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] media: pwm-ir-tx: add regulator support
2026-11-02 15:22 ` Roman Vivchar
@ 2026-11-02 15:22 ` Roman Vivchar
-1 siblings, 0 replies; 8+ messages in thread
From: Roman Vivchar via B4 Relay @ 2026-11-02 15:22 UTC (permalink / raw)
To: Sean Young, Lee Jones, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Mauro Carvalho Chehab,
Liam Girdwood, Mark Brown
Cc: linux-media, linux-leds, devicetree, linux-kernel, Roman Vivchar
From: Roman Vivchar <rva333@protonmail.com>
On some boards, the IR LED shares a power rail with other components.
If that rail is turned off, IR transmission can't function properly.
Add optional regulator support to ensure the power supply is enabled when
needed.
Signed-off-by: Roman Vivchar <rva333@protonmail.com>
---
drivers/media/rc/pwm-ir-tx.c | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/drivers/media/rc/pwm-ir-tx.c b/drivers/media/rc/pwm-ir-tx.c
index 047472dc9244..f9c95d034493 100644
--- a/drivers/media/rc/pwm-ir-tx.c
+++ b/drivers/media/rc/pwm-ir-tx.c
@@ -10,6 +10,7 @@
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/platform_device.h>
+#include <linux/regulator/consumer.h>
#include <linux/hrtimer.h>
#include <linux/completion.h>
#include <media/rc-core.h>
@@ -19,6 +20,7 @@
struct pwm_ir {
struct pwm_device *pwm;
+ struct regulator *reg;
struct hrtimer timer;
struct completion tx_done;
struct pwm_state *state;
@@ -63,10 +65,16 @@ static int pwm_ir_tx_sleep(struct rc_dev *dev, unsigned int *txbuf,
struct pwm_ir *pwm_ir = dev->priv;
struct pwm_device *pwm = pwm_ir->pwm;
struct pwm_state state;
- int i;
+ int i, ret;
ktime_t edge;
long delta;
+ if (pwm_ir->reg) {
+ ret = regulator_enable(pwm_ir->reg);
+ if (ret)
+ return ret;
+ }
+
pwm_init_state(pwm, &state);
state.period = DIV_ROUND_CLOSEST(NSEC_PER_SEC, pwm_ir->carrier);
@@ -87,6 +95,12 @@ static int pwm_ir_tx_sleep(struct rc_dev *dev, unsigned int *txbuf,
state.enabled = false;
pwm_apply_might_sleep(pwm, &state);
+ if (pwm_ir->reg) {
+ ret = regulator_disable(pwm_ir->reg);
+ if (ret)
+ return ret;
+ }
+
return count;
}
@@ -96,6 +110,7 @@ static int pwm_ir_tx_atomic(struct rc_dev *dev, unsigned int *txbuf,
struct pwm_ir *pwm_ir = dev->priv;
struct pwm_device *pwm = pwm_ir->pwm;
struct pwm_state state;
+ int ret;
pwm_init_state(pwm, &state);
@@ -107,10 +122,22 @@ static int pwm_ir_tx_atomic(struct rc_dev *dev, unsigned int *txbuf,
pwm_ir->txbuf_index = 0;
pwm_ir->state = &state;
+ if (pwm_ir->reg) {
+ ret = regulator_enable(pwm_ir->reg);
+ if (ret)
+ return ret;
+ }
+
hrtimer_start(&pwm_ir->timer, 0, HRTIMER_MODE_REL);
wait_for_completion(&pwm_ir->tx_done);
+ if (pwm_ir->reg) {
+ ret = regulator_disable(pwm_ir->reg);
+ if (ret)
+ return ret;
+ }
+
return count;
}
@@ -157,6 +184,14 @@ static int pwm_ir_probe(struct platform_device *pdev)
if (IS_ERR(pwm_ir->pwm))
return PTR_ERR(pwm_ir->pwm);
+ pwm_ir->reg = devm_regulator_get_optional(&pdev->dev, "power");
+ if (IS_ERR(pwm_ir->reg)) {
+ if (PTR_ERR(pwm_ir->reg) != -ENODEV)
+ return PTR_ERR(pwm_ir->reg);
+
+ pwm_ir->reg = NULL;
+ }
+
pwm_ir->carrier = 38000;
pwm_ir->duty_cycle = 50;
--
2.56.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] media: pwm-ir-tx: add regulator support
@ 2026-11-02 15:22 ` Roman Vivchar
0 siblings, 0 replies; 8+ messages in thread
From: Roman Vivchar @ 2026-11-02 15:22 UTC (permalink / raw)
To: Sean Young, Lee Jones, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Mauro Carvalho Chehab,
Liam Girdwood, Mark Brown
Cc: linux-media, linux-leds, devicetree, linux-kernel, Roman Vivchar
On some boards, the IR LED shares a power rail with other components.
If that rail is turned off, IR transmission can't function properly.
Add optional regulator support to ensure the power supply is enabled when
needed.
Signed-off-by: Roman Vivchar <rva333@protonmail.com>
---
drivers/media/rc/pwm-ir-tx.c | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/drivers/media/rc/pwm-ir-tx.c b/drivers/media/rc/pwm-ir-tx.c
index 047472dc9244..f9c95d034493 100644
--- a/drivers/media/rc/pwm-ir-tx.c
+++ b/drivers/media/rc/pwm-ir-tx.c
@@ -10,6 +10,7 @@
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/platform_device.h>
+#include <linux/regulator/consumer.h>
#include <linux/hrtimer.h>
#include <linux/completion.h>
#include <media/rc-core.h>
@@ -19,6 +20,7 @@
struct pwm_ir {
struct pwm_device *pwm;
+ struct regulator *reg;
struct hrtimer timer;
struct completion tx_done;
struct pwm_state *state;
@@ -63,10 +65,16 @@ static int pwm_ir_tx_sleep(struct rc_dev *dev, unsigned int *txbuf,
struct pwm_ir *pwm_ir = dev->priv;
struct pwm_device *pwm = pwm_ir->pwm;
struct pwm_state state;
- int i;
+ int i, ret;
ktime_t edge;
long delta;
+ if (pwm_ir->reg) {
+ ret = regulator_enable(pwm_ir->reg);
+ if (ret)
+ return ret;
+ }
+
pwm_init_state(pwm, &state);
state.period = DIV_ROUND_CLOSEST(NSEC_PER_SEC, pwm_ir->carrier);
@@ -87,6 +95,12 @@ static int pwm_ir_tx_sleep(struct rc_dev *dev, unsigned int *txbuf,
state.enabled = false;
pwm_apply_might_sleep(pwm, &state);
+ if (pwm_ir->reg) {
+ ret = regulator_disable(pwm_ir->reg);
+ if (ret)
+ return ret;
+ }
+
return count;
}
@@ -96,6 +110,7 @@ static int pwm_ir_tx_atomic(struct rc_dev *dev, unsigned int *txbuf,
struct pwm_ir *pwm_ir = dev->priv;
struct pwm_device *pwm = pwm_ir->pwm;
struct pwm_state state;
+ int ret;
pwm_init_state(pwm, &state);
@@ -107,10 +122,22 @@ static int pwm_ir_tx_atomic(struct rc_dev *dev, unsigned int *txbuf,
pwm_ir->txbuf_index = 0;
pwm_ir->state = &state;
+ if (pwm_ir->reg) {
+ ret = regulator_enable(pwm_ir->reg);
+ if (ret)
+ return ret;
+ }
+
hrtimer_start(&pwm_ir->timer, 0, HRTIMER_MODE_REL);
wait_for_completion(&pwm_ir->tx_done);
+ if (pwm_ir->reg) {
+ ret = regulator_disable(pwm_ir->reg);
+ if (ret)
+ return ret;
+ }
+
return count;
}
@@ -157,6 +184,14 @@ static int pwm_ir_probe(struct platform_device *pdev)
if (IS_ERR(pwm_ir->pwm))
return PTR_ERR(pwm_ir->pwm);
+ pwm_ir->reg = devm_regulator_get_optional(&pdev->dev, "power");
+ if (IS_ERR(pwm_ir->reg)) {
+ if (PTR_ERR(pwm_ir->reg) != -ENODEV)
+ return PTR_ERR(pwm_ir->reg);
+
+ pwm_ir->reg = NULL;
+ }
+
pwm_ir->carrier = 38000;
pwm_ir->duty_cycle = 50;
--
2.56.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] dt-bindings: leds: irled: pwm-ir-tx: add power supply support
2026-11-02 15:22 ` Roman Vivchar
(?)
@ 2026-11-02 15:26 ` sashiko-bot
-1 siblings, 0 replies; 8+ messages in thread
From: sashiko-bot @ 2026-11-02 15:26 UTC (permalink / raw)
To: Roman Vivchar; +Cc: linux-leds, lee
> From: Roman Vivchar <rva333@protonmail.com>
>
> On some boards, the IR LED is connected to a switchable power rail, such
> as an eMMC supply. If this regulator is disabled, IR transmission fails.
>
> Add an optional power-supply property to document this regulator.
>
> Signed-off-by: Roman Vivchar <rva333@protonmail.com>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261102-6768-irled-v1-0-c7064f3afed1@protonmail.com?part=1
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] media: pwm-ir-tx: add regulator support
2026-11-02 15:22 ` Roman Vivchar
(?)
@ 2026-11-02 15:29 ` sashiko-bot
-1 siblings, 0 replies; 8+ messages in thread
From: sashiko-bot @ 2026-11-02 15:29 UTC (permalink / raw)
To: Roman Vivchar; +Cc: linux-leds, lee
> From: Roman Vivchar <rva333@protonmail.com>
>
> On some boards, the IR LED shares a power rail with other components.
> If that rail is turned off, IR transmission can't function properly.
>
> Add optional regulator support to ensure the power supply is enabled when
> needed.
>
> Signed-off-by: Roman Vivchar <rva333@protonmail.com>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261102-6768-irled-v1-0-c7064f3afed1@protonmail.com?part=2
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-11-02 15:29 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-02 15:22 [PATCH 0/2] media: pwm-ir-tx: regulator support Roman Vivchar via B4 Relay
2026-11-02 15:22 ` Roman Vivchar
2026-11-02 15:22 ` [PATCH 1/2] dt-bindings: leds: irled: pwm-ir-tx: add power supply support Roman Vivchar via B4 Relay
2026-11-02 15:22 ` Roman Vivchar
2026-11-02 15:26 ` sashiko-bot
2026-11-02 15:22 ` [PATCH 2/2] media: pwm-ir-tx: add regulator support Roman Vivchar via B4 Relay
2026-11-02 15:22 ` Roman Vivchar
2026-11-02 15:29 ` sashiko-bot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.