mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
- New Functionality
- Add new Device Tree binding for Monolithic Power (MPS) MP3309C step-up converter - Document brightness-levels in bindings for; generic, LED and PWM - Bug Fixes - Ensure PWMs are disabled on; .shutdown(), .suspend() and .remove() -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEdrbJNaO+IJqU8IdIUa+KL4f8d2EFAmVDsVMACgkQUa+KL4f8 d2GsxA//WWkGqltN3lcsG29nANUMsBE2QqCSp8sW/iH8frqkk2tnZ+UIEReNMhKt Q03DnB5HQ/gyydsg0XAvW9bkvh0salIpMdMXXLPeI+Rdl/D3bkuPiutyNQIbjPvC o7debl9rE+eVcJCZBieO/VfY9HFVP6lfBstjjR+Y2PpnxcCTDmXa1KJiiDsUHQ3b /u+PYYdLnwvX1AgbjrqJk4n1qs39a023zOhVfB0JDKO0XXJ8WAkFvEa9FfUQYLAB zZmERCIx1fsSTyfdAXxuRG4CX99abMK92wKWWQjDAv7gbkF6041uQ6CyqgLZMI/T ++xt3kDUhvm4UtOo4O6gkTOu3siTWLoI4D8tX0gYY3Ks9LykQ9r+wjfSikXpor+a Wdg83r/wAyp3vU7ti3Wz/+2b6NwZKCY5WtcN413gjl1tY48+JcaHnUxyjQOZOKkJ ZfmzAhJkbEdeyu0LT6MOGEnPY8ToWzPu2bKsviy8sl6hCxXIP/8PG2Mz3sVz+W6F cXwmtbFnALLI2cuYimWeHgseBf4qUVqFB5/spLm2UI0a3glM7G8zhRzAn5jEpVfS MmFPDzdlU3jKOwC69RrRye2aLtD3Aq101vYbNOTdbQgiab02ARojprDfc7CnDtnt +TOHN6tNzBf/w319mz9yS8KbdZ4So8zO/ifHcEpbgYdtR846jA4= =djoj -----END PGP SIGNATURE----- Merge tag 'backlight-next-6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight Pull backlight updates from Lee Jones: "New Functionality: - Add new Device Tree binding for Monolithic Power (MPS) MP3309C step-up converter - Document brightness-levels in bindings for; generic, LED and PWM Bug Fixes: - Ensure PWMs are disabled on .shutdown(), .suspend() and .remove()" * tag 'backlight-next-6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight: dt-bindings: backlight: Add brightness-levels related common properties backlight: pwm_bl: Disable PWM on shutdown, suspend and remove dt-bindings: backlight: Add MPS MP3309C
This commit is contained in:
commit
38984d7872
@ -33,4 +33,21 @@ properties:
|
||||
due to restrictions in a specific system, such as mounting conditions.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
brightness-levels:
|
||||
description:
|
||||
Array of distinct brightness levels. The levels must be in the range
|
||||
accepted by the underlying LED device. Typically these are in the range
|
||||
from 0 to 255, but any range starting at 0 will do, as long as they are
|
||||
accepted by the LED.
|
||||
The 0 value means a 0% of brightness (darkest/off), while the last value
|
||||
in the array represents a full 100% brightness (brightest).
|
||||
If this array is not provided, the driver default mapping is used.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
|
||||
default-brightness-level:
|
||||
description:
|
||||
The default brightness level (index into the array defined by the
|
||||
"brightness-levels" property).
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
additionalProperties: true
|
||||
|
@ -16,6 +16,9 @@ description:
|
||||
can also be used to describe a backlight device controlled by the output of
|
||||
a LED driver.
|
||||
|
||||
allOf:
|
||||
- $ref: common.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: led-backlight
|
||||
@ -26,25 +29,11 @@ properties:
|
||||
items:
|
||||
maxItems: 1
|
||||
|
||||
brightness-levels:
|
||||
description:
|
||||
Array of distinct brightness levels. The levels must be in the range
|
||||
accepted by the underlying LED devices. This is used to translate a
|
||||
backlight brightness level into a LED brightness level. If it is not
|
||||
provided, the identity mapping is used.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
|
||||
default-brightness-level:
|
||||
description:
|
||||
The default brightness level (index into the array defined by the
|
||||
"brightness-levels" property).
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- leds
|
||||
|
||||
additionalProperties: false
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
|
@ -0,0 +1,73 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/leds/backlight/mps,mp3309c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: MPS MP3309C backlight
|
||||
|
||||
maintainers:
|
||||
- Flavio Suligoi <f.suligoi@asem.it>
|
||||
|
||||
description: |
|
||||
The Monolithic Power (MPS) MP3309C is a WLED step-up converter, featuring a
|
||||
programmable switching frequency to optimize efficiency.
|
||||
It supports two different dimming modes:
|
||||
|
||||
- analog mode, via I2C commands (default)
|
||||
- PWM controlled mode.
|
||||
|
||||
The datasheet is available at:
|
||||
https://www.monolithicpower.com/en/mp3309c.html
|
||||
|
||||
allOf:
|
||||
- $ref: common.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: mps,mp3309c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
pwms:
|
||||
description: if present, the backlight is controlled in PWM mode.
|
||||
maxItems: 1
|
||||
|
||||
enable-gpios:
|
||||
description: GPIO used to enable the backlight in "analog-i2c" dimming mode.
|
||||
maxItems: 1
|
||||
|
||||
mps,overvoltage-protection-microvolt:
|
||||
description: Overvoltage protection (13.5V, 24V or 35.5V).
|
||||
enum: [ 13500000, 24000000, 35500000 ]
|
||||
default: 35500000
|
||||
|
||||
mps,no-sync-mode:
|
||||
description: disable synchronous rectification mode
|
||||
type: boolean
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- max-brightness
|
||||
- default-brightness
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* Backlight with PWM control */
|
||||
backlight_pwm: backlight@17 {
|
||||
compatible = "mps,mp3309c";
|
||||
reg = <0x17>;
|
||||
pwms = <&pwm1 0 3333333 0>; /* 300 Hz --> (1/f) * 1*10^9 */
|
||||
max-brightness = <100>;
|
||||
default-brightness = <80>;
|
||||
mps,overvoltage-protection-microvolt = <24000000>;
|
||||
};
|
||||
};
|
@ -11,6 +11,9 @@ maintainers:
|
||||
- Daniel Thompson <daniel.thompson@linaro.org>
|
||||
- Jingoo Han <jingoohan1@gmail.com>
|
||||
|
||||
allOf:
|
||||
- $ref: common.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: pwm-backlight
|
||||
@ -39,21 +42,6 @@ properties:
|
||||
Delay in ms between disabling the backlight using GPIO and setting PWM
|
||||
value to 0.
|
||||
|
||||
brightness-levels:
|
||||
description:
|
||||
Array of distinct brightness levels. Typically these are in the range
|
||||
from 0 to 255, but any range starting at 0 will do. The actual brightness
|
||||
level (PWM duty cycle) will be interpolated from these values. 0 means a
|
||||
0% duty cycle (darkest/off), while the last value in the array represents
|
||||
a 100% duty cycle (brightest).
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
|
||||
default-brightness-level:
|
||||
description:
|
||||
The default brightness level (index into the array defined by the
|
||||
"brightness-levels" property).
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
num-interpolated-steps:
|
||||
description:
|
||||
Number of interpolated steps between each value of brightness-levels
|
||||
@ -69,7 +57,7 @@ required:
|
||||
- compatible
|
||||
- pwms
|
||||
|
||||
additionalProperties: false
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
|
@ -626,9 +626,14 @@ static void pwm_backlight_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct backlight_device *bl = platform_get_drvdata(pdev);
|
||||
struct pwm_bl_data *pb = bl_get_data(bl);
|
||||
struct pwm_state state;
|
||||
|
||||
backlight_device_unregister(bl);
|
||||
pwm_backlight_power_off(pb);
|
||||
pwm_get_state(pb->pwm, &state);
|
||||
state.duty_cycle = 0;
|
||||
state.enabled = false;
|
||||
pwm_apply_state(pb->pwm, &state);
|
||||
|
||||
if (pb->exit)
|
||||
pb->exit(&pdev->dev);
|
||||
@ -638,8 +643,13 @@ static void pwm_backlight_shutdown(struct platform_device *pdev)
|
||||
{
|
||||
struct backlight_device *bl = platform_get_drvdata(pdev);
|
||||
struct pwm_bl_data *pb = bl_get_data(bl);
|
||||
struct pwm_state state;
|
||||
|
||||
pwm_backlight_power_off(pb);
|
||||
pwm_get_state(pb->pwm, &state);
|
||||
state.duty_cycle = 0;
|
||||
state.enabled = false;
|
||||
pwm_apply_state(pb->pwm, &state);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
@ -647,12 +657,24 @@ static int pwm_backlight_suspend(struct device *dev)
|
||||
{
|
||||
struct backlight_device *bl = dev_get_drvdata(dev);
|
||||
struct pwm_bl_data *pb = bl_get_data(bl);
|
||||
struct pwm_state state;
|
||||
|
||||
if (pb->notify)
|
||||
pb->notify(pb->dev, 0);
|
||||
|
||||
pwm_backlight_power_off(pb);
|
||||
|
||||
/*
|
||||
* Note that disabling the PWM doesn't guarantee that the output stays
|
||||
* at its inactive state. However without the PWM disabled, the PWM
|
||||
* driver refuses to suspend. So disable here even though this might
|
||||
* enable the backlight on poorly designed boards.
|
||||
*/
|
||||
pwm_get_state(pb->pwm, &state);
|
||||
state.duty_cycle = 0;
|
||||
state.enabled = false;
|
||||
pwm_apply_state(pb->pwm, &state);
|
||||
|
||||
if (pb->notify_after)
|
||||
pb->notify_after(pb->dev, 0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user