Age | Commit message (Collapse) | Author | Files | Lines |
|
Since commit 141f15c66d94 ("leds: pwm: remove header") that platform
interface is not usable from outside and there seems to be no in tree
user anymore. All in-tree users of the leds-pwm driver seem to use DT
currently. Getting rid of the old platform interface allows the
leds-pwm driver to switch over from 'devm_led_classdev_register()' to
'devm_led_classdev_register_ext()'.
Signed-off-by: Alexander Dahl <[email protected]>
Cc: Denis Osterland-Heim <[email protected]>
Reviewed-by: Marek Behún <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
If both LED banks aren't used in device tree, an out-of-bounds
condition in lm3697_init occurs because of the for loop assuming that
all the banks are used. Fix it by adding a variable that contains the
number of used banks.
Signed-off-by: Gabriel David <[email protected]>
[removed extra rename, minor tweaks]
Signed-off-by: Pavel Machek <[email protected]>
Cc: [email protected]
|
|
Do not match OF match pointer with of_match_ptr, so that even if
CONFIG_OF is disabled, the driver can still be bound via another method.
Move definition of of_ns2_leds_match just before ns2_led_driver
definition, since it is not needed sooner.
Signed-off-by: Marek Behún <[email protected]>
Tested-by: Simon Guinot <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Convert from OF api to fwnode API, so that it is possible to bind this
driver without device-tree.
The fwnode API does not expose a function to read a specific element of
an array. We therefore change the types of the ns2_led_modval structure
so that we can read the whole modval array with one fwnode call.
Signed-off-by: Marek Behún <[email protected]>
Tested-by: Simon Guinot <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
In one of the error paths of the for_each_child_of_node loop in
tlc591xx_probe, add missing call to of_node_put.
Fixes: 1ab4531ad132 ("leds: tlc591xx: simplify driver by using the managed led API")
Signed-off-by: Tobias Jordan <[email protected]>
Reviewed-by: Marek Behún <[email protected]>
Reviewed-by: Tomi Valkeinen <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
By using struct led_init_data when registering we do not need to parse
`label` DT property. Moreover `label` is deprecated and if it is not
present but `color` and `function` are, LED core will compose a name
from these properties instead.
Previously if the `label` DT property was not present, the code composed
name for the LED in the form
"pca963x:%d:%.2x:%u"
For backwards compatibility we therefore set init_data->default_label
to this value so that the LED will not get a different name if `label`
property is not present, nor are `color` and `function`.
Signed-off-by: Marek Behún <[email protected]>
Cc: Peter Meerwald <[email protected]>
Cc: Ricardo Ribalda <[email protected]>
Cc: Zahari Petkov <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Register LEDs immediately after parsing their properties.
This allows us to get rid of platdata, and since no one in tree uses
header linux/platform_data/leds-pca963x.h, remove it.
Signed-off-by: Marek Behún <[email protected]>
Cc: Peter Meerwald <[email protected]>
Cc: Ricardo Ribalda <[email protected]>
Cc: Zahari Petkov <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Remove the binding comment at the beginning. The information for
platdata is now obsolete and DT binding is documented in device-tree
bindings.
Signed-off-by: Marek Behún <[email protected]>
Cc: NeilBrown <[email protected]>
Cc: Linus Walleij <[email protected]>
Cc: H. Nikolaus Schaller <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Use helper variable dev instead of always writing &client->dev.
Signed-off-by: Marek Behún <[email protected]>
Cc: NeilBrown <[email protected]>
Cc: Linus Walleij <[email protected]>
Cc: H. Nikolaus Schaller <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Do not set GPIO names. Let gpiolib determine GPIO names from the DT
property `gpio-line-names`.
Signed-off-by: Marek Behún <[email protected]>
Cc: NeilBrown <[email protected]>
Cc: Linus Walleij <[email protected]>
Cc: H. Nikolaus Schaller <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Some machines have thousands of CPUs... and trigger mechanisms was not
really meant for thousands of triggers. I doubt anyone uses this
trigger on many-CPU machine; but if they do, they'll need to do it
properly.
Signed-off-by: Pavel Machek <[email protected]>
|
|
Help welcome :-).
Signed-off-by: Pavel Machek <[email protected]>
|
|
While the two pca9532 pwms can be configured in the platform data
struct, there was no corresponding dt binding. Users need to configure
the pwm if some leds should blink or continue blinking during boot.
Signed-off-by: Markus Moll <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Each led setting occupies two bits in a corresponding led register.
Accessing these bits requires shifting and masking, which was
implemented incorrectly in pca9532_getled. Two new helper macros
concentrate the computation of those masks in one place.
Signed-off-by: Markus Moll <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Fix warnings for undefined parameters when building with W=1.
Signed-off-by: Dan Murphy <[email protected]>
Reviewed-by: Marek Behún <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Fix warnings for undefined parameters when W=1 is used.
Signed-off-by: Dan Murphy <[email protected]>
Reviewed-by: Marek Behún <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Instead of doing two allocations, allocate only once, by utilizing
flexible array members.
Signed-off-by: Marek Behún <[email protected]>
Cc: Peter Meerwald <[email protected]>
Cc: Ricardo Ribalda <[email protected]>
Cc: Zahari Petkov <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Rename variable of type struct pca963x_led from pca963x to simple led.
Signed-off-by: Marek Behún <[email protected]>
Cc: Peter Meerwald <[email protected]>
Cc: Ricardo Ribalda <[email protected]>
Cc: Zahari Petkov <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Rename variables chip and pca963x_chip to chipdef and chip,
respectively, so that their names correspond to the names of their
types.
Signed-off-by: Marek Behún <[email protected]>
Cc: Peter Meerwald <[email protected]>
Cc: Ricardo Ribalda <[email protected]>
Cc: Zahari Petkov <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
By using devres version of LED registering function we can remove the
.remove method from this driver. The probe method also gets simpler.
Signed-off-by: Marek Behún <[email protected]>
Cc: Peter Meerwald <[email protected]>
Cc: Ricardo Ribalda <[email protected]>
Cc: Zahari Petkov <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Use helper variables: instead of writing &client->dev at many places,
write only dev. The same with pca963x->chip->chipdef,
pca963x->chip->client).
Use helper variable u8 val for i2c_smbus_write_byte_data, for better
indentation.
Indent better on various places.
Signed-off-by: Marek Behún <[email protected]>
Cc: Peter Meerwald <[email protected]>
Cc: Ricardo Ribalda <[email protected]>
Cc: Zahari Petkov <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Fix potential ERR_PTR(0).
Signed-off-by: Marek Behún <[email protected]>
Fixes: d78b10f5713d9 ("leds: tca6507: use fwnode API instead of OF")
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Robot complains about:
All warnings (new ones prefixed by >>):
>> drivers/leds/leds-tca6507.c:750:34: warning: unused variable
'of_tca6507_leds_match' [-Wunused-const-variable]
static const struct of_device_id of_tca6507_leds_match[] = {
Fix it.
Reported-by: kernel test robot <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Convert to use fwnode API instead of OF. It is more generic and if
someone wants to use this driver without device-tree yet still, they
will be able to via swnode fwnodes.
Remove the gpio setup function from platdata.
Signed-off-by: Marek Behún <[email protected]>
Cc: NeilBrown <[email protected]>
Cc: Linus Walleij <[email protected]>
Tested-by: H. Nikolaus Schaller <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
The only in-tree usage of this driver is via device-tree. No on else
includes linux/leds-tca6507.h, so absorb the definition of platdata
structure.
Signed-off-by: Marek Behún <[email protected]>
Cc: NeilBrown <[email protected]>
Reviewed-by: Linus Walleij <[email protected]>
Tested-by: H. Nikolaus Schaller <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Do the parsing of `linux,default-trigger` DT property to LED core.
Currently it is done in many different drivers and the code is repeated.
This patch removes the parsing from 23 drivers:
an30259a, aw2013, bcm6328, bcm6358, cr0014114, el15203000, gpio,
is31fl32xx, lm3532, lm36274, lm3692x, lm3697, lp50xx, lp8860, lt3593,
max77650, mt6323, ns2, pm8058, pwm, syscon, tlc591xx and turris-omnia.
There is one driver in drivers/input which parses this property on it's
own. I shall send a separate patch there after this is applied.
There are still 8 drivers that parse this property on their own because
they do not pass the led_init_data structure to the registering
function. I will try to refactor those in the future.
Signed-off-by: Marek Behún <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
By using struct led_init_data when registering we do not need to parse
`label` DT property. Moreover `label` is deprecated and if it is not
present but `color` and `function` are, LED core will compose a name
from these properties instead.
Signed-off-by: Marek Behún <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
This driver uses extended LED registration, so we do not need to parse
the `label` DT property on our own.
Signed-off-by: Marek Behún <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Now that the potential use-after-free issue is resolved we can use
devres for LED registration in this driver.
By using devres version of LED registering function we can remove the
.remove method from this driver.
Signed-off-by: Marek Behún <[email protected]>
Tested-by: Dan Murphy <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Instead of registering LED under the MFD device, this driver sets the
parent of the LED it is registering to the parent of the MFD device (the
I2C client device).
Because of this we cannot use devres for LED registration, since it can
result in use-after-free, see commit
a0972fff0947 ("leds: lm36274: fix use-after-free on unbind").
The only other in-tree driver that also registers under the MFD device
(drivers/regulator/lm363x-regulator.c) sets the parent to the MFD
device.
Set the parent of this LED to the MFD device, instead of the I2C client
device.
Signed-off-by: Marek Behún <[email protected]>
Tested-by: Dan Murphy <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
These settings are not parsed from DT and therefore semantically should
not be set in function with a name lm36274_parse_dt.
Signed-off-by: Marek Behún <[email protected]>
Tested-by: Dan Murphy <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
By using struct led_init_data when registering we do not need to parse
`label` DT property. Moreover `label` is deprecated and if it is not
present but `color` and `function` are, LED core will compose a name
from these properties instead.
Previously if the `label` DT property was not present, the code composed
name for the LED in the form
"parent_name::"
For backwards compatibility we therefore set
init_data->default_label = ":";
so that the LED will not get a different name if `label` property is not
present, nor are `color` and `function`.
Signed-off-by: Marek Behún <[email protected]>
Tested-by: Dan Murphy <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Do not use device_for_each_child_node. Since this driver works only with
once child node present, use device_get_next_child_node instead.
This also saves one level of indentation.
Signed-off-by: Marek Behún <[email protected]>
Reviewed-by: Dan Murphy <[email protected]>
Tested-by: Dan Murphy <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Rename this variable so that it is easier to read and easier to write in
80 columns. Also rename variable of this type in lm36274_brightness_set
from led to chip, to be consistent.
Signed-off-by: Marek Behún <[email protected]>
Tested-by: Dan Murphy <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Acer Iconia Tab A500 is an Android tablet device which has two LEDs
embedded into the Power Button. Orange LED indicates "battery charging"
status and white LED indicates "wake-up/charge-done" status. The new LED
driver provides control over both LEDs to userspace.
Signed-off-by: Dmitry Osipenko <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Simplify the return expression.
Signed-off-by: Liu Shixin <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
By using struct led_init_data when registering we do not need to parse
`label` DT property. Moreover `label` is deprecated and if it is not
present but `color` and `function` are, LED core will compose a name
from these properties instead.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
No need to use variable found, we can determine whether the mode was
found by comparing iterator variable to its limit.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Register each LED immediately after parsing OF properties. This
simplifies the driver.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Use helper variable dev instead of always writing &pdev->dev.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Return directly instead of setting result and breaking.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Rename variable led_dat to led in various functions.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Rename structures:
ns2_led -> ns2_led_of_one
ns2_led_data -> ns2_led.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
This drivers leaks GPIO descriptors on driver removal. Use devres API
function devm_gpiod_get_from_of_node instead of gpiod_get_from_of_node
to avoid this.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Not-for-stable
Signed-off-by: Pavel Machek <[email protected]>
|
|
Move parsing of DT properties of one LED into separate function. This
saves indentation level and is nicer to read.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Move forward from platform data to device tree only.
Since commit c7896490dd1a ("leds: ns2: Absorb platform data") the
platform data structure is absorbed into the driver, because nothing
else in the source tree uses it. Since nobody complained and all usage
of this driver is via device tree, change the code to work with device
tree only. As Linus Walleij wrote, the device tree should be the
preferred way forward anyway.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
Since .remove method is not needed now that we use devres, there is no
need to remember the number of LEDs in struct ns2_led_priv. Alloc simple
array of ns2_led_data structs.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
By using devres version of LED registering function we can remove the
.remove method from this driver. The probe method also gets simpler.
Signed-off-by: Marek Behún <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Simon Guinot <[email protected]>
Cc: Vincent Donnefort <[email protected]>
Cc: Thomas Petazzoni <[email protected]>
Cc: Linus Walleij <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
By using struct led_init_data when registering we do not need to parse
`label` DT property. Moreover `label` is deprecated and if it is not
present but `color` and `function` are, LED core will compose a name
from these properties instead.
Signed-off-by: Marek Behún <[email protected]>
Cc: H. Nikolaus Schaller <[email protected]>
Cc: David Rivshin <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|
|
We can return the last ret value.
Signed-off-by: Marek Behún <[email protected]>
Cc: Linus Walleij <[email protected]>
Cc: Bjorn Andersson <[email protected]>
Signed-off-by: Pavel Machek <[email protected]>
|