On Mon, Dec 10, 2012 at 11:00:37AM +0100, Peter Ujfalusi wrote:
[...]
+LED sub-node properties:
+- pwms : PWM property, please refer to:
+ Documentation/devicetree/bindings/pwm/pwm.txt
Instead of only referring to the generic PWM binding document, this
should probably explain what the PWM device is used for.
+err:
+ if (priv->num_leds > 0) {
+ for (count = priv->num_leds - 1; count >= 0; count--) {
+ led_classdev_unregister(&priv->leds[count].cdev);
+ pwm_put(priv->leds[count].pwm);
+ }
+ }
Can this not be written more simply as follows?
while (priv->num_leds--) {
...
}
static int led_pwm_remove(struct platform_device *pdev)
{
+ struct led_pwm_platform_data *pdata = pdev->dev.platform_data;
struct led_pwm_priv *priv = platform_get_drvdata(pdev);
int i;
- for (i = 0; i < priv->num_leds; i++)
+ for (i = 0; i < priv->num_leds; i++) {
led_classdev_unregister(&priv->leds[i].cdev);
+ if (!pdata)
+ pwm_put(priv->leds[i].pwm);
+ }
Perhaps while at it we can add devm_of_pwm_get() along with exporting
of_pwm_get() so that you don't have to special-case this?
+static const struct of_device_id of_pwm_leds_match[] = {
+ { .compatible = "pwm-leds", },
+ {},
+};
Doesn't this cause a compiler warning for !OF builds?
Thierry