pwm: Add support referencing PWMs from ACPI
In analogy to referencing a GPIO using the "gpios" property from ACPI,
support referencing a PWM using the "pwms" property.
ACPI entries must look like
Package () {"pwms", Package ()
{ <PWM device reference>, <PWM index>, <PWM period> [, <PWM flags>]}}
In contrast to the DT implementation, only _one_ PWM entry in the "pwms"
property is supported. As a consequence "pwm-names"-property and
con_id lookup aren't supported.
Support for ACPI is added via the firmware-node framework which is an
abstraction layer on top of ACPI/DT. To keep this patch clean, DT and
ACPI paths are kept separate. The firmware-node framework could be used
to unify both paths in a future patch.
To support leds-pwm driver, an additional method devm_fwnode_pwm_get()
which supports both ACPI and DT configuration is exported.
Signed-off-by: Nikolaus Voss <nikolaus.voss@loewensteinmedical.de>
[thierry.reding@gmail.com: fix build failures for !ACPI]
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
This commit is contained in:
committed by
Thierry Reding
parent
4a5fa56cc0
commit
4a6ef8e37c
@@ -412,6 +412,9 @@ void pwm_put(struct pwm_device *pwm);
|
||||
struct pwm_device *devm_pwm_get(struct device *dev, const char *con_id);
|
||||
struct pwm_device *devm_of_pwm_get(struct device *dev, struct device_node *np,
|
||||
const char *con_id);
|
||||
struct pwm_device *devm_fwnode_pwm_get(struct device *dev,
|
||||
struct fwnode_handle *fwnode,
|
||||
const char *con_id);
|
||||
void devm_pwm_put(struct device *dev, struct pwm_device *pwm);
|
||||
#else
|
||||
static inline struct pwm_device *pwm_request(int pwm_id, const char *label)
|
||||
@@ -518,6 +521,13 @@ static inline struct pwm_device *devm_of_pwm_get(struct device *dev,
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct pwm_device *
|
||||
devm_fwnode_pwm_get(struct device *dev, struct fwnode_handle *fwnode,
|
||||
const char *con_id)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline void devm_pwm_put(struct device *dev, struct pwm_device *pwm)
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user