Use of the pwm-names DT property
Hi Thierry,
Looking at your PWM/DT integration patches for linux-next, I was wondering what is the rationale behind using the pwm-names property. If I got it correctly, its purpose is to be able to reference different PWMs by name, e.g. by having
pwms = <&pwm 0 5000000>, <&pwm 1 5000000>; pwm-names = "backlight", "flash";
You could get the first PWM in the driver code by calling pwm_get(dev, "backlight") and the second through pwm_get(dev, "flash").
While I am ok with this way of doing, why not having the form that is already used by the regulator and gpio frameworks, in which the consumer is part of the property name?
vdd-supply = <&vdd_reg>; core-supply = <&core_reg>;
Both regulators are then accessed using regulator_get(dev, "vdd") and regulator_get(dev, "core").
Wouldn't it make more sense to follow the same scheme that has been popularized by other frameworks? It also has the advantage that you do not need to maintain two different properties which must be the same size.
Thanks,
Alex.
Quoted 7 lines · Alex Courbot
Hi Thierry,
Looking at your PWM/DT integration patches for linux-next, I was wondering what is the rationale behind using the pwm-names property. If I got it correctly, its purpose is to be able to reference different PWMs by name, e.g. by having
Quoted 6 lines
pwms = <&pwm 0 5000000>, <&pwm 1 5000000>; pwm-names = "backlight", "flash";You could get the first PWM in the driver code by calling
pwm_get(dev, "backlight")and the second throughpwm_get(dev, "flash").
Yes, that's the way it is supposed to work.
Quoted 7 lines
While I am ok with this way of doing, why not having the form that is already used by the regulator and gpio frameworks, in which the consumer is part of the property name?
vdd-supply = <&vdd_reg>; core-supply = <&core_reg>;
Quoted 7 lines
Both regulators are then accessed using
regulator_get(dev, "vdd")andregulator_get(dev, "core").Wouldn't it make more sense to follow the same scheme that has been popularized by other frameworks? It also has the advantage that you do not need to maintain two different properties which must be the same size.
In fact the *-names properties are rather common. They are used for the reg and interrupts properties. The pinctrl subsystem and the upcoming clock bindings also use the *-names properties. So one could just as well argue that the regulator and gpio bindings should have been using regulator-names and gpio-names respectively instead.
Thierry
Quoted 5 lines · Thierry Reding
In fact the *-names properties are rather common. They are used for the reg and interrupts properties. The pinctrl subsystem and the upcoming clock bindings also use the *-names properties. So one could just as well argue that the regulator and gpio bindings should have been using regulator-names and gpio-names respectively instead.
I was not aware of that, thanks for the explanation. Too bad the DT is already split in two different ways for naming things.
Alex.